Я хотел бы иметь возможность устанавливать переменные с помощью поля «Обновления пользовательского макета», которое отображается под 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? Это должно быть сделано там, потому что данные будут меняться для каждой отдельной категории, поэтому я не могу использовать жестко запрограммированные файлы макетов.
В каком макете вы делаете это? 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)
Я не знаю, включен ли кеш, если это так, очистите кеш, и он должен работать.
Других решений пока нет …