0

我正在开发一个基于 Ultimo 主题并使用 fishpig wordpress 扩展的 Magento 项目。

我正在尝试仅更改 wordpress 页面上的2columns-left.phtml模板,但无法正常工作!

为了进一步解释这个场景:

Ultimo 主题集的主要内容位于左列之前,并float: right;在主要内容上使用 css 规则将其定位在左列之后。HTML 的结构如下:

<div class="col-main grid4-3 grid-col2-main in-col2">
    [omitted code]
</div>
<div class="col-left sidebar grid4-1 grid-col2-sidebar in-sidebar"><div class="wp-sidebar">
    [omitted code]
</div></div>

此 HTML 由ultimo/default/template/page/2columns-left.phtml 生成,其中:

<div class="col-main grid4-3 grid-col2-main in-col2">
  <?php echo $this->getChildHtml('global_messages') ?>
  <?php echo $this->getChildHtml('content') ?>
</div>
<div class="col-left sidebar grid4-1 grid-col2-sidebar in-sidebar"><?php echo $this->getChildHtml('left') ?></div>

我想使用我自己的模板文件将侧边栏放置在 HTML 中的主要内容之前,仅适用于 wordpress 页面,这样 wordpress 类别将堆叠在移动设备中的主要内容之上。

我尝试创建自己的名为page/wp-2columns-left.phtml的模板,并使用以下代码和我的主题local.xml中的一些其他变体将其设置为网站的 Wordpress 部分:

<wordpress_default>
    <reference name="root">
        <action method="setTemplate"><template>page/wp-2columns-left.phtml</template></action>
    </reference>
</wordpress_default>

但仍在调用原始的2columns-left.phtml模板。我可以直接编辑模板文件并在网站的 WordPress 部分获得所需的结果,但这会影响 Magento 网站的其余部分,这不是一个好的做法。

4

1 回答 1

0

您可以使用 XML 布局代码实现此目的。以下代码将更改在 WordPress 中创建的所有页面的模板:

<wordpress_page_view>
    <reference name="root">
        <action method="setTemplate">
            <template>page/2columns-left.phtml</template>
        </action>
    </reference>
</wordpress_page_view>

以下代码将更改 ID 为 32 的 WordPress 页面的模板:

<wordpress_page_view_32>
    <reference name="root">
        <action method="setTemplate">
            <template>page/2columns-left.phtml</template>
        </action>
    </reference>
</wordpress_page_view_32>

将此代码添加到 XML 布局文件后,您需要刷新布局 XML 缓存(如果已启用)。

于 2015-03-25T15:05:25.807 回答