magento 产品名称移动到面包屑块
magento product name move to breadcrumbs block
作为标题我喜欢把我的产品名称移到breadcrumbs.phtml里面。以下是我目前拥有的代码。但是它returns一个"Fatal error: Call to a member function getName() on a non-object"。我们该如何解决这个问题?
<?php if($crumbs && is_array($crumbs)): ?>
<?php $_helper = $this->helper('catalog/output'); ?>
<?php $_product = $this->getProduct(); ?>
<div class="breadcrumbs">
<div class="container">
<div class="container-inner">
<ul>
<?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
<li class="<?php echo $_crumbName ?>">
<?php if($_crumbInfo['link']): ?>
<a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->escapeHtml($_crumbInfo['title']) ?>"><?php echo $this->escapeHtml($_crumbInfo['label']) ?></a>
<?php elseif($_crumbInfo['last']): ?>
<strong><?php echo $this->escapeHtml($_crumbInfo['label']) ?></strong>
<?php else: ?>
<?php echo $this->escapeHtml($_crumbInfo['label']) ?>
<?php endif; ?>
<?php if(!$_crumbInfo['last']): ?>
<span><i class="fa fa-angle-right"></i> </span>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<div>
<h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
</div>
</div>
</div>
</div>
<?php endif; ?>
根据 magento 代码,每个页面都会调用面包屑。
在您的代码中,您已尝试调用 $this->getProduct();
,它仅适用于某些区块的产品视图,不适用于面包屑。
如果你试图在每个页面调用这个面包屑,那么你会得到同样的错误。
我们需要停止调用 <?php $_product = $this->getProduct(); ?>
和 <?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
每一页。
和在面包屑中获取产品数据然后你需要调用注册表变量 Mage::registry('current_product')
.
详情见 Magento: How to tell if you're on a category page, or product page in .phtml file(s)
<?php if( Mage::registry('current_product')):?>
<div>
<h1><?php echo $_helper->productAttribute(Mage::registry('current_product'), Mage::registry('current_product')->getName(), 'name') ?></h1>
</div>
<?php endif; ?>
作为标题我喜欢把我的产品名称移到breadcrumbs.phtml里面。以下是我目前拥有的代码。但是它returns一个"Fatal error: Call to a member function getName() on a non-object"。我们该如何解决这个问题?
<?php if($crumbs && is_array($crumbs)): ?>
<?php $_helper = $this->helper('catalog/output'); ?>
<?php $_product = $this->getProduct(); ?>
<div class="breadcrumbs">
<div class="container">
<div class="container-inner">
<ul>
<?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
<li class="<?php echo $_crumbName ?>">
<?php if($_crumbInfo['link']): ?>
<a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->escapeHtml($_crumbInfo['title']) ?>"><?php echo $this->escapeHtml($_crumbInfo['label']) ?></a>
<?php elseif($_crumbInfo['last']): ?>
<strong><?php echo $this->escapeHtml($_crumbInfo['label']) ?></strong>
<?php else: ?>
<?php echo $this->escapeHtml($_crumbInfo['label']) ?>
<?php endif; ?>
<?php if(!$_crumbInfo['last']): ?>
<span><i class="fa fa-angle-right"></i> </span>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<div>
<h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
</div>
</div>
</div>
</div>
<?php endif; ?>
根据 magento 代码,每个页面都会调用面包屑。
在您的代码中,您已尝试调用 $this->getProduct();
,它仅适用于某些区块的产品视图,不适用于面包屑。
如果你试图在每个页面调用这个面包屑,那么你会得到同样的错误。
我们需要停止调用 <?php $_product = $this->getProduct(); ?>
和 <?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
每一页。
和在面包屑中获取产品数据然后你需要调用注册表变量 Mage::registry('current_product')
.
详情见 Magento: How to tell if you're on a category page, or product page in .phtml file(s)
<?php if( Mage::registry('current_product')):?>
<div>
<h1><?php echo $_helper->productAttribute(Mage::registry('current_product'), Mage::registry('current_product')->getName(), 'name') ?></h1>
</div>
<?php endif; ?>