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

eccubeのページレイアウト管理画面

この記事は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 にする前に呼び出さないように注意してくださいね。

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

2013-10-23