2

我希望将 Magento CE 1.6 中的 topLinks 显示在静态块中。这是因为我的网站正在运行四个不同的商店 [多商店 - 不同的域],并且只需要在两个商店上拥有 topLinks,同时使用一个模板。

我确实尝试转换 php 调用 [getChildHtml('topLinks'); ?>] 进入静态块内的块标记但未成功。已经深入研究了 template_links [由不同的 xmls 制成] 的 xml,但无法确定如何在静态块中创建一个 {{block}} 以显示 topLinks。

对静态块的调用已经到位,只需要帮助实现内部的topLinks。

任何帮助将不胜感激。

最诚挚的问候

工厂


我的问题很好:

基本上我需要修改page.xml

<block type="page/template_links" name="top.links" as="topLinks"/>

<layout>
<static_block_top_links>
    <reference name="header">
        <action method="unsetChild">
            <name>topLinks</name>
        </action>
        <block type="cms/block" before="-" name="some_name" as="topLinks">
            <action method="setBlockId">
                <name>some_static_block</name>
            </action>
        </block>
    </reference>
</static_block_top_links>

<STORE_store>
    <update handle="static_block_top_links" />
</STORE_store>

<STORE_law>
    <update handle="static_block_top_links" />
</STORE_law>

4

2 回答 2

1

使用 local.xml 来实现您的更改:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <default>
        <reference name="header">
            <!-- Unset original toplinks block -->
            <action method="unsetChild">
                <name>topLinks</name>
            </action>

            <!-- Add static block in place with same alias -->
            <block type="cms/block" before="-" name="some_name" as="topLinks">
                <action method="setBlockId">
                    <name>some_static_block</name>
                </action>
            </block>
        </reference>
    </default>
</layout>

请注意,“some_name”可以是“top.links”以外的任何内容,因为这会导致核心 XML 文件中的一些内容尝试对您的 cms 块执行操作。

作为对您的编辑的回应,您可以轻松地为某些商店执行此操作,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <static_block_top_links>
        <reference name="header">
            <action method="unsetChild">
                <name>topLinks</name>
            </action>
            <block type="cms/block" before="-" name="some_name" as="topLinks">
                <action method="setBlockId">
                    <name>some_static_block</name>
                </action>
            </block>
        </reference>
    </static_block_top_links>

    <STORE_myfirststore>
        <update handle="static_block_top_links" />
    </STORE_myfirststore>

    <STORE_mysecondstore>
        <update handle="static_block_top_links" />
    </STORE_mysecondstore>
</layout>
于 2012-05-21T07:55:42.827 回答
0

您好,对于拥有 magento CE 1.6+ 多商店多域并希望删除某些商店的 topLinks 的任何人,这是正确的方法。

在您的 app/design/frontend/default/yourtheme/layout/ 中创建一个 local.xml

你的 local.xml 应该是这样的

<?xml version="1.0" encoding="UTF-8"?>
<layout>
<STORE_mystore1>
    <reference name="header">
        <action method="unsetChild">
            <name>topLinks</name>
        </action>
    </reference>
</STORE_mystore1>

<STORE_mystore2>
    <reference name="header">
        <action method="unsetChild">
            <name>topLinks</name>
        </action>
    </reference>
</STORE_mystore2>   
</layout>

将 mystore1 和 mystore2 替换为 Store View [Admin -> Manage Stores -> Store View Name -> Code] 下的代码

确保将 layout.xml 编码为 UTF-8

上传 app/design/frontend/default/yourtheme/layout/ 文件夹中的 layout.xml。

刷新缓存。

我要感谢 Daniel Sloof 和 Robert Popovic 的意见。

于 2012-05-23T09:59:10.573 回答