動的ブロックとは何か?

動的ブロックとはユーザー、時間帯、表示するページなどによって内容を変えることができるブロックです。EC-CUBE3の場合は独立したURIを持った1つの「ページ」だと考えれば本質に近いと思います。

Twigには別のページをテンプレート内に読み込む仕組みがあり、それを応用したものが動的ブロックです。EC-CUBE3の内部では次のようなコードでブロックの表示が実現されています。

(Twig参考) http://symfony.com/doc/current/templating/embedding_controllers.html

それでは実際に動的ブロックの作成手順を「新着商品ブロック」を作成しながら見ていくことにします。

手順1.コントローラを作成

ファイル:(新規作成)src/Eccube/Controller/Block/NewItemController

新規登録した商品を5つ抽出しテンプレートファイルに渡すロジックをコントローラに書いてやります。

手順2.テンプレートを作成

app/template/default/Block/new_item.twig

コントローラから呼び出されるテンプレートファイルです。今回は単に商品名を列挙するコードを書いておきます。

手順3.DBへブロックの情報を登録

SQL実行してブロックの情報をDBに登録します。phpMyAdminなどで行挿入してもかまいません。ここでlogic_flgを1にすることでコントローラが呼ばれるようになります。

管理画面から作成したブロックはlogic_flgが0になっていますので、もしコントローラで動作させたければ、このlogic_flgを1に変更すれば良いということになります。

手順4.コントローラとDBの紐付け

FrontControllerProvider.php

最後に正しいコントローラが呼ばれるようにコントローラとブロックをひも付けてやります。この設定がないと動作しません。

手順5.レイアウト編集よりブロックの配置

管理画面の「コンテンツ管理」「ページ管理」と進み、右端のメニューボタンから好きなページのレイアウト編集を選択してください。ブロックの配置画面になりますので、好きな場所に今作成した「新商品」というブロックを配置して完了です。

 

いかがでしょうか、以上で動的ブロックが動作するようになったと思います。

なお手順2と3は管理画面からブロック作成を行うことで省力化することが可能です。その場合logic_flgを1に変更することを忘れないようにしてください。

関連するカスタマイズ

Method not allowed / No route found for …エラー... EC-CUBE3でたまに確認されるエラー、Method not allowed エラーについて説明します。Whoops, looks like something went wrong.と怒られてしまった場合は、このエラーのことを思い出して見てください。 EC-CUBEにアクセスする場合、...
ページ内の好きな場所にブロックを設置する方法... ブロックは管理画面から設置できる便利な機能ですが、管理画面からは#headerや#main_bottomなどいくつか決められた場所にしかブロックを設置できません。 ではブロックを任意の場所で呼び出し表示したい場合はどうすれば良いのでしょうか? ブロックを管理画面以外から設置する場...
WordPressとEC-CUBE3のデータを連携する方法... WordPressでサイトのベースを作り、カートとしてEC-CUBEを連携させたいという要望がよく寄せられます。サイト内に共存させるだけならともかく、データの連携となると自分でカスタマイズするには敷居が高く感じる方が多いようです。 ただ、システムとしてはWordPressもEC-CUB...
注文確認画面のお届け日を変更する方法... 結論 : ShoppingServiceのgetFormDeliveryDates()を確認する。 config.ymlでdeliv_date_end_maxを設定すると表示される選択肢の日数を変更できる。 注文時に選択可能なお届け日を調整する方法をご紹介します。 この選択可能な日付のリス...

弊社はEC-CUBE公式インテグレートパートナーです。

カスタマイズやプラグイン開発お任せください