あなたは何も悪いことをしていません - あなたのディレクティブはエンティティデータによって上書きされています。その理由については、次を参照してくださいMage_Cms_Helper_Page::_renderPage()
。
protected function _renderPage(/*...*/)
{
//snip...
$action->getLayout()->getUpdate()
->addHandle('default')
->addHandle('cms_page');
$action->addActionLayoutHandles();
if ($page->getRootTemplate()) {
$handle = ($page->getCustomRootTemplate()
&& $page->getCustomRootTemplate() != 'empty'
&& $inRange) ? $page->getCustomRootTemplate() : $page->getRootTemplate();
$action->getLayout()->helper('page/layout')->applyHandle($handle);
}
//snip...
}
cms_page_view
したがって、ディレクティブは、呼び出しによって追加される完全なアクション名 handle の下で処理されてい$action->addActionLayoutHandles();
ます。CMS ページは実際には常に管理者によって値とともに保存されroot_template
ますが、この値は常にファイルベースのディレクティブを上書きします。
データを更新することは可能ですが、次の場合に上書きされる危険があります。ページが管理者経由で編集されたときに保持される代替テンプレートを提供するには、いくつかの構成値と対応するレイアウトを指定する必要があります。 XML。カスタム モジュールの構成 XML で (または、app/etc/local.xml
これが配布されていない変更の場合は で):
<global>
<page>
<layouts>
<cms_page_custom>
<label>Empty</label>
<template>page/cms-page.phtml</template>
<layout_handle>cms_page_custom</layout_handle>
</cms_page_custom>
</layouts>
</page>
</global>
これにより、CMS ページの管理中に入力を選択するオプションが提供されます。この作業を完了するには、カスタム レイアウト XML で次のようにします。
<cms_page_custom>
<reference name="root">
<action method="setTemplate"><template>page/cms-page.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
<action method="setLayoutCode"><name>empty</name></action>
</reference>
</cms_page_custom>