EC-CUBE3.0の覚書き?その1
2021年5月28日EC-CUBE3.0の案件があったため、その覚書をついでに記載しておきます。
- デザインカスタマイズ方法
デフォルトページ
/src/Eccube/Resource/template/defaut/
この階層にデフォルトのページが格納されている
カスタマイズする場合は、この中身を/app/template/default/にコピーしてから作業を行います
※また自作のプラグインを作った場合は、/app/plugin/プラグイン名/Resource/templeate/プラグインのテンプレートに格納することを推奨しています。
- Twigの記述方法
Twigは、{{と}}に囲まれた個所で変数の出力や関数を実行することができます。
・ページの紹介文をTwigを利用して記述する場合は以下です。
<meta name=”description” content=”{{PageLayout.description}}”>
・ブロックblock.twigを呼び出す場合、
{{include(“block.twig”,{“Blocks”:PageLayout.Header}) }}
・また{% と %}で囲んだ部分でifやforの制御構文を実行します。
例)もしPageLayout.Headが存在する場合はblock.twingを読み込みする場合
{% if PageLayout.Head %}
{# ▼上ナビ #}・・コメント記述方法
{{include(“block.twig”,{“Blocks”:PageLayout.Head}) }}
{% endif %}
例2)Blocks変数で与えられたブロックを1つずつBlockという変数に入れて処理する
{% for Block in Blocks %}
<!?▼ {{ Block.name }} a
{% if Block.logic_flg %}
{{ render(path(“block_” ~ Block.file_name)) }}
{% else %}
{# 省略 #}
{% endfor %}
・変数の出力方法
<img src=”{{ app.config.front_urlpath}}/img/top/mv01.jpg”>
これはPHP側で $app[“config”][“front_urlpath”]に格納されている値と同じです。
Twing_EnvironmentクラスのaddGlobalメソッドで追加された値も利用可能です。
Application.phpの$BaseInfoには店名(shop_name)などの情報が格納されています。
$app[“twig”]->addGlobal(“BaseInfo”,$BaseInfo);
これをTwigで使う場合は、
{{ BaseInfo.shop_name }}
Application.phpでの初期化処理はすべてページ処理に共通した処理ですが、各ページやブロック毎にコントローラで渡される値も存在します。 この値はApplicationクラスのrenderメソッドで渡されます。
ProductController.php
return $app->render(“Product/detail.twig”,array(
“ttile” =>$this->ttile,
“subtitle”=>$Product->getName();
“form”=>$form->createView(),
“Product”=>$Product,
“is_favorite”=>$is_favorite,
));
Product\detail.twig
<li> {{ Product.name }} </li>
- Twigファイルの継承
Twigには継承という仕組みがあります。ECCUBE3でいうと各ページのTwigファイルに記述されている以下のコードが継承の部分にあたります。
{% extends “default_frame.twing” %}
このコードによって各ページのTwigファイルはヘッダー、フッター、ブロックなどw含むフレームを表示することができます。Default_frame.twingには以下の記述があります。
{# 省略 #}
<div id=”main_middle”>
<% block main %}{% endblock %}
</div>
{# 省略 #}
- ECCUBEのフォルダについて
app・・キャッシュファイル、ログファイルなど
html・・TemplateフォルダにJsやCSSファイルなどが格納される user_data、.htaccessもここ
src/eccube・・ここで機能のカスタマイズを行う
vender・・SilexやTwigのソースを格納 ここはいじらない
- データベースへの接続情報
app/config/eccube/datebase.ymlに記述
EntityとRepository
データベースの各テーブルはEntityとして扱います。 /src/Eccube/Entityフォルダ
EntitiyはRepositoryと呼ばれる補助用クラスを経由して利用されます。
$Other=$app[“orm.em”]->getRepository(“Eccube\Entity\BlockPosition”)
->findBy(array(
“anywhere” =>1,
“block_id”=>$data[“id”,$i],
));
Eccubeでよく利用するテーブルのRepositoryはEccubeServiceProviderクラスでまとめてApplicationクラスに保持しています。
- キャッシュのクリア
/app/cache/twig 内のファイルを削除します。
- 定数について
ymlファイルに定義された定数
mtb_という文字から始まるデータベーステーブル
root: /
admin_dir : admin/
というように:で区切って定数が指定されています。ymlファイルの場所
./src/Eccube/Resource/config
./app/config/eccube
なお、Applicationクラスで定数を読み込んでいます。
- デバッグの実行方法
/index_dev.phpを追加することで可能です。
/products/list?category_id=2 をデバッグする場合は以下のように足してURLを実行します。
/index_dev.php/products/list?category_id=2
※デバッグエラーは/html/index_dev.phpのallow=array() 内にデバッグしたいサーバーのIPアドレスを追加
- ログファイルのチェック
app/logフォルダ