我试图通过我的模块的布局文件即mymodule.xml中的布局更新来更改checkout/cart.phtml
<layout>
<checkout_cart_index>
<reference name="checkout.cart">
<action method="setCartTemplate"><value>mymodule/checkout/cart.phtml</value></action>
</reference>
</checkout_cart_index>
</layout>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有线索吗?
Ankita,我要写的是获得你想要的东西的实际方法.虽然John Hickling的正式答案可行,但Magento并不打算如何修改主车模板.
Magento故意选择使用不同的方法设置购物车模板,即setCartTemplate
和setEmptyTemplate
.他们可以在Magento自己看到app/design/frontend/base/default/layout/checkout.xml
.这样做是为了管理两个模板,每个模板都可以处理自己的条件.第一个条件是带有物品的购物车,而第二个条件是没有物品的购物车.通过使用常用setTemplate
方法,这种区别将会丢失:带有物品的购物车和没有物品的购物车都会显示相同的模板.这不好.
你是如此亲密.你试图使用这个setCartTemplate
方法是正确的.这就是你应该使用的.但是,您缺少一个允许Magento甚至考虑使用它的基本方法调用:您忘记包含chooseTemplate
方法调用.注意Magento自己的checkout.xml
文件:
<block type="checkout/cart" name="checkout.cart">
<action method="setCartTemplate"><value>checkout/cart.phtml</value></action>
<action method="setEmptyTemplate"><value>checkout/cart/noItems.phtml</value></action>
<action method="chooseTemplate"/>
Run Code Online (Sandbox Code Playgroud)
看看最后一个方法调用,chooseTemplate
.如果您查看,app/code/core/Mage/Checkout/Block/Cart.php
您会看到以下方法,在这些方法中,熟悉的方法setCartTemplate
和setEmptyTemplate
方法被调用,但由于它们是魔术方法,因此在Magento的源代码中无法轻松搜索,这对很多人来说都是有问题的:
public function chooseTemplate()
{
$itemsCount = $this->getItemsCount() ? $this->getItemsCount() : $this->getQuote()->getItemsCount();
if ($itemsCount) {
$this->setTemplate($this->getCartTemplate());
} else {
$this->setTemplate($this->getEmptyTemplate());
}
}
Run Code Online (Sandbox Code Playgroud)
你错过了那个chooseTemplate
方法调用.这是您自己的布局XML文件应如下所示:
<checkout_cart_index>
<reference name="checkout.cart">
<action method="setCartTemplate"><value>mymodule/checkout/cart.phtml</value></action>
<action method="setEmptyTemplate"><value>mymodule/checkout/noItems.phtml</value></action>
<action method="chooseTemplate"/>
</reference>
</checkout_cart_index>
Run Code Online (Sandbox Code Playgroud)
如果仍在您的控制范围内,我建议您更新代码.这就是Magento打算更新购物车模板的方式.常见的setTemplate
方法对此任务来说太具破坏性了.粒度是Magento的意图,所以更新应该保持这种粒度.我还建议您将此标记为正确答案.
归档时间: |
|
查看次数: |
2303 次 |
最近记录: |