こんにちは。LOOPの奥田です。
いつもエアコンの風が直撃する席に座っているので、暑くなってきたこの季節は冷房の風が寒すぎてガタガタ凍えながら仕事をしています。
そんな私ですが、私は一応デザイナーとして弊社に所属しているので、基本的にコーディング門外漢。
軽くHTMLを変更する程度の簡単なことしかできません。
ですが弊社みたいな少人数の会社ではそういう業務も回ってきたりします。
それこそec-CUBEを扱うなんて無理無理!!
と叫びたいようなところですが、
特に年度末などの繁忙期などはそうも言っていられない時もあるのが現状です。
これも勉強!と自分を励ましつつ、
今回は、先月末に私が必死でec-CUBEをいじくり回していた中でこれ重要だったなと思うコードを一つ記録しておこうと思います。
※ec-CUBE玄人の方には「そんなのもう知ってる」と思われるような内容ですので悪しからず。
商品一覧ページにのみ表示することは無理?
※ただの余談ですのでコードだけコピペしたいんだって方は読み飛ばしてください
デザイン上で作成していた商品一覧ページのテキスト。
これをそのままec-CUBEの作業は外注さんにお願いするはずだったのですが、弊社社長曰く「ec-CUBEでは無理」とのこと。
商品一覧は統一されているので、他のページにもテキストが表示されてしまうのが問題だったんです。
商品一覧にコンテンツは無しの方向でシステム構築をお願いすることになった後、
お客様にどうにか説明しなければと考えていたところに、
さらにお客様から追加注文が来てしまいます。
曰く「回遊リンクを追加したい。」
回遊リンクというのはカテゴリ分けしたページへのボタンですね。
確かにあったほうが良いけど可能かどうかわからない。
しかも外注してしまった後だから追加となると追加料金発生してしまう。
ちょっとやり方調べてみます……とお答えするしかなかったです。
商品詳細には表示できるのになぜ?
商品一覧のURLはこれ。
https://00000/products/list
そして調べた結果。
使えそうなのが以下のコードでした。
{% set request_uri = app.request.server.get('REQUEST_URI') %}
{% if request_uri == '/AAA/' %}
{# URLにAAAが入っている場合BBBの内容を出力する #}
{{BBB}}
{% endif %}
このコードを使えば
例えばhttps://00000/AAA/のように、
「AAA」がURLにある場合そのURLのページでだけBBBの内容を表示させるということができます。
ただこのコードのままだと、今回やりたい
⚫︎https://00000/products/list には表示させる
⚫︎https://00000/products/list?category_id=000 には表示させない
ということができないんです。
なにせどっちのページにも/products/listが入っているから。
どうすればいいんだ……と再び頭を抱え、
何か方法はないのかと調べて考えた結果思いついたのが以下でした。
解決方法
{# 商品一覧のみ表示 #}
{% set request_uri = app.request.server.get('REQUEST_URI') %}
{% if 'products/list?' in request_uri %}
{% else %}
{{CCC}}
{% endif %}
理屈としては、
⚫︎products/list?はBBBを表示する
⚫︎BBBを空欄にする
⚫︎products/list?の無いページはCCCを表示させる
というやり方。
products/list?の無いページというのはproducts/listしかないので、
結果products/listにだけCCCを表示させることができるというわけです。
そして実装してみましたが、これがちゃんと成功しました。
よかったよかった。
今回はこの辺で。
最後までお付き合いくださりありがとうございました。
参考にしたサイト
https://ict-yorozu.com/ec-cube/ec-cube4-if-toppage/
https://techmemo.biz/ec-cube/ec-cube4-requesturi/