Php 致命错误:对中的非对象调用成员函数getData()
我想就我在Magento遇到的这个错误寻求一些帮助 致命错误:在第163行的/Applications/MAMP/htdocs/mysite/app/code/local/Mage/Catalog/Helper/Image.php中对非对象调用成员函数getData() 我创建了一个CMS页面,并使用以下代码添加了一个template.phtml文件:Php 致命错误:对中的非对象调用成员函数getData(),php,javascript,html,zend-framework,magento,Php,Javascript,Html,Zend Framework,Magento,我想就我在Magento遇到的这个错误寻求一些帮助 致命错误:在第163行的/Applications/MAMP/htdocs/mysite/app/code/local/Mage/Catalog/Helper/Image.php中对非对象调用成员函数getData() 我创建了一个CMS页面,并使用以下代码添加了一个template.phtml文件: {{block type="core/template" product_id="177" template="page/thumbnails.
{{block type="core/template" product_id="177" template="page/thumbnails.phtml"}}
模板文件使用产品id显示产品图像和缩略图。当我将其放在view.phtml中时,代码会起作用,但当我将其添加到CMS页面时,我会出现错误,我只是不知道为什么
我真的很感谢你的帮助
thumbnails.phtml的代码:
<?php
$_product = $this->getProduct();
$_helper = $this->helper('catalog/output');
$_gallery = $this->getGalleryImages();
$_resize = 265;
?>
<style type="text/css">
.product-img-box .more-views li.slide-current a{ border:2px solid #aaa; }
.product-img-box .product-image-zoom img { cursor: pointer; }
#slide-loader{ visibility:hidden; position:absolute; top:auto; left:auto; right:2px; bottom:2px; width: 25px; height: 25px; }
</style>
<p class="product-image-zoom">
<?php
$_img = '<img id="image" src="'.$this->helper('catalog/image')->init($_product, 'image')->resize($_resize).'" alt="'.$this->htmlEscape($this->getImageLabel()).'" title="'.$this->htmlEscape($this->getImageLabel()).'" onclick="popWin(\''.$this->getGalleryUrl().'.\', \'gallery\', \'width=300,height=300,left=50,top=50,location=no,status=yes,scrollbars=yes,resizable=yes\'); return false;" />';
echo $_helper->productAttribute($_product, $_img, 'image')
?>
<img id="slide-loader" src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" />
</p>
<p class="a-center" id="track_hint"><?php echo $this->__('Click on above image to view full picture') ?></p>
<?php if (count($_gallery) > 0): ?>
<div class="more-views">
<h4><?php echo $this->__('More Views') ?></h4>
<ul>
<?php foreach ($_gallery as $_image): ?>
<li>
<a href="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile()); ?>" onclick="slide('<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile())->resize($_resize) ?>',<?php echo ($s = isset($s) ? ++$s : 0) ?>,'<?php echo $this->getGalleryUrl($_image) ?>'); return false;"><img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->resize(56); ?>" alt="<?php echo $this->htmlEscape($_image->getLabel()) ?>" title="<?php echo $this->htmlEscape($_image->getLabel()) ?>" /></a>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<script type="text/javascript">
function slide(url,num,gallery){
if (typeof slide.loading == 'undefined') slide.loading = false;
if(slide.loading) return false;
var loader = new Image();
$(loader).observe('load', function(){
$('slide-loader').setStyle({'visibility':'hidden'});
$$('div.more-views li').each(function(el,i){
(i==num) ? el.addClassName('slide-current') : el.removeClassName('slide-current');
});
var dummy = new Element('img', { src: url }).setOpacity(0);
new Insertion.After('image', dummy);
new Effect.Opacity(dummy, { duration:.5, from:0, to:1.0 });
new Effect.Opacity($('image'), { duration:.5, from:1.0, to:0,
afterFinish: function(){
$('image').writeAttribute('src',url).setOpacity(1).observe('click',function(e){
Event.stop(e);
popWin(gallery, 'gallery', 'width=300,height=300,left=50,top=50,location=no,status=yes,scrollbars=yes,resizable=yes');
return false;
})
dummy.remove();
slide.loading = false;
}
});
});
$('slide-loader').setStyle({'visibility':'visible'});
loader.src=url;
slide.loading = true;
return false;
});
</script>
.product img box.more view li.slide-current a{border:2px solid#aaa;}
.product img box.product image zoom img{光标:指针;}
#幻灯片加载程序{可见性:隐藏;位置:绝对;顶部:自动;左侧:自动;右侧:2px;底部:2px;宽度:25px;高度:25px;}
当在view.phtml中使用此代码时,块类将不会是核心/模板,因此“$this->getImageLabel()”等引用将导致您描述的错误
要亲自查看此问题,请将其添加到view.phtml和thumbnails.phtml的顶部
echo get_class($this);
然后可以更新内联静态块类型。根据记忆,它可能是目录/产品,但一旦你完成了上面的建议,你就可以很容易地找到它
{{block type="catalog/product" product_id="177" template="page/thumbnails.phtml"}}
你在哪里调用getdata()
?我不知道你的意思?我基本上是想把media.phtml文件添加到一个静态块上面的代码在样式上略有不同,但是当我把它放在media.phtml文件中时就可以了…谢谢你的回复。真的很有帮助。我必须指出我在文件名上犯了一个错误。上面的代码^view.phtml不在view.phtml中工作,因为两者基本上都执行相同的功能,即调用特定产品的图像并显示它们。我还将块代码更改为上面的^I,这会引发错误:致命错误:在第35行的/Applications/MAMP/htdocs/mysite/app/code/local/Mage/Catalog/Block/Product.php中对非对象调用成员函数getProductId(),好的,不知道现在去哪里
告诉我Mage\u Catalog\u Block\u Product\u View\u Media
,但缩略图没有。我还将块代码更改为{{block type=“catalog/product”product_id=“177”template=“page/thumbnails.phtml”}
,这给了我一个错误致命错误:调用成员函数getProductId()在第35行的/Applications/MAMP/htdocs/mysite/app/code/local/Mage/Catalog/Block/Product.php中的非对象上
如果类是Mage\u Catalog\u Block\u Product\u View\u Media,则应将块类型从“Catalog/Product”更改为类似“Catalog/Product\u View\u Media”的类型.我已经尝试将其他.phtml文件添加到CMS页面,这也会导致我出现错误,但在正常站点中工作。我认为出于某种原因,将包含php代码的.phtml文件添加到CMS页面会导致一个问题。。。我已经在网上搜索了一整天,也找不到解决这个问题的方法!