私はコントローラーを持っていて、そこから特定のphtmlページにリダイレクトしたいと思います。ページはapp\design \ frontend \ default \ mystuff \ template \ catalog \ product \ view\myphtml.phtmlに保存されます。
コントローラからこのページにリダイレクトするにはどうすればよいですか?
ありがとう!
最新: 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
呼び出します。setTemplate()
catalog/product/view/myphtml.phtml