0

私はコントローラーを持っていて、そこから特定のphtmlページにリダイレクトしたいと思います。ページはapp\design \ frontend \ default \ mystuff \ template \ catalog \ product \ view\myphtml.phtmlに保存されます。

コントローラからこのページにリダイレクトするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

3

最新: 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

于 2012-07-20T16:02:59.987 に答える