Используйте пользовательскую переменную в описании категории

magento.stackexchange https://magento.stackexchange.com//questions/83744

Вопрос

Недавно я создал пользовательскую переменную с именем storecount - который я буду программно увеличивать для каждого магазина, добавленного в мой плагин поиска магазинов.

Я хотел бы показать это в различных местах, включая описания продуктов и категорий, чтобы, когда мы добавляем новый магазин, нам не приходилось искать каждое вхождение количества магазинов и вручную увеличивать его на 1.

С использованием {{customVar code=storecount}} не работает в описаниях категорий.Есть ли способ получить эту переменную, не разбирая ядро ​​Magento на куски?

Это было полезно?

Решение

Самый простой способ сделать это, состоит в том, чтобы использовать тот же процессор шаблона для описания категории, как он используется для блоков CMS и контента страниц. Тот из модуля виджета.

Для этого вам нужно расширение.Давайте назовем это StackExchange_Catalog.

Вам понадобятся следующие файлы.

app/etc/modules/StackExchange_Catalog.xml - файл декларации

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Catalog>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
                <Mage_Cms />
                <Mage_Widget />
            </depends>
        </StackExchange_Catalog>
    </modules>
</config>
.

app/code/local/StackExchange/Catalog/etc/config.xml - файл конфигурации

<?xml version="1.0"?>
<config>
    <global>
        <catalog>
             <content>
                <tempate_filter>widget/template_filter</tempate_filter>
            </content>
        </catalog>
    </global>
</config>
.

Очистите кеш и попробуйте снова.

Другие советы

без взлома Magento Core, да;Без кода нет.

Вы можете написать наблюдатель, который слушает событие Catalog_Category_oLoad_After и манипулировать описанием категории.

/ edit: Когда категория с измененным описанием сохраняется, пользовательская переменная также будет сохранена, поэтому это не отличное решение.

Другой способ — добавить свой storecount переменную в файл шаблона с помощью:

// To get the TEXT value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');

// To get the HTML value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');

Если вам интересно, какой шаблон, включите Подсказки по пути к шаблону и вы сможете найти, где добавить его в файл шаблона.Не переопределяйте основной шаблон, скопируйте его в каталог вашей темы, поэтому сделайте его копию где-нибудь вроде app/design/frontend/[Your Design Package]/[Your Theme]/template/catalog/category/view.phtml.Если вы не будете следовать этой практике, вы потеряете свою работу при обновлении Magento.

Это, вероятно лучше попрактиковаться создавайте блоки CMS и добавляйте их в файлы шаблонов, чтобы их было легче редактировать и отключать.

создайте свой блок CMS с вашим контентом, включая {{customVar code=storecount}}и добавьте его туда, где вам нужно, в файлы шаблона с помощью:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('your_cms_block_identifier')->toHtml() ?>

ОБНОВЛЯТЬТолько что внимательно рассмотрел Ответ Мариуса - его решение кажется очень аккуратным и добавляет Magento конституционности, которая вам нужна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top