baserCMSで特定の固定ページで条件分岐して表示を変える方法
ヘッダーやフッターなど共通パーツの使い回しがしやすいCMSはホームページ制作者の強い味方です。
ただ、少しCMSの扱いに慣れてくると「このページの時だけバナーを追加したい」とか「このページの時だけ背景画像を変えたい」という場面も多いですよね。
今回はbaserCMSを使ったホームページ制作の時に、任意の固定ページの時だけ条件分岐して表示や処理を変えたい場合の書き方をご紹介します。
baserCMSで固定ページかどうかを判別するにはisPageが便利
baserCMSではisPageという関数が現在のページが固定ページかどうかを判定してくれます。なので、ブログの記事ページか固定ページかを判別したいときにはisPageを使って条件分岐を書けば良いでしょう。
ただ、このisPage関数は固定ページのIDやタイトルを拾ってくれるわけではないので、「〇〇の固定ページの時は表示を変えたい」というケースには向かないんですね。
それでは特定の固定ページのときだけ処理を分岐させるにはどうしたら良いでしょう。
任意の固定ページで条件分岐するならgetContentsNameが便利かも
baserCMSのgetContentsNameという関数は、現在表示しているページのURLを元にして第一階層までを文字列として返してくれます。関数について詳しくはリファレンスをご参考ください。
参考:baserCMS関数リファレンス/getContentsName
好きな固定ページを判別して条件分岐する場合は、次のように書くと良いでしょう。
1 2 3 | <?php if (strtolower($this->BcBaser->getContentsName()) === 'company') : > 表示させたいHTMLや処理を書く <?php endif; ?> |
上記のサンプルコードでは、見ているページのURLがhttp://xxxxx.com/companyのような場合であればif文の中の処理が行われます。
strtolowerは文字列を小文字にしてくれるPHP関数です。
getContentsNameは取得した文字列をキャメルケースで返すので、小文字に直す必要があるんですね。上記の例ではCompanyという文字列をcompanyに変換しています。
このようにbaserCMSで特定の固定ページを条件分岐するならgetContentsNameが便利そうです。
固定ページカテゴリー内にある固定ページで条件分岐する場合は?
それではもうひとつ応用です。
baserCMSではいくつかの固定ページを束ねる固定ページカテゴリーを作ることができます。
例えばcompanyというページカテゴリー内に、historyという固定ページを作ったとすると、URLはhttp://xxxxx.com/company/historyというようになります。
historyページが表示されているときだけ条件分岐したい場合にはどうしたら良いでしょう。getContentsNameはURLの第一階層を文字列として返すのでこのままではうまくいかなそうです。
そんな時にはgetContentsNameの引数にtrueを入れてあげましょう。
1 2 3 | <?php if (strtolower($this->BcBaser->getContentsName(true)) === 'companyhistory') : > 表示させたいHTMLや処理を書く <?php endif; ?> |
このサンプルコードのようにgetContentNameの第一引数にtrueを渡してあげるとURLの第一階層以下も返してくれるようになります。
今回はCompanyHistoryという文字列が返ってきてstrtolowerで小文字にしています。
baserCMSではこのように一意のURLを元にして固定ページの条件分岐を行うのがおすすめです。
getContentNameは固定ページ以外の条件分岐でも色々と使えそうですね。ぜひ試してみてください。
以上、baserCMSで特定の固定ページで条件分岐する方法でした!
ホームページ制作だけでなく、Webサイトの現状分析やインターネットを通じた採用活動のご要望にもお応えします。