我想在magento中禁用购物车中的网址。
查看app/design/frontend/base/default/template/checkout/cart/item/default.phtml
我看到购物车商品是否有产品网址
<h2 class="product-name">
<?php if ($this->hasProductUrl()):?>
<a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->escapeHtml($this->getProductName()) ?></a>
<?php else: ?>
<?php echo $this->escapeHtml($this->getProductName()) ?>
<?php endif; ?>
</h2>
如果是,则呈现URL,如果不是,则只呈现产品名称(这就是我想要的)。
现在,轻松修复 - 我可以修改此模板,只是吐出名称(当然是在我自己的包/主题中),我的问题就解决了。
但我很好奇,想知道$this->hasProductUrl()
的样子。
所以,经过一番挖掘,我在app/design/frontend/base/default/layout/checkout.xml
checkout_cart_index
块中的,就是这个页面的布局。
具体是$this
引用的块:app/code/core/Mage/Checkout/Block/Cart/Item/Renderer.php
<checkout_cart_index translate="label">
...
<reference name="content">
<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"/>
<action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/item/default.phtml</template></action>
<action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/item/default.phtml</template></action>
<action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/item/default.phtml</template></action>
...
</checkout_cart_index>
所以当我结帐方法时,我会立即注意到这个块对象上的hasProductUrl
,如果将产品网址设置为忽略,它将返回false?!
/**
* Check Product has URL
*
* @return bool
*/
public function hasProductUrl()
{
if ($this->_ignoreProductUrl) {
return false;
}
...
}
还有一个很好的小公共方法可以在同一个块对象中切换这个变量
/**
* Set ignore product URL rendering
*
* @param bool $ignore
* @return Mage_Checkout_Block_Cart_Item_Renderer
*/
public function setIgnoreProductUrl($ignore = true)
{
$this->_ignoreProductUrl = $ignore;
return $this;
}
但我看不出在哪里/怎么用呢?
我不知道如何从布局文件调用此方法,b / c这些渲染器块已经包含在布局调用中。
有人知道是否有正确的方法来调用此功能?
答案 0 :(得分:0)
您可以通过XML调用块方法,并且可以将 _ignoreProductUrl 标志更改为TRUE / FALSE。
这里是一个示例:
<?xml version="1.0"?>
<!--
/**
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.cart.item.renderers.simple">
<action method="setIgnoreProductUrl">
<argument name="ignore" xsi:type="boolean">true</argument>
</action>
</referenceBlock>
</body>
</page>