首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >magento内容不显示在产品页view.phtml中。

magento内容不显示在产品页view.phtml中。
EN

Stack Overflow用户
提问于 2016-02-02 22:56:25
回答 1查看 724关注 0票数 1

我正在产品页面view.phtml中创建一个自定义块。该块是成功创建的,因为当我打开路径提示时可以看到该块。最初,我只是使用一些普通的HTML内容作为模板,如下所示:

代码语言:javascript
复制
<div> 
this is the new block
</div>

但是,如果我将模板更改为phtml内容,它将返回我正在调用的非对象函数的消息。如下所示:

模板

代码语言:javascript
复制
<?php $_helper = $this->helper('catalog/output'); ?>
<?php $_product = $this->getProduct(); ?>
<?php $productName = $_helper->productAttribute($_product, $_product->getName(), 'name'); ?>
<?php $productUrl = $_helper->productAttribute($_product, $_product->getProductUrl(), 'product_url'); ?>
<?php $productImage = $_product->getImageUrl() ?>  

<div class="socialShare clearfix">
    <ul>
        <li><a class="fa fa-facebook" href="javascript:popWin('https://www.facebook.com/sharer/sharer.php?u=<?php echo urlencode($productUrl); ?>&t=<?php echo urlencode($productName); ?>', 'facebook', 'width=640,height=480,left=0,top=0,location=no,status=yes,scrollbars=yes,resizable=yes');" title="<?php echo $this->__('Share it') ?>"></a></li>
    </ul>
</div>

错误消息

致命错误:在第3行的/home/onebig/public_html/app/design/frontend/ma_hitstore/default/template/catalog/product/view/socialShare.phtml中调用非对象上的成员函数getName()

catalog.xml I有以下代码

代码语言:javascript
复制
<catalog_product_view translate="label">
    <reference name="content">
        <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
            <block type="core/template" name="product.info.socialShare" template="catalog/product/view/socialShare.phtml"/>
    </reference>
 </catalog_product_view>

view.phtml调用该块

代码语言:javascript
复制
<?php echo $this->getChildHtml('product.info.socialShare'); ?>

我测试了我是否将模板内容直接粘贴到view.phtml中,并且它可以工作。我想如果我创建一个自定义块,我必须重新定义所有这些php变量$productName$productUrl$productImage?对不起,我是新手。我们非常感谢你的知识。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 23:26:08

这个问题是您的子块具有core/template类型。当您在核心模板上调用getProduct时,它只会返回null。

如果您将其更新为catalog/product_view,则$this->getProduct()将返回该产品。

或者,您也可以从任何模板获取当前产品,方法是从注册表中获取该产品:

代码语言:javascript
复制
$_product = Mage::registry('current_product');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35165387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档