Шаблон недействителен для рекомендуемых продуктов

Я пытаюсь создать список рекомендуемых продуктов в Magento. Я написал следующий код в файле app/code/MyModule/MySite/Block/Products/Featured.php:

<?php

namespace MyModule\MySite\Block\Products;

class Featured extends \Magento\Catalog\Block\Product\ListProduct
{
    /**
     * Catalog product visibility
     *
     * @var \Magento\Catalog\Model\Product\Visibility
     */
    protected $_catalogProductVisibility;

    /**
     * Product collection factory
     *
     * @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
     */
    protected $_productCollectionFactory;


    /**
     * @var CategoryRepositoryInterface
     */
    protected $categoryRepository;

    public function __construct(
        \Magento\Catalog\Block\Product\Context $context,
        \Magento\Framework\Data\Helper\PostHelper $postDataHelper,
        \Magento\Catalog\Model\Layer\Resolver $layerResolver,
        \Magento\Catalog\Api\CategoryRepositoryInterface $categoryRepository,
        \Magento\Framework\Url\Helper\Data $urlHelper,
        \Magento\Catalog\Model\Product\Visibility $catalogProductVisibility,
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        array $data = []

    ) {
        $this->_productCollectionFactory = $productCollectionFactory;
        $this->_catalogProductVisibility = $catalogProductVisibility;
        parent::__construct($context, $postDataHelper, $layerResolver,$categoryRepository,$urlHelper,$data);
    }

    protected function _getProductCollection(){
        $collection =  $this->_productCollectionFactory->create()
            ->addAttributeToFilter('status', '1')
            ->addAttributeToFilter('featured', '1');
        $collection->setVisibility($this->_catalogProductVisibility->getVisibleInCatalogIds());
        $collection = $this->_addProductAttributesAndPrices($collection)
            ->setPageSize(4)
            ->setCurPage(1);

        return $collection;
    }
}

На своей странице я дублирую одну рабочую строку (вторая строка — рабочий код):

{{block class="MyModule\MySite\Block\Products\Featured" template="WorkingModule_WorkingSite::products/featured_carousel2.phtml" limit="10" category_id="71" block_name="Featured Products"}}
{{block class="Magento\Catalog\Block\Product\ListProduct" template="WorkingModule_WorkingSite::products/featured_carousel2.phtml" limit="10" category_id="71" block_name="Featured Products"}}

Для первой строки ничего не отображается, и когда я отлаживал, getTemplate() кажется нулевым. Кто-нибудь видит, что я делаю неправильно?


person hanego    schedule 10.12.2017    source источник


Ответы (1)


Если вы просто пытаетесь создать список рекомендуемых продуктов в Magento 2. Нет необходимости создавать собственный модуль. Это просто. Следуй этим шагам.

  1. Скопируйте файл vendor/magento/module-catalog/view/frontend/templates/product/list.phtml и вставьте его по пути app/design/frontend/vendor/theme/Magento_Catalog/templates/product/list.phtml.
  2. Переименуйте этот скопированный выше файл в Featured_carousel2.phtml.
  3. Добавьте код js в слайдер.
  4. Затем используйте вставьте приведенный ниже код, в который вы хотите добавить.

     {{block class="Magento\Catalog\Block\Product\ListProduct" template="Magento_Catalog::product/featured_carousel2.phtml" limit="10" category_id="71" block_name="Featured Products"}}
    
person vishul malik    schedule 28.12.2017