2013-11-10 2 views

ответ

1

Вам нужно удалить блок с именем 'catalog.topnav' для обработчиков страниц входа и регистрации. Обработчик страницы похож на URL-адрес страницы, но все слэши заменены на «_». Для страницы входа это будет * customer_account_login * и для страницы регистрации - * customer_account_create *. Вы можете использовать

<remove name="[blockname]"> 

или

<action method="unsetChild"><block>[blockname]</block></action> 

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

Обновление макета для Magento по умолчанию тема будет выглядеть так:

<?xml version="1.0"?> 
<layout version="0.1.0"> 
    <customer_account_login> 
     <remove name="catalog.topnav" /> 
    </customer_account_login> 
    <customer_account_create> 
     <remove name="catalog.topnav" /> 
    </customer_account_create> 
</layout> 

Существует несколько объяснений о макетах Magento, которые могут быть полезны - http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-4-magento-layouts-blocks-and-templates

0

Удалить узлы будут обрабатываться после того, как все ручки макета объединяются , и это хороший способ удалить блок, независимо от того, какой дескриптор макета загружал блок; вы просто хотите полностью избавиться от него для некоторых ручек! Он также удаляет рекурсивно, поэтому все, что вам нужно указать, - это дескриптор макета.

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

Смежные вопросы