视图不显示
我想修改Magento网站产品视图页面上显示的内容,并且我想创建自己的自定义块以供在页面上使用。
我做了什么
为产品视图句柄创建布局更新
要更新产品视图页上显示的内容,我在我的local.xml
文件中放置了以下布局更新:
<catalog_product_view>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<reference name="content">
<remove name="product.tierprices" />
<remove name="product.info.upsell" />
<remove name="product.clone_prices" />
<remove name="product.description" />
<remove name="product.tag.list" />
<remove name="product.info.addto" />
<remove name="product.info.addtocart" />
<remove name="product.info.downloadcontent" />
<remove name="product.info.extrahint" />
<remove name="product.info.options.wrapper.bottom" />
<remove name="product.info.container1" />
<remove name="product.info.container2" />
<remove name="alert.urls" />
<remove name="catalog.compare.sidebar" />
<remove name="cart_sidebar" />
<remove name="right.permanent.callout" />
<remove name="paypal.partner.right.logo" />
<remove name="right.poll" />
<remove name="bundle.tierprices" />
<remove name="product.attributes" />
<!-- This should override the original product.info block -->
<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
<!-- Custom MyNamespace_Videos_Block_Player block -->
<block type="videos/player" name="videoPlayer" as="videoPlayer" template="video/player.phtml"/>
</block>
</reference>
</catalog_product_view>
在这一点上,我确认了删除节点的工作。 很明显,因为此刻我还没有创建videos/player
块类,所以没有任何结果。
自定义模块
我通过在app/code/local
下创建了以下文件夹结构创建了一个自定义模块:
我在MyNameSpace/Videos/etc/config.xml
为该模块创建了配置文件,并将以下xml节点放置在:
<?xml version="1.0"?>
<config>
<modules>
<mynamespace_videos>
<version>0.0.1</version>
</mynamespace_videos>
</modules>
<global>
<blocks>
<videos>
<class>MyNamespace_Videos_Block</class>
</videos>
</blocks>
</global>
</config>
然后我启用了该模块并验证了它的工作。
自定义块类
我在MyNameSpace/Videos/Block/Player.phtml
创建了一个自定义块,其中包含以下内容:
class MyNamespace_Videos_Block_Player extends Mage_Core_Block_Template {
public function _toHtml() {
echo "Block's _toHtml() method called!";
parent::_toHtml();
}
}
自定义模板文件
然后,我在design/frontend/mythemepackage/default/template/video/player.phtml
了包含以下内容的自定义模板文件:
<!--Check to see if Magento sees this!-->
<?php Mage::log(get_class($this)); ?>
修改目录/产品/ view.phtml
为了让我的videos/player
块在catalog/product/view.phtml
,我将app/design/frontend/base/default/template/catalog/product/view.phtml
到app/design/frontend/mythemepackage/default/template/catalog/product/view.phtml
。
然后,我将以下行添加到新复制的视图模板中:
<b>This text will show up!</b>
<i>The following wont: </i>
<?php echo $this->getChildHtml('videoPlayer'); ?>
结果
通过上述配置,我无法获取videoPlayer
块进行渲染。
以下是我所知道的:
catalog/product/view.phtml
文件中看到正常的html文本。 我看不到从$this->getChildHtml('videoPlayer');
MyNamespace_Videos_Block_Player
类的_toHtml()
方法未被调用,我看不到任何来自我的video/player.phtml
模板的输出。 catalog.xml
从app/design/frontend/base/default/layout/catalog.xml
复制到app/design/frontend/mythemepackage/default/layout/catalog.xml
,然后添加我的videos/player
块,可以看到“Block的_toHtml()方法调用!” 这已经被videos/player
模块所回应。 以下是catalog.xml
的添加内容: <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
<block type="videos/player" name="videoPlayer" as="videoPlayer" template="video/player.phtml"/>
</block>
catalog.xml
调用我的块的_toHtml()
方法,也不会输出我的模板。 问题
我花了很长时间来解决这个问题。 我已经在var/cache
cache完全删除了缓存,并验证模块处于活动状态并正在工作。
catalog.xml
并在那里添加我的块,但是通过local.xml
更新却不行? 您好,我认为您可以在模块layout xml
添加<catalog_product_view>
标签
<catalog_product_view>
<reference name="content">
<reference name="product.info">
<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
<block type="videos/player" name="videoPlayer" as="videoPlayer" template="video/player.phtml"/>
</block>
</reference>
</reference>
</catalog_product_view>
这会对你有所帮助
链接地址: http://www.djcxy.com/p/59477.html上一篇: view doesn't show up