Пользовательский блок в Magento catalogsearch.xml

Я создал образец модуля Web. Также для этого я создал один Sample Block. У меня есть один файл web.phtml в папке app/design/frontend/default/default/template и один файл web.xml в файле app/desing/fronted/default/default/layout. Ниже мой файл web.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>
    </default>
    <web_index_index>
    <reference name="root">
          <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
    </reference>
        <reference name="content">
            <block type="web/web" name="web" template="web/web.phtml" />
        </reference>
    </web_index_index>
</layout> 

Он правильно работает в моем http://mydomain.com/magento/web.

Теперь я скопировал файл catalogsearch.xml из app/desing/fronted/base/default/layout и вставил его в app/desing/fronted/default/default/layout и добавил в него блочный код после results.phtml, но я не могу чтобы увидеть блок на моей странице поиска в каталоге.

<block type="web/web" name="web" template="web/web.phtml" /> 

Что мне здесь не хватает? Как правильно добавить блок в файл catalogsearch.xml?


person Manoj Suryawanshi    schedule 11.12.2012    source источник


Ответы (1)


Файл, в котором появляется директива обновления макета, (обычно) не имеет значения. Какие области XML-директивы макета являются дескрипторами обновления макета.

Для результатов поиска по каталогу вам нужно будет добавить свой блок к двум дескрипторам, если вы хотите, чтобы он был как в простом, так и в расширенном представлении результатов поиска; добавьте это в файл макета web.xml:

<catalogsearch_result_index>
    <reference name="content">
        <block type="web/web" name="web" template="web/web.phtml" after="-" /> 
    </reference>
</catalogsearch_result_index>

<catalogsearch_advanced_result>
    <reference name="content">
        <block type="web/web" name="web" template="web/web.phtml" after="-" /> 
    </reference>
</catalogsearch_advanced_result>

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

<web_addToContent>
    <reference name="content">
        <block type="web/web" name="web" template="web/web.phtml" after="-" /> 
    </reference>
</web_addToContent>

<catalogsearch_advanced_result>
    <update handle="web_addToContent" />
</catalogsearch_advanced_result>

<catalogsearch_advanced_result>
    <update handle="web_addToContent" />
</catalogsearch_advanced_result>

Если блок появляется в начале содержимого (несмотря на after="-"), возможно, необходимо сделать загрузку XML конфигурации веб-модуля после модуля поиска в каталоге.

person benmarks    schedule 11.12.2012
comment
Предположим, я хочу добавить блок после list.phtml, могу ли я написать здесь after=catalog/layer/list.phtml? - person Manoj Suryawanshi; 11.12.2012
comment
№ после (или до) работы с использованием имени блока. Эти параметры сортировки обычно применяются только тогда, когда родителем является блок core/text_list. Если блок необходимо визуализировать в той позиции в блоке, который использует шаблон, блок должен быть добавлен как дочерний, а шаблон должен быть настроен для отображения дочернего элемента. - person benmarks; 11.12.2012