2013-04-28 3 views
0

Я пытаюсь создать пользовательскую страницу, для которой у меня есть следующий XML, используя пустой шаблон.Magento Layout и Layered Navigation

В моем контроллере, у меня есть

public function indexAction() 
{ 
     $this->loadLayout(); 
     $this->getLayout()->getBlock('root')->setTemplate('page/empty.phtml'); 
     $this->renderLayout(); 
} 

И в моем макете, я

<?xml version="1.0"?> 
<layout version="0.1.0"> 
    <brands_index_index> 
     <reference name="content"> 
      <block type="catalog/layer_view" name="catalog.leftnav" before="brands" template="catalog/layer/view.phtml"/> 
      <block type="core/template" name="brands" template="brands/brands.phtml" /> 
     </reference> 
    </brands_index_index> 
</layout> 

Это прекрасно работает и отображается слоистая навигация.

Однако, я хочу, чтобы слоистая навигация отображалась в шаблоне brand.phtml. Таким образом, я попытался сделать следующее:

<?xml version="1.0"?> 
<layout version="0.1.0"> 
    <brands_index_index> 
     <reference name="content"> 
      <block type="core/template" name="brands" template="brands/brands.phtml" > 
       <block type="catalog/layer_view" name="catalog.leftnav" as="catalog.leftnav" template="catalog/layer/view.phtml"/> 
      </block> 
     </reference> 
    </brands_index_index> 
</layout> 

Однако, это, кажется, не работает, когда я называю getChildHtml («catalog.leftnav») в brands.phtml.

Как перенести многоуровневую навигацию туда, где мне нужно ее называть в brand.phtml?

Итак, кажется, что блок загружается, когда я просматриваю раздел «рендеринг блоков» в «Magento Debug». Однако HTML не генерируется. Есть ли правило, в котором говорится, что многоуровневая навигация должна быть в блоках слева/содержание/право или что-то еще?

БЛАГОДАРЯ

ответ

0

getChildHtml выглядит для детей, используя их в качестве атрибута, а не их атрибут имени. Поэтому попробуйте изменить определение блока на это и соответствующим образом измените вызов getChildHtml:

<block type="catalog/layer_view" name="catalog.leftnav" as="mynav" template="catalog/layer/view.phtml" /> 
+0

Я тоже это пробовал. Он тоже не работает. :( – henrybai

+0

FWIW, вы можете заметить, что команда Magento не делает имя и как одно и то же значение. Я не знаю, есть ли для этого техническая причина или это просто стилистический выбор. – wierdo

+0

О, похоже, что вы нужно получить модель слоя и вызвать метод setCurrentCategory, чтобы извлечь из нее что-нибудь полезное. – wierdo

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