らくうるカートの全面カスタマイズ依頼を初めてお受けしたので、テンプレート編集で引っかかったところを記録しておきます。
進行につれ気になる点が出てくれば追記しますが、あまり無いかも。
もくじ
djangoテンプレートだが、ほぼ気にしなくて良い
前にちらっと書きましたが、らくうるカートのテンプレート編集(HTML編集)をひらくとdjango(ジャンゴ)で出来ていることが分かります。python製のテンプレートです。
しかしながら、テンプレートに勝手にタグやフィルターを追加しようとするとシンタックスエラーが出て更新できません。
基本のifとforしか使えないので、別にpythonもdjangoも知らなくて大丈夫です。
コメント( {# コメントをかく #} )は大丈夫でした。
if forの書き方
HTMLとCSS以外は明るくない方のために、基本のifとforの書き方だけ残しておきます。
if
{% if (条件)%}
trueの場合のhtmlを記述
{% else %}
条件に当てはまらないときのhtmlを記述
{% endif %}
演算子(== , != , is , is not など)やand or は使えますが、elifタグは使えませんでした。else ifは大丈夫。
for
ほとんどが商品の一覧呼び出しなので、新着商品を例に。
{% for item in itemRecentList %}
新着商品(itemRecentList)に登録されている商品情報が繰り返し処理されます
{% endfor %)
emptyタグは使用出来ませんでした。(エラーがでる)
forloop.first 、forloop.lastも使用できません。エラーは出ませんが無効です。
forloop.counterも使用できません(エラー)が、テンプレートを見ていると「●●●ItemCounter」というタグがあり、これが利用できそうです。
例えば、ナビゲーションでカテゴリー一覧をループで表示させるとき、
{% for item in categoryList %}
{% if categoryItemCounter == 1%}
<!-- 最初の要素 -->
{% else %}
<!-- 2番め以降の要素 -->
{% endif %}
とすると、if forloop.first の代わりになります。
フィルターやif for以外のタグは使えない
全部試したわけではないですが、フィルターは使えないと思って差し支えないと思います。(追記:lengthは使えそうです。)
テンプレート用の変数がわりと細かく用意されているので、フィルターいらないかなとは思いました。pprintは使えてほしかったのですが。。
タグも多分if for 以外はことごとく拒否されます。
{% itemRecentList %}、{% not itemRecentList %}のように、タグを省略した書き方もNGです。
java scriptは共通HTMLのみ
他のショッピングカートサービスだと、たとえば商品詳細ページの途中にいきなりJS書いてもOKだったりするのですが、らくうるカートではエラーがでます。
共通HTMLの末尾ないしheadタグに記述しましょう。
直接、ページを振り分けるための変数はありませんが、各ページにしか存在しない変数を使って振り分けることは可能です。
追記:ページ振り分け用の「shopBlckTypeId」という変数がありました。見落としていました。
これから他にも出てくれば追記します。
webPファイルもアップロードできる
できるかな〜? でやったら出来てしまったのがwebP画像のアップロード。編集画面から直接アップロードする商品画像などにはアップロードできませんが、ファイル管理からのアップロードは可能なので、置き換え可能なところは全部webPにできました。
とても重要な注意点
らくうるカートのシステムは、30分画面の遷移がなければ勝手にタイムアウトします。
商品編集やテンプレート編集、送料ルールの設定などに時間をかけてしまうと、【保存】を押した瞬間に絶望することになります。30分以上、同じ画面にとどまらないように細心の注意を払いましょう。