Templat tidak berlaku untuk produk unggulan

Saya mencoba membuat daftar produk untuk produk unggulan di Magento. Saya menulis kode berikut di file 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;
    }
}

Di halaman saya, saya menduplikasi satu baris yang berfungsi (baris kedua adalah kode yang berfungsi):

{{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"}}

Tidak ada yang ditampilkan untuk baris pertama dan ketika saya melakukan debug, getTemplate() sepertinya nol. Adakah yang melihat kesalahan saya?


person hanego    schedule 10.12.2017    source sumber


Jawaban (1)


Jika Anda hanya mencoba membuat daftar produk untuk produk unggulan di Magento 2. Tidak perlu membuat modul khusus. Ini sederhana. Ikuti langkah ini.

  1. Salin file vendor/magento/module-catalog/view/frontend/templates/product/list.phtml dan tempelkan ke jalur app/design/frontend/vendor/theme/Magento_Catalog/templates/product/list.phtml
  2. Ganti nama file yang disalin di atas dengan feature_carousel2.phtml
  3. Tambahkan kode js ke dalam slider.
  4. Kemudian Gunakan tempel kode di bawah ini yang ingin Anda tambahkan.

     {{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