Изменение содержимого вкладки "Отзывы о продукте"
Я хочу изменить содержимое вкладки "Отзывы о продукте". Я мог бы сделать это с помощью XML-файлов:
<reference name="product.info">
<action method="unsetChild">
<name>product.reviews</name>
</action>
<block type="reviewcontainer/tabs" name="product.reviews" as="reviews" after="additional">
<action method="addToParentGroup">
<group>detailed_info</group>
</action>
<action method="setTitle" translate="value">
<value>My Reviews</value>
</action>
<action method="setTemplate">
<template>mymodule/review_tab.phtml</template>
</action>
</block>
</reference>
Однако у меня есть некоторые настройки на странице Системы/конфигурации, которые должны контролировать, будут ли изменены отзывы. Итак, мой вопрос в том, как я могу сделать это из кода?
1 answers
Тег action
может иметь атрибут ifconfig
, подобный этому:
<action ifconfig="your/config/path" method="unsetChild">
Добавление блоков с помощью <block>
условно невозможно из коробки, но вот обходной путь:
Создайте блок вне иерархии компоновки (здесь укажите только имя блока):
<catalog_product_view>
...
<block type="reviewcontainer/tabs" name="product.reviews" />
</catalog_product_view>
, А затем добавьте его условно, используя действие insert
(укажите позицию и псевдоним здесь):
<catalog_product_view>
...
<reference name="product.info">
<action ifconfig="your/config/path" method="insert">
<name>product.reviews</name>
<sibling>additional</sibling>
<after>true</after>
<as>reviews</name>
</action>
</reference>
<reference name="product.reviews">
<action ifconfig="your/config/path" method="addToParentGroup">
<group>detailed_info</group>
</action>
<action ifconfig="your/config/path" method="setTitle" translate="value">
<value>My Reviews</value>
</action>
<action ifconfig="your/config/path" method="setTemplate">
<template>mymodule/review_tab.phtml</template>
</action>
</reference>
</catalog_product_view>
Я также переместил все действия в блоке отзывов в ссылку и сделал их условными с помощью ifconfig
. Вам не нужно этого делать, но это делает разделение определения блока и использования блока более четким, IMHO.