このレシピは、コミュニティで質問に上げられた内容を元に書かれています。コミュニティのスレッドは流れがちになるので、このサイトでもご紹介しておきます。
【参考】 初期レイアウトの設定について
EC-CUBEの2系では、デザインテンプレートの変更が容易に行えるようになっています。そのため、デフォルトテンプレートのパッケージをダウンロードして独自カスタマイズし、再びアップロードする方も多いかと思います。
その際、デザインテンプレートが変更になるとブロックのレイアウト情報は一度削除され、テンプレートパッケージフォルダ内にある「_packagesフォルダ」→「sqlフォルダ」→ 「update_block.sql」が実行されます。この「update_bloc.sql」がデフォルトのレイアウト内容となっているため、テンプレートを変更するたびに、ブロックのレイアウトが元にもどってしまうのです。
ということは、このSQLファイルを調整すれば、テンプレート毎に合わせた自由なブロックレイアウトが可能になります。つまり、update_block.sqlに 「INSERT INTO dtb_blockposition …」とたくさん並んでいるかと思いますが、そのvalues以降をそれぞれ調整するわけです。
コミュニティスレッドと同じ例になりますが、update_block.sqlの中の1行をあげますと、
INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,5,1,0,'category');
valuesに「
(1,5,1,0,'category')」とありますが、これはその前にある「
(page_id,target_id,bloc_id,bloc_row,filename)」と関連があって、それぞれ「page_id→1」、「target_id→5」、「block_id→1」、「bloc_row→0」、「filename→category」という感じになっています。これはデータベーステーブルである「
dtb_blockposition」のカラム(フィールド)とその挿入データという関係になってます。
では、それぞれのカラムにどういった値がはいれば、どういう意味になるかということを簡単に説明します。
- page_id ・・・ 1はトップ、2は一覧、3は詳細・・・
- target_id ・・・ 1は左カラム、2は中央上部カラム、3は右カラム、4は中央下部カラム、5は未使用ブロック
- block_id ・・・ ブロックの番号。1がカテゴリブロック、2がガイドブロック・・・
- bloc_row ・・・ 同じtarget_idのブロックがあった場合の並び順。小さい順にならびます(1から順に)。ちなみに、target_idが5(未使用ブロック)のときは全部0でもOKみたいです。
- filename ・・・ ブロックテンプレート名です。tplが省略されているのだと思います。
つまり、上部のSQL文は、トップページにおけるレイアウト設定で、未使用扱いになっているカテゴリブロックということがわかります。
上記に従って適切なSQLファイルを入れておけば、テンプレートを選択時にテンプレートに合わせた設定どおりにブロック設置されたレイアウトになることでしょう。
ちなみに、
デフォルトのSQL文にはあとから追加した新規ページの分のSQLが設定されていません。その為、新規ページ作成分のSQL文は、すでにあるSQL文を参考に追加する必要があります。