メニュー

【baserCMS】ブログ記事内容だけでなく、getBlogsを活用してブログタイトル名を出力する

TOPページでブログ記事を出力するとき、ブログタイトル名を取得した上で記事を出力したいと思った。(ブログタイトル名は、管理画面の「『ブログタイトル名』>設定」のタイトルで設定した名前)
公式サイトの関数リファレンスを確認するとgetBlogsという関数があったため、blogPostsと一緒に活用することに。

対応方法

テンプレート側のファイル「Layouts/default.php」には、TOPにだけ表示するよう$this->BcBaser->isHome()から分岐する。

今回はサンプルとしてブログ投稿「news」を3件取得する。(ブログ投稿「news」は、管理画面の「『ブログタイトル名』>設定」のURLで設定した名前)

<?php if($this->BcBaser->isHome()): ?>
  <div class="blogs">
    <div class="blogs-inner">
      <?php
        $blogs = $this->BcBaser->getBlogs('news');
        if($blogs):
      ?>
        <article class="con-m">
          <div class="con-inner">
            <h2 class="blogs-title">
              <?php echo h($blogs['Content']['title']) ?>
            </h2>
            <?php
            $args = array(
              'direction' => 'DESC'
            );
            $this->BcBaser->blogPosts($blogs['Content']['name'],3);
            ?>
          </div>
        </article>
      <?php endif ?>
    </div>
  </div>
<?php endif ?>

その他メモ

blogPostsの挙動はBlog/default/posts.phpの有無で変わる。Blog/default/posts.phpがなければデフォルトのul表示になる。
Blog/default/posts.phpで設定した表示形式を使うのであれば、optionsにtemplateを指定しなくても問題ない。

ブログタイトル名→$blogs[‘Content’][‘title’]
ブログスラッグ→$blogs[‘Content’][‘name’]
ディスクリプション→$blogs[‘BlogContent’][‘description’]