- 2018.01.15
- [最終更新日]2018.01.17
- EC-cube
【EC-cube3】新着情報のカスタマイズ

EC-cubeには、新着情報を更新する機能があるけど、ブロックで完結する形式となっています。
WPというCMSに慣れてしまった現代社会では、せめて別ページで表示させたいという案件があっても仕方がないのかもしれません。
意外といろんなところを触らないといけないので忘れないようにメモ。
ブロックテンプレートを複製
管理画面からでいいと思いますが、news.twigを複製・編集してnews2.twigのような新しいテンプレートファイルを作成します。
ブロック作成時の注意点
Twigファイルのコードだけをコピーしても利用できない場合があります。
今回のように新着情報のブロック「news2.twig」をnews.twigのコードを流用しても、それだけでは新着情報を表示できません。
ブロックを表示するためには、プログラムがデータベースから取得したデータを表示する必要があるためです。
新着情報の場合、/src/Eccube/Controller/Block/NewsController.phpの処理です。
コントローラーの編集
/src/Eccube/Controller/Block/NewsController.phpを編集します。
場合によっては、このファイルを複製してしまうのもありかもしれませんが、
今回はその必要がなさそうなので、編集します。
return $app->render('Block/news2.twig', array( ・・・
といった感じにテンプレートを指定してあげます。
コントローラープロバイダーの編集
src/Eccube/ControllerProvider/FrontControllerProvider.phpを編集します。
こちらのファイルで「ルーティング」というものを指定してあげます。例えば、
$c->match('/block/news', 'EccubeControllerBlockNewsController::index')->bind('block_news');
$c->match('/block/news2', 'EccubeControllerBlockNewsController::detail')->bind('block_news2');
といった感じです。
最後に忘れがちなこれ!
DB(データベース)内、dtb_blockを編集
「logic_flg」の値を 0→1に変更する。
ブロックの仕組みを理解する
サブリクエストとは実際にHTTPリクエストを行うわけではないのですが、Symfonyのリクエストの仕組みに近い形でHTMLを取得してその結果をページ内に利用できる機能です。