เทมเพลตเป็นโมฆะสำหรับผลิตภัณฑ์แนะนำ

ฉันกำลังพยายามสร้างรายการผลิตภัณฑ์สำหรับผลิตภัณฑ์เด่นใน 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