2010-11-09 6 views
3

Я пытаюсь создать новый настраиваемый модуль в magento, но макет не загружается. Он всегда загружает три макета столбца, который определяется как значение по умолчанию в файле page.xml. Я думаю, что не рассматривает набор макета для моего модуля действия, даже если оно упоминается в файле config.xml, как this-Новый модуль в magento, не обновляющий макет

<frontend> 
     <routers> 
      <mynamespace_test> 
       <use>standard</use> 
       <args> 
        <module>Mynamespace_Test</module> 
        <frontName>test</frontName> 
       </args> 
      </mynamespace_test> 
     </routers> 
    <layout> 
      <updates> 
       <test><file>test.xml</file></test> 
      </updates> 
     </layout> 
    </frontend> 

и мой test.xml выглядит следующим образом: -

<?xml version="1.0"?> 
<layout version="0.1.0"> 
    <test_index_index translate="label"> 
     <label>Test module</label> 
     <reference name="root"> 
      <action method="setTemplate"><template>page/2columns-right.phtml</template></action> 
     </reference>  
     <reference name="content"> 
      <block type="test/this" name="test.this" template="test/test.phtml" /> 
     </reference> 
    </test_index_index> 
</layout> 

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

class mynamespace_Test_IndexController extends Mage_Core_Controller_Front_Action 
{ 
function indexAction() 
{ 
    $this->loadLayout(); 
     $this->renderLayout(); 
} 

} 

Пожалуйста, помогите! что мне не хватает. Thanks

ответ

3

Да, у меня это работает. Я понял, что проблема не в том, что файл макета после указания файла макета какого-либо другого модуля. Дело в том, неправильно с этим упоминают имена при определении маршрутизатора для модуля:

Я обновил этот блок кода: -

<routers> 
      <mynamespace_test> 
       <use>standard</use> 
       <args> 
        <module>Mynamespace_Test</module> 
        <frontName>test</frontName> 
       </args> 
      </mynamespace_test> 
     </routers> 

в

<routers> 
      <test> 
       <use>standard</use> 
       <args> 
        <module>Mynamespace_Test</module> 
        <frontName>test</frontName> 
       </args> 
      </test> 
     </routers> 

и он работал отлично.

Спасибо.

+3

Вместо того, чтобы сменить 'namespace_test' на' test' в config.xml, вы могли бы также изменить 'test_index_index' на' namespace_test_index_index' в вашем файле макета. Есть что-то подобное уже с страницами администратора, их URL-адреса начинаются с 'admin', но их макеты -' adminhtml'. – clockworkgeek

+0

Спасибо. Просто провел последние полчаса, ударяя головой о стену –

2

Где вы сохранили test.xml? Он должен быть в активной темы:

app/design/frontend/default/activetheme/layout/test.xml 

Я также рекомендую вам установить расширение LayoutViewer из блога Алана Сторма, так что вы можете отлаживать, какие из обновлений XML которые вставляются в макет.

+0

Сохраняется в нужном месте и активная тема. –

+0

Это очень странно. –

+0

Теперь я изменил файл макета в config.xml. Я поставил его customer.xml и добавил код блока от test.xml до customer.xml И он до сих пор не работает. Что-то по-прежнему не так –

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