Макет Magento module_default - PullRequest
       11

Макет Magento module_default

2 голосов
/ 22 октября 2010

Я создал модуль с несколькими разными контроллерами и, следовательно, с разными страницами.

Я хочу иметь боковую панель по умолчанию на каждой из своих страниц, но не на остальной части сайта.

когда я использую <default></default>, он явно распространяется по всему сайту.

Когда я пытаюсь <mymodule_default></mymodule_default>, ничего не происходит.

Поэтому мне остается скопировать и вставить весь макет для каждой отдельной страницы моего модуля.

Есть ли способ в макетах magento указывать только один раз, какой-нибудь xml, который будет использоваться каждой страницей, принадлежащей модулю?

Ответы [ 2 ]

5 голосов
/ 22 октября 2010

Конечно, это определенно возможно. Когда вы загружаете макет, используя loadLayout, в функции есть неявные аргументы, даже если она обычно называется без аргументов. Функция loadLayout фактически принимает одну или несколько строк для загрузки макетов по умолчанию. Это означает, что вы можете сделать это:

$this->loadLayout(array('default', 'your_layout_handle'));

Определите макет для этой ручки следующим образом:

<layout>
    <your_layout_handle>
        <reference name="left">
             <block type="yourmodule/yourblock" />
        </reference>
    </your_layout_handle>
</layout>

Надеюсь, это поможет!

Спасибо, Джо

1 голос
/ 22 октября 2010

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

<mymodule_page_index>
    <update handle="mymodule_default"/>
</mymodule_page_index>

То же самое используется для страниц учетной записи клиента в customer.xml.

...