Zen Cartハイエンド版の特徴(2):addon_modulesで画面ブロックの柔軟なレイアウトを

前回は、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 の各機能を紹介していきます。