ECCUBE3サイドブロックに独自メニューを設置する方法

 
ECCUBE3サイドブロックに独自メニューを設置する方法

ECCUBE3のデフォルトテンプレートではカテゴリナビゲーションが上部に設置されます。カテゴリがそれほど多くない場合は問題ないのですが、カテゴリが多い場合にはやはりサイドブロックにメインメニューがあるほうがスマートですよね。

今回はカテゴリメニューブロックの内容をコピーして独自メニューブロックを作成する方法を紹介します。

サイドブロックに独自メニューを設置

既存カテゴリメニューブロックの内容をコピーする

管理画面の「コンテンツ管理」→「ブロック管理」→「カテゴリ」の編集をクリック。

【ブロックデータ】の内容をテキストエディタなどにコピーしておきましょう。

既存カテゴリメニューブロックの内容をコピーする

新規ブロックを追加する

管理画面の「コンテンツ管理」→「ブロック管理」最下部の【新規入力】より新規ブロックを追加します。

サンプルとして以下のように設定します。

ブロック名:メインメニュー
ファイル名:mainmenu

新規ブロックを追加する

データベースのロジックフラッグを変更する

ブロックを新規追加しただけでは実際にはまだ表示はされません。表示させるためには追加したブロックのロジックフラッグをデータベースで直接編集する必要があります。

データベース「dtb_block」より追加した「mainmenu」のロジックフラッグを「0」から「1」へ変更します。

データベースのロジックフラッグを変更する

ECCUBE3構成ファイルよりコントローラーを登録

続いて追加した「メインメニューブロック」のコントローラーを登録します。

/src/Eccube/ControllerProvider/FrontControllerProvider.php

FrontControllerProvider.phpに「//block」が定義されている箇所があるので以下の一文をブロック定義部の最下部に追加します。

上記はファイル名を「mainmenu」にした例です。変更した場合は修正してください。

ECCUBE3構成ファイルよりコントローラーを登録

ECCUBE3構成ファイルよりコントローラーを作成

コントローラーの登録ができたら続いてコントローラの作成を行います。今回は既存のカテゴリメニューをコピーして新しいメニューを作るので以下のファイルをそのままコピーして「MainMenuController.php」リネームします。

/src/Eccube/Controller/Block/CategoryController.php

リネームしたファイルの内容をリネームしたものに変更。

↓に変更

実際にブロックを配置して確認してみる

管理画面の「コンテンツ管理」→「ページ管理」→「TOPページ」のレイアウト編集をクリック。新しいブロックがうまく作成できていれば未使用ブロックにメインメニューというブロックができています。

これを#side_leftへドラッグして配置してトップページを確認しましょう。

実際にブロックを配置して確認してみる

トップページにサイドバーに表示されていれば成功です。

サイドバーに表示されたメニューのカスタマイズはまたの機会に!