如何在结帐时只显示购物车侧边栏?

时间:2012-02-08 17:00:55

标签: magento

我已经修改了结帐的布局,因此单页结帐有一个右侧栏,并且里面有侧栏栏:

<checkout_onepage_index translate="label">
    <label>One Page Checkout</label>
    <!-- Mage_Checkout -->
    <remove name="left"/>
<update handle="page_two_columns_right" />
    <reference name="right">
        <block type="checkout/cart_sidebar" name="checkout_cart_sidebar" template="checkout/cart/sidebar.phtml"/>
    </reference>
    <reference name="root">…snip

我希望边栏出现在结帐中,即使它已通过管理员在其他页面中禁用了。基本上我只需要一个布尔值来插入我重写的sidebar.phtml:

<?php if ($_someBooleanValue || $this->getIsNeedToDisplaySideBar()):?>

当块在结帐过程中时,将$ _someBooleanValue的值设置为true的最佳方法是什么,否则false

3 个答案:

答案 0 :(得分:2)

我能够解决这个问题。我真正需要的是来自getNameInLayout()的{​​{1}}。由于我控制了我正在处理的布局xml,我知道名称是什么(在这种情况下是* checkout_cart_sidebar *),所以我只需要检查这是否是当前块的名称。

Mage_Core_Block_Abstract

答案 1 :(得分:1)

最好的方法是使用/ app / design / frontend / yourtheme / yourskin / layout文件夹中的local.xml文件。您可以定位特定页面以添加/删除块以覆盖基本定义。

这是关于local.xml文件功能的一个很好的入门读物:

http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/

答案 2 :(得分:1)

您可以获取页面名称,如果页面名称等于您希望它显示的页面,则显示侧栏。

<?php
$currentFile = $_SERVER["PHP_SELF"];
$parts = Explode('/', $currentFile);
$page = $parts[count($parts) - 1];
if($page == "checkoutpage.php")
{
  $_someBooleanValue = true;
}
?>

您也可以检查“结帐”是否也在页面名称中。

<?php
$position = strpos($page, "checkout");
if($position == true){$_someBooleanValue = true;};

?>

然而,这只是一个建议,但它可能不是最佳解决方案。