EC-CUBE4で参照しているページのURLを取得して、指定の文字列が入っているかどうか、条件分岐させて表示を切り替える方法をご紹介いたします。
カテゴリーによって商品一覧ページの表示を変えたり、特定のページのみで行いたい処理がある場合に便利です。
EC-CUBE4でURLに指定した文字列が入っていた場合に条件分岐させる方法
参照しているページのURLを取得するには、「app.request.server.get(‘REQUEST_URI’)」を使います。
ブロックやページのtwig内で以下のように記述すれば、簡単に条件分岐できます。
{% set request_uri = app.request.server.get('REQUEST_URI') %} {% if 'example' in request_uri %} <p>※URLにexampleが含まれている場合の表示</p> {% else %} <p>※URLにexampleが含まれていない場合の表示</p> {% endif %}
上記の場合、「{% if ‘example’ in request_uri %}」の部分で、URLに”example”が入っているかどうかを判別しています。
余談:URL全体を取得したい場合
app.request.server.get(‘REQUEST_URI’)では、URL内のドメインよりも後ろの部分が取得されます。「https://hogehoge.com/example」というページにアクセスした場合、”example”が返されます。
ドメイン部分を取得したい場合は、「app.request.server.get(‘SERVER_NAME’)」を使います。
例えばですが、ページのURLを表示したい時は、以下のように記述すればURL全体を表示できます。
{% if app.request.server.get('HTTPS') %}https{% else %}http{% endif %}://{{ app.request.server.get('SERVER_NAME') }}{{ app.request.server.get('REQUEST_URI') }}
app.request.server.get(‘HTTPS’)でプロトコルを判別してhttpsとhttpを出し分けています。
app.request.server.get(‘SERVER_NAME’)でドメイン、app.request.server.get(‘REQUEST_URI’)でドメインよりも後ろのアドレスを表示しています。
あとがき
ページのURLを取得できれば、色んなケースで活用できます。
ちなみに、Page.urlの値で判別する方法もありますので、状況に合わせて使い分けると良いですね。
{% if Page.url == 'homepage' %} <p>※トップページ</p> {% else %} <p>※トップページ以外</p> {% endif %}
キーワードやカテゴリによる検索結果など、特定のパラメータが指定されている場合に条件分岐したい時はapp.request.server.get(‘REQUEST_URI’)を使っていますが、もっとスマートなやり方があるかもしれません。