Magento: установка переменных через & quot; Обновления пользовательской разметки & quot; XML для каждой категории?

Я хотел бы иметь возможность устанавливать переменные с помощью поля «Обновления пользовательского макета», которое отображается под Manage Categories -> [Some Category] -> Custom Design, чтобы указать фрагменты данных, которые могут быть использованы в шаблоне страницы категории list.phtml,

До сих пор я пытался использовать это:

<reference name="product_list">
<action method="setData">
<name>custom_banner_type</name>
<value>single</value>
</action>
<action method="setData">
<name>custom_banner_position</name>
<value>3</value>
</action>
</reference>

Но когда я пытаюсь echo $this->getData("custom_banner_type"); внутри list.phtml данные не доступны.

Я также пытался получить данные внутри _beforeToHtml() функция внутри List.php, контроллер шаблона, но это тоже ничего не делает!

Так есть ли способ передать данные / переменные с помощью XML-кода Custom Layout Updates? Это должно быть сделано там, потому что данные будут меняться для каждой отдельной категории, поэтому я не могу использовать жестко запрограммированные файлы макетов.

5

Решение

В каком макете вы делаете это? catalog_category_view а также catalog_category_layered должен быть использован.
Возможно, вы можете использовать стандартный способ Magento для настройки данных с помощью XML. Magento устанавливает данные в xml с помощью функции set, которую я считаю более читабельной, чем setData в XML.

Пример:

<catalog_category_view>
<reference name="product_list">
<action method="setCustomBannerType"><value>single</value></action>
<action method="setCustomBannerPosition"><value>3</value></action>
</reference>
</catalog_category_view>

Чтобы получить данные, которые вы могли бы использовать $this->getData('custom_banner_type'); но также $this->getCustomBannerType(); что то же самое. Если вы хотите узнать больше об этом, я бы посоветовал взглянуть на магические методы (http://php.net/manual/en/language.oop5.magic.php)

Я не знаю, включен ли кеш, если это так, очистите кеш, и он должен работать.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]