前回は、addon_modules の構成とインストール方法をご紹介しました。
しかし前回の設定では、ユーザー側にはモジュールをどこに表示するかを指定していないため、フロント(来訪者が閲覧する)側には何も反映されません。どこに表示するかを指定する方法について、今回は説明します。。
Zen Cart には、サイドボックスに includes/modules/sideboxes/ のモジュールを割り当てる機能があります。どれがON(表示)で、どの順番で表示されるかが分かりやすい構成になっています。
▲サイドボックスの表示設定 (※図版はクリックで拡大します)
サイドボックスでは左右が指定できますが、addon_modules ではレイアウトの指定を「ブロック」という単位で「ヘッダー・フッター、左右サイドボックス、メインコンテンツ内の上下」のいずれかに配置することができます。
▲ブロックの設定 (※図版はクリックで拡大します)
ブロックの編集により、表示位置を「main」にした場合は、CSSセレクタにより任意の位置に設定ができます。
以下の画像の場合は、HTMLの id="breadcrumb" の箇所をこのブロックで置換します。id="breadcrumb"は、通常ですとパンくずメニューが表示される部分ですから、パンくずの出力を通常の表示内容から変更することができます。
※挿入位置指定には、置換の他に「直後、直前、要素外直後、要素外直前」が指定できます。
▲ブロックの編集 (※図版はクリックで拡大します)
下のチェックボックスに全画面一覧が出ているのですが、これにチェックを入れた画面だけ表示する(もしくは、入れたものだけ非表示にする)という指定ができます。これにより、サイドボックスはカート画面では表示しないようにするとか、注文確定の画面にだけ表示する、といった細かな指定が可能です。
上記のようにCSSセレクタで指定するのは面倒だし、独自のテンプレートの任意の位置にaddon_modulesの出力ができないの!? と思われる人もいるかもしれませんね。
──はい、そのようにできます!
echo $GLOBALS['{モジュールクラス名}']->getBlock('{ブロックメソッド名}', $current_page_base);
例:
echo $GLOBALS['multiple_image_view']->getBlock('block_expd',$current_page_base);
テンプレートなどに上記のように記述すると、任意のモジュール内のブロックが実行可能です。
CSSセレクタを利用しなくてもピンポイントにモジュールの表示が可能になります。
次回は、addon_modules の各機能を紹介していきます。