我需要覆盖购物车页面以开发扩展程序。一切正常,但当我清空我的购物车时,它仍然显示自定义模板文件。它没有显示空的购物车页面。
这是我的module.xml
<?xml version="1.0"?>
<layout version="1.0.0">
<checkout_cart_index translate="label">
<label>Shopping Cart</label>
<remove name="right"/>
<remove name="left"/>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<reference name="content">
<reference name="checkout.cart">
<action method="setTemplate"><value>module/checkout/cart.phtml</value></action>
<action method="setEmptyTemplate"><value>module/checkout/cart/noItems.phtml</value></action>
<block type="module/list" name="module_list" template="module/checkout/list.phtml">
<action method="setColumnCount">
<columns>4</columns></action>
</block>
</reference>
</reference>
</checkout_cart_index>
</layout>
如果我从&#34; setTemplate&#34;更改了cart.phtml的动作方法。 to&#34; setCartTemplate&#34;然后它不显示自定义模板。它显示默认文件夹中的模板(现在我正在基础文件夹中工作)。这是我将购物车页面清空时的屏幕截图。对此有任何想法。
答案 0 :(得分:0)
XML看起来正确。也许如果您的模板文件中存在PHP错误,Magento将回退到基本的phtml文件。所以也许快速检查错误日志或将你的noItems.phtml更改为简单的测试它,例如
<?php echo("my template is here"); ?>
我注意到文件名noItems.phtml是不寻常的,因为资本&#39;我&#39;在项目中,只需仔细检查您的文件是否完全被称为&#39; noItems.phtml&#39; ; - )
***编辑以下评论。
很难调试文件未被使用的原因。我会将一些echo或logging语句放入:
//file: app/code/core/Mage/Checkout/Block/Cart.php
//class: Mage_Checkout_Block_Cart
//function: chooseTemplate()
public function chooseTemplate()
{
$itemsCount = $this->getItemsCount() ? $this->getItemsCount() : $this->getQuote()->getItemsCount();
if ($itemsCount) {
$this->setTemplate($this->getCartTemplate());
} else {
$this->setTemplate($this->getEmptyTemplate());
}
}
您是否打开了系统配置中的模板提示?它可能有助于暴露块或模板。
答案 1 :(得分:0)
<reference name="checkout.cart">
<action method="setCartTemplate"><value>module/checkout/cart.phtml</value></action>
<action method="setEmptyTemplate"><value>module/checkout/cart/noItems.phtml</value></action>
<action method="chooseTemplate"/> <== ADD THIS
</reference>