У меня есть пользовательский модуль, который имеет несколько блоков. Если я включу эти блоки в страницу CMS друг за другом, они будут работать как положено. Если я включу их в файлы XML макета, все они отображают исходный код последнего из этих XML-файлов. Далее следует минимальный тестовый пример (который для меня демонстрирует такое поведение), а также ожидаемые и фактические результаты.
код
/ приложение / и т.д. / модули / Test_Tester.xml
<?xml version="1.0"?>
<config>
<modules>
<Test_Tester>
<active>true</active>
<codePool>local</codePool>
</Test_Tester>
</modules>
</config>
/ приложение / код / местные / Test / Tester / и т.д. / config.xml
<?xml version="1.0"?>
<config>
<modules>
<Test_Tester>
<version>0.1.0</version>
</Test_Tester>
</modules>
<global>
<blocks>
<test_tester>
<class>Test_Tester_Block</class>
</test_tester>
</blocks>
</global>
</config>
/ приложение / код / местные / Test / Tester / Block / One.php
<?php
class Test_Tester_Block_One extends Mage_Catalog_Block_Product_List_Upsell
{
protected function _prepareData()
{
echo 'One.php';
//...MORE code here, it's not really relevant though
}
}
/ приложение / код / местные / Test / Tester / Block / Two.php
<?php
class Test_Tester_Block_Two extends Mage_Catalog_Block_Product_List_Upsell
{
protected function _prepareData()
{
echo 'Two.php';
//...MORE code here, it's not really relevant though
}
}
/ app / design / frontend / INTERFACE / TEMPLATE / layout / page.xml (под
..
<block type="core/text_list" name="testa" as="testa" />
<block type="core/text_list" name="testb" as="testb" />
..
/ app / design / frontend / INTERFACE / TEMPLATE / layout / cms.xml (под
<reference name="testa">
<block type="test_tester/one" template="tester/one.phtml"/>
</reference>
<reference name="testb">
<block type="test_tester/two" template="tester/two.phtml"/>
</reference>
/ приложение / дизайн / интерфейс / ИНТЕРФЕЙС / ШАБЛОН / шаблон / страницы / home_template.phtml
<?php echo $this->getChildHtml('testa'); ?>
<?php echo $this->getChildHtml('testb'); ?>
/ приложение / дизайн / интерфейс / ИНТЕРФЕЙС / ШАБЛОН / тестер / one.phtml
one.phtml
/ приложение / дизайн / интерфейс / ИНТЕРФЕЙС / ШАБЛОН / тестер / two.phtml
two.phtml
Ожидаемое
Это должно распечатать (на главной странице, где блоки включены):
One.php
one.phtml
Two.php
two.phtml
Фактический объем производства
Если я включу блоки в CMS-страницу домашней страницы, например:
{{block type="test_tester/one" template="tester/one.phtml"}}
{{block type="test_tester/two" template="tester/two.phtml"}}
... Я получаю ожидаемый результат. Однако, используя макет, как указано выше в примере кода, я получаю:
Two.php
two.phtml
Two.php
two.phtml
Я думаю, что сошел с ума - я не вижу, что я испортил.