你很亲密。core/template
您需要使用能够检查当前产品的类,而不是将块类型设置为。该catalog/product_abstract
块具有这些功能。为您的布局文件执行此操作:
<reference name="right">
<block type="catalog/product_view" name="catalog.product.video" template="catalog/product/view/video.phtml" />
</reference>
然后,在您的视频文件中:
<p>
<?php $_product = $this->getProduct(); ?>
<?php if($_product->getVideoid()): ?>
<iframe width="330" height="253" src="http://www.youtube.com/embed/<?php echo $_product->getVideoid(); ?>" frameborder="0" allowfullscreen></iframe>
<?php endif; ?>
</p>
编辑:
如果您在 CMS 页面上使用它,那将变得更具挑战性。您需要确定要检索视频的产品。有很多方法可以做到这一点。如果您在 CMS 页面中使用布局更新,您可以执行以下操作:
<reference name="right">
<block type="catalog/product_view" name="catalog.product.video" template="catalog/product/view/video.phtml">
<action method="setProductSku"><sku>sku-here</sku></action>
</block>
</reference>
然后,在您的视频文件中:
<?php $_product = Mage::getModel('catalog/product')->load($this->getProductSku(), 'sku'); ?>
<?php if ($_product->getId() && $_product->getVideoid()): ?>
<p>
<iframe width="330" height="253" src="http://www.youtube.com/embed/<?php echo $_product->getVideoid(); ?>" frameborder="0" allowfullscreen></iframe>
</p>
<?php endif;?>
我建议使用这种方法,因为这听起来好像您不太熟悉创建自己的模块。我强烈建议您查一下,因为我在这里向您展示的并不是最佳实践,即在块模板文件中加载模型。它应该被移动到它自己的块类中(可以扩展Mage_Catalog_Block_Product_Abstract
,并覆盖该getProduct()
方法)。
编辑#2:
可以使用产品 ID。在布局 xml 中,更改
<block type="core/template" name="catalog.product.video" template="catalog/product/view/video.phtml">
<action method="setProductId"><id>id-here</id></action>
</block>
在模板代码中,使用这一行:
<?php $_product = Mage::getModel('catalog/product')->load($this->getProductId()); ?>