Предел сравнения продуктов Magento - PullRequest
0 голосов
/ 05 сентября 2011

Мне нужно ограничить количество добавляемых товаров для сравнения в Magento. Хотелось иметь только 4 сравниваемых продукта.

Я думаю о том, чтобы сделать это в .phtml (где есть циклы отображения элементов), но не знаю, где мне следует отредактировать, чтобы отобразить сообщение «Список сравнения заполнен». Есть идеи?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 октября 2013

Я подключился к событию catalog_product_compare_add_product.

Вот мое решение:

  1. Создать модуль.

    Каталоги:

    app / code / local / Company // это может быть любое имя

    app / code / local / Company / Catalog

    app / code / local / Company / Catalog / Helper

    app / code / local / Company / Catalog / etc

  2. Конфигурация модуля

    Создать файл: app / code / local / Company / Catalog / etc/config.xml

    Содержимое файла:

    <?xml version="1.0"?>
    <config>
        <modules>
            <Company_Catalog>
                <version>0.1</version>
            </Company_Catalog>
        </modules>
        <frontend>
            <events>
                <catalog_product_compare_add_product>
                    <observers>
                        <company_catalog>
                            <type>singleton</type>
                            <class>Company_Catalog_Helper_Observer</class>
                            <method>limitProductCompare</method>
                        </company_catalog>
                    </observers>
                </catalog_product_compare_add_product>
            </events>
        </frontend>
    </config>
    
  3. Помощник

    Создать файл: приложение / код / ​​локальный / Компания / Каталог / Помощник/Observer.php

    Содержимое файла:

    <?php
    
    class Company_Catalog_Helper_Observer extends Mage_Catalog_Helper_Data {
    
        const COMPARE_LIMIT = 4;
    
        function limitProductCompare($event) {
            if (Mage::helper('catalog/product_compare')->getItemCount()<self::COMPARE_LIMIT) return;
    
            $session = Mage::getSingleton('catalog/session');
            Mage::getSingleton('catalog/product_compare_list')->removeProduct($event->getProduct());
    
            $session->getMessages()->clear();
            $session->addNotice($this->__('You have reached the limit of products to compare. Remove one and try again.'));
        } 
    
    } 
    
  4. Включить модуль

    Создать файл: app / etc / modules / Company_Catalog.xml

    Содержимое файла:

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
        <modules>
            <Company_Catalog>
                <active>true</active>
                <codePool>local</codePool>
            </Company_Catalog>
        </modules>
    </config>
    
  5. Прибыль!

    Теперь все должно работать нормально.После добавления 5-й товар удаляется, и отображается приятное уведомление.Это не идеальное решение (поскольку оно удаляет продукт после добавления), но оно хорошо выполняет свою работу.

0 голосов
/ 05 сентября 2011

сравнивать элементы добавляются в Mage_Catalog_Product_CompareController, и вы можете видеть, что есть отправленные события, к которым вы можете подключить своего наблюдателя, или вы можете добавить свои ограничения, расширяя Mage_Catalog_Model_Product_Compare_List и переопределяя методы addProduct () или addProducts () или даже делая это в коллекциизанятия

...