Лимит сравнения продуктов Magento

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

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

Спасибо!


person Ian    schedule 05.09.2011    source источник


Ответы (2)


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

person Anton S    schedule 05.09.2011

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

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

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

    Каталоги:

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

    приложение/код/местный/Компания/Каталог

    приложение/код/местный/Компания/Каталог/Помощник

    приложение/код/местный/компания/каталог/и т. д.

  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. Помощник

    Создайте файл: app/code/local/Company/Catalog/Helper/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-й продукт удаляется, и отображается приятное уведомление. Это не идеальное решение (поскольку оно удаляет продукт после его добавления), но оно хорошо справляется со своей задачей.

person Deus777    schedule 23.10.2013