Загрузите файл шаблона, используя динамическое действие в magento2 - PullRequest
0 голосов
/ 24 сентября 2019

Я создал одно расширение, чтобы показать бестселлера, используя подкатегорию. Я должен передать данные в URL, используя название категории, например 1) бестселлер / xyz и бестселлер / xyz / abc /.Для этого у меня есть файл маршрута. Итак, у меня правильно получено динамическое действие.

Файл блока:

публичная функция getBestsellerProduct ($ category_url) {

    $limit = $this->getProductLimit();
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); // Instance of object manager
    $resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
    $connection = $resource->getConnection();
    $sql = "SELECT sb.* FROM `sales_bestsellers_aggregated_yearly` sb where  sb.product_id is not null AND (sb.store_id IN(0)) AND (sb.store_id IN(0)) GROUP  by sb.product_id ORDER BY sb.qty_ordered DESC LIMIT 10";
    $resourceCollection =$connection->fetchAll($sql);

    if (!empty($category_url)) {
        $objectManager   = \Magento\Framework\App\ObjectManager::getInstance();
        $categoryFactory = $objectManager->create('Magento\Catalog\Model\CategoryFactory');
        $category        = $categoryFactory->create()->loadByAttribute('url_key',$category_url);

        $category_id[] = $category->getId();
        $subcategories = $category->getChildrenCategories();
        if(isset($subcategories) && !empty($subcategories)) {
            foreach ($subcategories as $subcategorie) {
                $category_id[] = $subcategorie->getId();
                $subcategorie1=$subcategorie->getChildrenCategories();
                foreach ($subcategorie1 as $subcat)
                {
                    $category_id[] = $subcat->getId();
                }
            }
        }









        $category_id = implode(',',$category_id);

        //echo $category_id;


        $sql = "SELECT sb.* FROM `sales_bestsellers_aggregated_yearly` sb join catalog_category_product ccp on sb.product_id=ccp.product_id where ccp.category_id in($category_id) and sb.product_id is not null AND (sb.store_id IN(0)) AND (sb.store_id IN(0)) GROUP  by sb.product_id ORDER BY sb.qty_ordered DESC LIMIT 1000";
        $resourceCollection =$connection->fetchAll($sql);







    }

    //$resourceCollection->setPageSize($limit);






    return $resourceCollection;
}

In controller I have call this block using following way

$block = $resultPage->getLayout()
                ->createBlock('Weismann\Bestsellerwidget\Block\Bestsellerdproduct')
                ->getBestsellerProduct($category_slug);

  $block1 = $resultPage->getLayout()->createBlock('Test\Bestseller\Block\Bestsellerdproduct',"Test_Bestseller1",
        [
        'data' => [
            'my_arg' => $block
        ]
    ]
    )->setData('area', 'frontend')
        ->setTemplate('Test_Bestseller::bestsellerproduct.phtml')->toHtml();
 $this->getResponse()->setHeader('Content-Type', 'text/html', true)->setBody($block1);

Теперь ядолжен показать мой файл phtml правильно, потому что он не показывает верхний и нижний колонтитулы.

...