当前位置: 技术文章>> Magento 2:如何在类别页面上显示带有页面标题的产品计数

文章标题:Magento 2:如何在类别页面上显示带有页面标题的产品计数
  • 文章分类: Magento
  • 21862 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


在Magento 2的类别页面上显示带有页面标题的产品计数的步骤:

步骤1:为此,请在app\Code\Vendor\Extension\etc\文件夹中创建events.xml文件,然后添加以下代码:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="layout_generate_blocks_after">
        <observer instance="Vendor\Extension\Observer\Productcount"
                  name="Vendor\Extension\Observer\Productcount"/>
    </event>
</config>

第 2 步:接下来,在app\Code\Vendor\Extension\Observer\文件夹中创建Productcount.php并添加以下代码:

<?php
namespace Vendor\Extension\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class Productcount implements ObserverInterface
{
    public function execute(Observer $observer)
    {
        if ($observer->getEvent()->getData('full_action_name') === 'catalog_category_view')
        {
            $layout = $observer->getEvent()->getData('layout');
            $listBlock = $layout->getBlock('category.products.list');
            $categoryViewBlock = $layout->getBlock('category.products');
            $count  = 0;
            if ($listBlock)
            {
                $productCollection = $listBlock->getLoadedProductCollection();
                if ($productCollection && $productCollection->count() >0)
                {
                    $count = $productCollection->count();
                }
            }
            if ($categoryViewBlock)
            {
                $currentCategory = $categoryViewBlock->getCurrentCategory();
                if ($currentCategory)
                {    
                    $count = $currentCategory->getProductCollection()->count();
                }
            }
            $pageMainTitle = $layout->getBlock('page.main.title');
            if ($pageMainTitle)
            {
                $oldTitle =$pageMainTitle->getPageTitle();
                $pageMainTitle->setPageTitle(
                    $oldTitle
                    . _(' - Product Count: ' . (int) $count)
                );
            }
        }
    }
}

步骤3:最后运行以下命令:

php bin/magento cache:flush

结论:

因此,所有人都能够在Magento 2的类别页面上显示带有页面标题的产品计数。


推荐文章