我已经修改了结帐的布局,因此单页结帐有一个右侧栏,并且里面有侧栏栏:
<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
答案 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;};
?>
然而,这只是一个建议,但它可能不是最佳解决方案。