2014年11月26日水曜日

【ECキューブ】ECcube雑多メモ

仕事でECcubeを触ることになったのでいくつか細かいことをメモ。
前職でもECキューブは多少触ったのですが今の仕事ではよりプログラミング的な場所を扱っています。

【テンプレートで、配列のサイズを表示する】
<!--{配列|@count}-->
モディファイラ「count」を使い、さらに、その頭に「@」を付ける。


【独自プラグインを作る】
 \data\module\Smarty\libs\plugins のディレクトリに、「function.任意の関数名.php」の名前でファイルを作る。
ファイルの中身は、

-----------------------------
function smarty_function_任意の名前($params, &$smarty){
    //任意の処理
     return 任意の値;
}//function
-----------------------------
こういう感じ。

サンプルプラグインをGitHubにおいてみました。
https://github.com/ishiitakeru/Eccube_plugins/blob/master/function.dump.php


【プラグイン側からテンプレート変数を作る】
$smarty->assign("変数名", 値);

のように書くと、テンプレート側で
<!--{$変数名}-->
という変数になる


【繰り返し処理】
for($i = 0; $i<5; $i++){}//for

の書式をECキューブで表現する。

繰り返しにはsectionタグを使う
<!--{section name="count" loop=4 start=0 step=1 }-->
<!--{/section}-->

<!--{section
    name = "識別子" ループ内で「<!--{配列名[識別子]}-->」と書くと、ループ中のインデックス番号が入る。$は不要。クオーテーション忘れずに。単独では出力できず、配列のインデックスとして使う。
    start= スタート番号
    loop = ループの終わりインデックス番号(または配列のテンプレート変数)
    step = インデックス番号の増分
}-->


ループ回数のインデックス番号は「<!--{$smarty.section.name属性値.index}-->」となる。
<!--{section
    name="CheckedItems"
    loop=10
}-->
    <p><!--{$smarty.section.CheckedItems.index}--></p>
<!--{/section}-->


【データベースをいじらないと使えない変数】
ECキューブが使ってるのに自分が書くと使えない、ECキューブの関数について。
こういうやつ
■<!--{$arrCartList}-->
■<!--{$tpl_login}-->

どうもこれらを使うには、データベースをいじらないといけないらしい。
該当テーブル「dtb_bloc」
該当コラム「php_path」


【$arrTree】
商品カテゴリの連想配列。
$arrTree を使うには frontparts/bloc/category.php がdtb_blocテーブルでこのブロックに関連付けられている必要がある。

$arrTree[0].level
$arrTree[0].category_id
$arrTree[0].category_name|h
$arrTree[0].product_count|default:0
みたいにつかう。


【クッキーの使い方】
<!--{$smarty.cookies.クッキー名}-->

【配列】
<!--{$配列名[インデックス番号]}-->

【連想配列】
<!--{$連想配列名.キー名}-->

【HOMEのURL】
<!--{$smarty.const.TOP_URL}-->

【選択中のデザインテンプレートのディレクトリ】
<!--{$TPL_URLPATH}-->
「/user_data/packages/default/」みたいな文字列

【サイトのルートディレクトリ】
<!--{$smarty.const.ROOT_URLPATH}-->
「/」みたいな文字列

【商品画像の保存パス】
<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->

【商品の詳細ページ】
<!--{$smarty.const.P_DETAIL_URLPATH}-->

【ログイン状態を調べる】
ログイン状態を調べるプラグインを作成しました。
ログインブロックなどが使っている変数はデータベースをいじらないと他のブロックで使えないので。
https://github.com/ishiitakeru/Eccube_plugins/blob/master/function.getter_login_condition.php

0 件のコメント:

コメントを投稿