EC-CUBE3 テンプレート上で表示件数を数えて表示を変える

最近EC-CUBE3を使用しておりましたので、今回もそれ関係の記事を書きたいと思います。

EC-CUBEは株式会社ロックオンの商標です
EC-CUBEは株式会社ロックオンの商標です

検証環境は”EC-CUBE3.0.12″になります。

テンプレート上で表示件数を数える方法

EC-CUBE3は一般的なショッピングサイトを開きたいのでしたら、それはもうピッタリで、プログラミングの知識が無くともサイトが構築できます。さらに設定項目も細かく、プラグインは多いとは言い難いですがそれなりに公開されており、カスタマイズも行えます。細かい不具合があったり、フックポイントの設置が適当だったりしますが、これだけのものが無料で使えるのですから有難いです。

間口が広いとちょっとしたことでも需要があるのではと思い、今回は”テンプレート上で表示件数を数える方法”について記載します。

まず前提としまして

EC-CUBE3は”Silex”というフレームワークを使用して構築されており、画面出力は”Twig”というライブラリで行われています。

Documentation – Twig – The flexible, fast, and secure PHP template engine

残念ながらおそらく日本語ドキュメントは無いものと思います。最近のドキュメントはやたらと読みやすく、単語とサンプルコードみれば大体何とかなります。なるはなるのですが、億劫かと思います。でしたら、こちらで何となく理解したつもりになるのがよろしいかと思います。

テンプレートの基本 | Symfony2日本語ドキュメント

“Silex”は”Symfony2 Components”で成り立っていて、それ越しに”twig”が動いているみたいなので、このドキュメントに書いてあることはEC-CUBE3でも使えます。

本題です

話が脱線しました。テンプレート上で表示件数を数えるのは簡単です。”length”フィルターというものがあるのでこいつを利用してください。

{{ pagination|length }}件

フィルターは”|”で区切った左の変数を、右に指定したフィルターを通した結果が返るイメージです。今回は”pagination”を”length”フィルタで件数に置き換えられます。”twig”上では通常のPHPの記載ができませんので、このように書きます。

そしてフィルタはif文の判定でも使用できます。個人的にはエラーになりそうな書き方に思えてビックリしました。

{% if pagination|length > 0 %}
  <span>商品が1件以上あります。</span>
{% else %}
  <span>商品が1件もありません。</span>
{% endif %}

Documentation – Twig – The flexible, fast, and secure PHP template engine

今回は簡単な内容では御座いましたが、素人の方も利用されるものですので、ちょっとしたことでお困りになられることもあるかと思いましたので記載してみました。

以上です。