EC-CUBE:オリジナルページでページレイアウト処理を無視したい

この記事はEC-CUBE:Ajax処理等で通常ページ出力をしたくない場合は?と合わせて読んでいただくとさらに役に立つと思います。
EC-CUBEでは、管理画面でページテンプレートを作成すると、ヘッダーやフッター、メニュー等を自由に配置してレイアウト情報を作成できますが、逆にこのような処理をスキップしたい場合もありますよね。
たとえばAjax的な処理であるとか、HTMLではない情報を返したりとか。 オリジナルでプラグインを作成する場合にも独自ページなんかはこういったページレイアウト処理を省きたいものです。
しかし、通常は強引にシステムが「テンプレート、あるんでしょ?」というような処理を行うため、管理画面でテンプレートを用意していないと次のような警告(Warning)を吐かれてしまいます。
- Warning(E_USER_WARNING): ページ情報を取得できませんでした。…
- Warning(E_USER_WARNING): メイン部のテンプレートが存在しません。…
どこでページレイアウト情報が組み込まれているのか?
このページレイアウト処理が行われているのは「LC_Page::init()」の以下の部分。
if (!$this->skip_load_page_layout) { $layout = new SC_Helper_PageLayout_Ex(); $layout->sfGetPageLayout($this, false, $_SERVER['SCRIPT_NAME'], $this->objDisplay->detectDevice()); }
skip_load_page_layoutプロパティ
よく見ると分岐がありますね。 そう、これがページレイアウトを無視できるプロパティ「skip_load_page_layout」です。 これを自作のページクラスのinit()中にtrueで設定すればOKです。
class myOriginalPageClass extends LC_Page_Ex { function init() { $this->skip_load_page_layout = true; ...(その他の独自処理)... parent::init(); } ...(以下略)... }
parent::init()の中で処理が行われるので、skip_load_page_layout を true にする前に呼び出さないように注意してくださいね。
世界一やさしい問題解決の授業―自分で考え、行動する力が身につく
¥1,241 (2025-04-19 16:22 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)トゥルース・シーカーズ ~俺たち、パラノーマル解決隊~
(2025-04-19 16:22 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)問題解決力を鍛える!アルゴリズムとデータ構造 (KS情報科学専門書)
¥1,650 (2025-04-19 16:22 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)2013-10-23