在自定义布局中调用view.phtml模板

时间:2012-10-26 08:46:03

标签: templates magento layout

我是magento的新手,我在自定义布局中调用view.phtml文件时遇到问题。

Folowing是我的代码,我在cutom布局文件中包含但我得到致命错误
 Fatal error: Call to a member function getMetaTitle() on a non-object in D:\wamp\www\projects\magento\app\code\core\Mage\Catalog\Block\Product\View.php on line 56

<?php echo $this->getLayout()->createBlock('catalog/product_view')->setTemplate('catalog/product/view.phtml')->toHtml(); ?>

请回答我这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您的错误发生在此行的文件D:\wamp\www\projects\magento\app\code\core\Mage\Catalog\Block\Product\View.php

$product = $this->getProduct();
$title = $product->getMetaTitle();

创建块时,不指定为其创建块的产品,这是一个重要且必需的参数。

获得产品的功能:

public function getProduct()
{
      if (!Mage::registry('product') && $this->getProductId()) 
      {
          $product = Mage::getModel('catalog/product')->load($this->getProductId());
          Mage::register('product', $product);
      }
        return Mage::registry('product');
 }

你真的有一个选择如何解决这个问题,但它并不是很漂亮,而是工作。

 <?php
    Mage::register('product',Mage::getModel('catalog/product')->load(YOUR_PRODUCT_ID));
    echo $this->getLayout()->createBlock('catalog/product_view')->setTemplate('catalog/product/view.phtml')->toHtml();
    Mage::unregister('product');
 ?>

此决定无法在产品页面上使用。

答案 1 :(得分:0)

你不应该像那样实例化一个Block。

查看标准产品页面以了解其工作原理:

你有一个名为catalog / product / view的控制器,它在Mage_Catalog_ProductController类中定义

此控制器链接到app / design / package / theme / layout / catalog.xml中catalog.xml文件中定义的布局更新句柄

在这个布局文件中,你会看到块目录/ product_view是用几个孩子声明的:

<catalog_product_view translate="label">
    [...]
    <reference name="content">
        <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
            <block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>
            <block type="core/text_list" name="alert.urls" as="alert_urls" translate="label">
                <label>Alert Urls</label>
            </block>
            [...]

这是你手动实例化的部分。

您必须根据需要调整/了解catalog.xml中的布局

祝你好运