Как мне сделать условие для кода XML? - PullRequest
0 голосов
/ 23 марта 2012
<reference name="left">
    <block type="catalog/navigation"  
           name="cms_catalog" 
           template="catalog/catalog.phtml"/>
    <block type="catalog/product_new" 
           name="home.catalog.product.new" 
           alias="product_new" 
           template="catalog/product/newbar.phtml" />
    <block type="amreview/sidebar"    
           name="amreview_sidebar" 
           template="amreview/sidebar.phtml"/>
    <block type="catalog/product"
           template="catalog/product/specials.phtml" />
</reference>

Я хочу создать условие, чтобы решить, когда пользователь будет входить в систему, а затем не выводить <block type="catalog/product" template="catalog/product/specials.phtml" /> блок. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Вы можете удалить специальный блок из дескриптора макета customer_logged_in.

Например, вы можете изменить файл макета следующим образом:

<layout>
    ...
    <customer_logged_in>
        <remove name="specials" />
    </customer_logged_in>
</layout>

В коде макета, который вы разместиливам нужно будет добавить имя к вашему блоку specials и сослаться на него в узле удаления (я просто использовал «specials» в качестве примера).

Существует также дескриптор customer_logged_out, если вы хотите реализоватьпротивоположный эффект.

0 голосов
/ 23 марта 2012

Вместо этого вы можете сделать это изнутри.В соответствующем файле .phtml вы, вероятно, найдете строку:

$this->getChildHtml();

, которая без передаваемого ему параметра будет отображать каждый блок в порядке.

Вы можете заменить этос:

$this->getChildHtml("cms_catalog");
$this->getChildHtml("home.catalog.product.new");
$this->getChildHtml("amreview_sidebar");
if ($condition) { // Find the approriate variable to define the condition.
    $this->getChildHtml("specials");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...