Magento では、できればまったく新しいモジュールを作成せずに、既存のモジュールのレイアウトを自分のテンプレートにロードするにはどうすればよいですか?
例: 「ユーザー アカウント ダッシュボード」レイアウトを読み込みたいが、デフォルトとは別に外観を制御できるように読み込みたい。
構造は次のとおりです。
URL「ポータル」で CMS ページを作成しました。したがって、ナビゲーションは「http://website.com/portal」です。
CMS ページは「include()」を使用して「/root/portal/portal.php」をロードします。ここで、Mage_Page_Block_Html を拡張するクラスを定義します。
次に、既存のダッシュボード レイアウトからダッシュボードにロードする関数「renderDashboard()」を追加しました。
テンプレートとして使用するために、「/app/base/default/customer/account/dashboard.phtml」を「/root/portal/content/dashboard.phtml」にコピーしました。「dashboard.phtml」内で、「$this」オブジェクトを以前の「dashboard.phtml」とまったく同じように機能させたい
"/root/portal/portal.php"
class Portal_Block extends Mage_Page_Block_Html
{
public function renderDashboard()
{
$layout = Mage::getSingleton('core/layout');
//Load existing "customer/account_dashboard" block into my own "dashboard.phtml"
$block = $layout->createBlock('customer/account_dashboard')->setTemplate('/root/portal/content/dashboard.phtml');
//Need to now add it
//$block->renderLayout();
}
}
これが不可能な場合は、ポータルのアカウント ダッシュボード モジュール全体を書き直す必要があります。