忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/05/09 06:58 |
EC-CUBE 一部ページだけヘッダフッタを変更する
ヘッダやフッタは常に共通で、
/data/Smarty/templates/default/header.tpl
/data/Smarty/templates/default/footer.tpl

が使用されます。

また、ユーザで作成したテンプレがあれば、
/html/user_data/packages/default/header.tpl
/html/user_data/packages/default/footer.tpl

が優先して使用されます。


これでは、たとえばログイン画面などの一部のページだけ全然別のヘッダにしたいんだよ、といった場合に対応できません。
一番手っ取り早いのはExクラスで適当にフラグを突っ込んで、header.tplで場合分けでしょう。

/data/class_extends/page_extends/mypage/LC_Page_Mypage_Login_Ex.php

1
2
3
4
    function process() {
        $this->use_tpl_hoge=1;
        parent::process();
    }
/data/Smarty/templates/default/header.tpl
1
2
3
4
5
<!--{$use_tpl_hoge}-->
    違うヘッダ
<!--{else}-->
    いつものヘッダ
<!--{/if}-->

ですがまあ正直どうなのという作り方ですね。
どうにかしてみましょう。

テンプレートの割り当ては
/data/class/SC_View.phpSC_View::SC_View()、コンストラクタで行っています。

で、困ったことにLC_Page_Mypage_Login等のクラスはLC_Page_Mypage_Login::process()内でSC_Viewをインスタンス化して表示まで一気に行ってしまっています。
Exクラスから介入する余地がないんですよね。
毎度言ってますがなんでこんな適当な作りなんですかね。

具体的なロジックはここら辺になります。

1
2
3
4
5
6
7
8
9
10
11
12
    // ヘッダとフッタを割り当て
        $header_tpl = USER_PATH . USER_PACKAGE_DIR 
         . TEMPLATE_NAME . "/" . "header.tpl";
        $footer_tpl = USER_PATH . USER_PACKAGE_DIR 
         . TEMPLATE_NAME . "/" . "footer.tpl";
    // ユーザー作成のテンプレートが無ければ, 指定テンプレートを割り当て
        if (!$this->_smarty->template_exists($header_tpl)) {
            $header_tpl = TEMPLATE_DIR . "header.tpl";
        }
        if (!$this->_smarty->template_exists($footer_tpl)) {
            $footer_tpl = TEMPLATE_DIR . "footer.tpl";
        }

ユーザディレクトリ内にヘッダフッタがあればそれを割り当て、それが無ければデフォルトのテンプレートを割り当てています。
外部から値を渡すことができないので操作もできません。
結局該当のクラスを直接変更するしかありません。

LC_Page_Mypage_Login::process()の、SC_SiteViewをインスタンス化した直後あたりに以下を埋め込みましょう。

1
2
3
    //ヘッダフッタのテンプレートを変更する
        $objView->assign("header_tpl", TEMPLATE_DIR . "header_hoge.tpl");
        $objView->assign("footer_tpl", TEMPLATE_DIR . "footer_hoge.tpl");

全然どうでもいいんですがデフォルトのテンプレートに
<div id="fotter">
とか書いてあります。これはひどい。


EC-CUBEの記事
PR


2010/04/05 22:58 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<==NOVEL PHILOSOMA== 09 | HOME | 買ったものリスト 2010/04/04>>
忍者ブログ[PR]