Как я могу добавить блок через файл макета XML, а не программно, через контроллер?
Как я могу добавить блок через файл макета XML, а не программно, через контроллер?
У меня есть свой блок, и я хочу использовать его в шаблоне, который уже существует (каталог/категория/просмотр.phtml).
Как я могу это сделать, не заходя и не меняя контроллер и не изменяя каталог/категорию/представление.phtml напрямую?
Я хочу добавить этот блок где-нибудь в уже существующий шаблон через XML, а не программно.
Это часть моего блока:
class Mynamespace_Mymodule_Block_Myblock extends Mage_Core_Block_Template
{
public function _construct()
{
$this -> setTemplate("mynamespace_mymodule/myblock.phtml");
return parent::_construct();
}
public function getItemsByCategoryAndUseState($category, $use_state) {
return "some used or new items";
}
}
Это config.xml моего модуля:
<config>
<modules>
<Mynamespace_Mymodule>
<version>3.0.0.1</version>
</Mynamespace_Mymodule>
</modules>
<global>
<blocks>
<mynamespace_mymodule>
<class>Mynamespace_Mymodule_Block</class>
</mynamespace_mymodule>
</blocks>
</global>
<frontend>
<layout>
<updates>
<mynamespace_mymodule>
<file>mynamespace_mymodule.xml</file>
</mynamespace_mymodule>
</updates>
</layout>
</frontend>
Это мой package/theme/layout/mynamespace_mymodule.xml :
<layout version="0.1.0">
<catalog_category_view>
<reference name="product_list">
<block type="mynamespace_mymodule/myblock" name="myblock" after="-" />
</reference>
</catalog_category_view>
</layout>
Спасибо.
1
2 answers
Вы можете добавить блок с помощью этого xml-кода
<catalog_category_view>
<reference name="content">
<block type="mymodule/myblock" after="-" />
</reference>
</catalog_category_view>
Добавить это <frontend>
тег не в <global>
<frontend>
<layout>
<updates>
<mynamespace_mymodule>
<file>mynamespace_mymodule.xml</file>
</mynamespace_mymodule>
</updates>
</layout>
</frontend>
1
Author: Fme Extensions, 2016-11-25 12:11:46
Частично решил эту проблему, используя методы блока в шаблоне. Я просто:
- Создал блок
- Объявил блок в модуле config.xml
- Используя его в шаблоне (файл .phtml) следующим образом:
echo $this -> getLayout() -> createBlock('mymodule/myblock') -> toHtml();
Я хочу сделать это только с обновлениями макета .XML.
0
Author: Vladimir Despotovic, 2016-11-25 11:03:46