我在 onepage/checkout/success 页面上遇到了麻烦,因为我想将根模板从 2columns-right.phtml 设置为 1column.phtml。应该问题不大...
我得到了带有基本主题和自定义主题的默认包:
首先,我尝试更改 local.xml 中的模板
前端/默认/自定义/布局/local.xml
<layout>
...
<checkout_onepage_success>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</checkout_onepage_success>
...
</layout>
没有任何影响。
然后我尝试再次使用自定义 checkout.xml(与上面相同)而没有任何效果。
此外,当我复制 base/default/layout/checkout.xml 的全部内容并“仅”更改模板文件时,没有任何效果。
我已经清理/禁用了所有缓存并卸载了所有非标准插件。
Magento 是 V. 1.7.0.2。
有任何想法吗?
——
/base/default/layout/checkout.xml
=> 2columns-left.phtml/default/custom/layout/checkout.xml
=> 1column.phtml前端/浏览器 => 2columns-right.phtml
最佳答案
Christian,你自己说过,包和主题设置在“默认配置”范围内。当您将文件放置在/default/custom/layout/中时,您将文件放置在不同的模板文件夹中。你可以做两(三)件事之一:
更改设计设置
在系统 > 配置 > 设计 > 主题下,将模板、皮肤和布局设置为“自定义”。
刷新缓存,它应该开始使用文件夹/design/frontend/default/custom/...
使用默认/默认主题包
您可以只编辑默认主题。您可以将文件从“基本/默认”复制到“默认/默认”并将其设置为不覆盖任何文件,然后将文件从“默认/自定义”移动并覆盖默认文件夹。注意:这可以完成工作,但通常不建议这样做。 (继续阅读;D)
更改设计设置并使用 local.xml
如上所述更改您的配置。现在在 Magento 中改变布局最被接受的方法是使用 local.xml。这将位于您的 Default/Custom/Layout/文件夹中。这个文件将是您完成所有布局更新的地方,您不必在此过程中接触任何核心文件。
你习惯做的一些事情必须改变,因为你不会直接编辑基本文件。 local.xml 最后加载,因此不应覆盖此处所做的任何调整。为了完成您的目标,您的 local.xml 可能会从以下内容开始:
本地文件
<?xml version="1.0"?>
<layout version="0.1.0">
<checkout_onepage_success>
<reference name="root">
<action method="setTemplate">
<template>page/1column.phtml</template>
</action>
</reference>
</checkout_onepage_success>
<checkout_onepage_failure>
<reference name="root">
<action method="setTemplate">
<template>page/1column.phtml</template>
</action>
</reference>
</checkout_onepage_failure>
</layout>
您将不得不调整删除内容的方式,它不再像注释、删除或移动一行那么简单。
完全删除块
要删除块,请获取它的块名称(或 as="")并在适当的引用中插入以下代码。
<remove name="left.permanent.callout" />
将方块移到别处
移动块是一个两部分,首先你必须在包含引用中 unsetChild 并将块插入到它的新位置。例如:
<reference name="left">
<action method="insert">
<!-- Name of Block -->
<blockName>right.poll</blockName>
<!-- Name of Adjacent Block -->
<siblingName>left.newsletter<siblingName>
<!-- Does it Come Before(0)? Or After(1)? Adjacent Block -->
<after>0</after>
</action>
</reference>
<reference name="right">
<action method="unsetChild">
<name>right.poll</name>
</action>
</reference>
注意:这里,0 通常仅适用于其 phtml 文件包含 echo $this->getChildHtml('') 的块。这意味着它正在加载 xml 中列出的所有引用的子块。
另请注意,使用块名称(例如 getChildHtml('top_links'))使用相同函数的文件通常需要您将该模板文件克隆到您的设计(默认/自定义/模板/)中并手动添加 echo $this->getChildHtml('your_block_name') 您希望块出现的位置(将其放入 local.xml 后)。
这应该会让你开始,网上有很多好文章,堆栈溢出也是一个很好的信息来源。
关于magento - 如何在单页/结帐/成功中设置模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15970600/