【问题标题】:Custom Block in Magento catalogsearch.xmlMagento catalogsearch.xml 中的自定义块
【发布时间】:2012-12-11 07:38:37
【问题描述】:

我创建了一个示例模块 Web。我还为此创建了一个示例块。我在 app/design/frontend/default/default/template 文件夹中有一个 web.phtml 文件,在 app/desing/fronted/default/default/layout 文件中有一个 web.xml 文件。下面是我的 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 中正常工作。

现在我从 app/desing/fronted/base/default/layout 复制了一个 catalogsearch.xml 文件并将其粘贴到 app/desing/fronted/default/default/layout 并在 results.phtml 之后添加了块代码,但我我无法在我的目录搜索页面中看到该块。

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

我在这里缺少什么?在 catalogsearch.xml 文件中添加块的正确方法是什么?

【问题讨论】:

    标签: php xml magento magento-1.5 magento-1.7


    【解决方案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="-"),则可能需要在目录搜索模块之后加载 Web 模块的配置 XML。

    【讨论】:

    • 假设我想在 list.phtml 之后添加块,那么我可以在这里写 after="catalog/layer/list.phtml" 吗?
    • 没有。在使用块名称之后(或之前)工作。这些排序参数一般仅适用于父级为core/text_list 块的情况。如果需要在使用模板的块中的某个位置渲染块,则应将该块添加为子块,并且必须自定义模板以渲染子块。
    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2013-10-18
    相关资源
    最近更新 更多