magento产品名称转移到breadcrumbs块

时间:2016-01-19 18:07:45

标签: php magento product breadcrumbs

作为标题,我喜欢在breadcrumbs.phtml中移动我的产品名称。以下是我目前的代码。但它返回一个"致命错误:在非对象上调用成员函数getName()"。我们该如何解决这个问题?

<?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; ?>

1 个答案:

答案 0 :(得分:0)

根据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; ?>