WordPressの is_search() みたいなものをbaserCMSで実装する
[2014.1.2追記]
以下の記事はbaserCMS2系に関する内容です。baserCMS3に対応したコードを別記事で紹介していますので、よろしければご参照ください。
固定ページに記事の登録日とか更新日を出力する(baserCMS3編)
固定ページで記事の登録日・更新日を表示する方法を発見して(「固定ページに記事の登録日とか更新日を出力する」)いい気になっていたところ、ぶざまな状態をさらしていたのが判明しました。
検索結果一覧のページにまで日付が表示されていたのです。ぎゃふん。
このサイトでは登録日・更新日を表示するコードを、default.php に読み込むエレメント(page.php)に記述しています。通常、固定ページのコンテンツは
<?php $bcBaser->content() ?>
で呼び出されるわけですが、検索結果一覧のときはここに /baser/views/contents/search.php が読み込まれ(デフォルトの場合)検索条件に合う記事のタイトルや本文の抜粋が表示されるようになっています。
検索結果一覧にはそもそも登録日・更新日という概念がないので、page.php に何も考えずに書いた結果が、上に示したスクリーンショットだというわけです。
ということで必要になるのが、「検索結果ページを表示しているか否か」を判定する条件分岐タグ(関数)です。WordPressでいう is_search() ですね。baserCMSではどうやら、下のようなコードでいけそうなことがわかりました。
<?php if ( !empty( $this->data['Content'] ) ) : ?> // 検索結果を表示しているときの処理 <?php endif; ?>
検索結果一覧を表示するとき、配列 $this->data['Content'] に検索キーワードやカテゴリーがセットされるので、配列が空でない(=キーワードやカテゴリーがセットされている)ときに「検索結果ページにだけ適用したい処理」を書けばよいことになります。
今回やりたいことは「検索結果ページには登録日・更新日を表示させない」なので、最終的に下のようなコードになりました。
<?php if ( empty( $this->data['Content'] ) ) : ?> <p>最終更新日:<?php echo date( 'Y.n.j', strtotime( $bcPage->data['Page']['modified'] ) ) ?></p> <?php endif; ?>