最新:OP 表示需要单独显示此模板
如果您想只显示您的模板,您可以在控制器操作中执行此操作:
public yourAction()
{
$block = $this->getLayout()->createBlock('core/template')
->setTemplate('catalog/product/view/myphtml.phtml');
$this->getResponse()->setBody(
$block->toHtml()
);
}
您也可以使用布局 XML,在您的控制器中启动:
public yourAction()
{
$this->loadLayout(false)->renderLayout(); //false keeps default handle from loading
}
在(理想情况下)你的模块布局 XML 中,做:
<?xml version="1.0"?>
<layout>
<yourmodule_yourcontroller_youraction>
<block type="core/template" template="catalog/product/view/myphtml.phtml" output="toHtml" />
</yourmodule_yourcontroller_youraction>
</layout>
如果您需要知道完整的操作名称(yourmodule_yourcontroller_youraction),您可以通过echo $this->getFullActionName(); 在控制器操作中获取该信息。
最后,如果您尝试加载一个看起来像标准页面的产品视图页面,但您可以自己操作,您可以这样做:
public yourAction()
{
$this->loadLayout()->renderLayout();
}
然后在你的布局 XML 中:
<?xml version="1.0"?>
<layout>
<yourmodule_yourcontroller_youraction>
<reference name="content">
<block type="core/template" template="catalog/product/view/myphtml.phtml" name="your.block" />
</reference>
</yourmodule_yourcontroller_youraction>
</layout>
上一个:OP 表示他/她想要更改用于产品视图块的模板,并做出相应的回答。
Magento 的布局 XML 系统很好地处理了这个任务。由于您是最终实施者,因此您可以使用名为 local.xml 的特殊布局文件,该文件应位于您的自定义主题文件夹中(可能是 app/design/frontend/default/mystuff/layout/)。
文件应如下所示:
<?xml version="1.0"?>
<layout>
<catalog_product_view>
<reference name="product.info">
<action method="setTemplate">
<tpl>catalog/product/view/myphtml.phtml</tpl>
</action>
</reference>
</catalog_product_view>
</layout>
您的布局说明与所有其他说明一起合并和处理。作为参考,product.info 块是在 catalog.xml 布局文件中建立的。上面的说明可以用简单的英文表述如下:
对于由完整动作名称catalog_product_view 标识的渲染范围和在布局中由名称product.info 标识的块实例,使用参数catalog/product/view/myphtml.phtml 调用其setTemplate() 方法。