baserCMS2 Blogヘルパーを継承して投稿記事のURLのみを出力するためのヘルパーを作る
Twitterで下記ツイートに盛大に共感しました。
テーマ内にBlogヘルパーを継承した独自ヘルパーのMyBlogHelperクラスを作成
記事(引数$postに入れた記事)のURLを出力(echo)
記事のURLを取得
$blog->postLink($post)と書けるのが理想ですが、記述量も少なく手っ取り早い方法ということで一つ。
$blog->getPostUrl() blogの投稿記事のURLのみを取得(リンクタグは要らない) #basercms #欲しい関数
— Toru Kaneuchi (@Garyuten) November 6, 2013
baserCMSのBlogヘルパーを使うと$blog->getPostLink()で記事へのリンクをタグ付きで取得することができます。
ただ、aタグのhref属性などを細かく調整するために、URLのみを出力するメソッドがあればなあと思うことはよくあります。
この記事ではこの要望を疑似的に実現します。
最近はbaserCMS 3 betaの記事ばかり書いていましたが、今回はbaserCMS2系です。
環境
baserCMS2.1.2
方針
BlogHelperクラスにpostUrlメソッドがそのうち追加されるだろうと信じてそれまでの繋ぎ。テーマ内にBlogヘルパーを継承した独自ヘルパーのMyBlogHelperクラスを作成
使い方
記事(引数$postに入れた記事)のURLを出力(echo)
<?php $myBlog->postUrl($post) // 出力結果の例:/blog/archives/1 ?>
記事のURLを取得
<?php $url = $myBlog->getPostUrl($post); ?>
$blog->postLink($post)と書けるのが理想ですが、記述量も少なく手っ取り早い方法ということで一つ。
ヘルパーファイルを書く
BlogHelperのgetPostLink()を参考に書きます。/app/webroot/theme_name/helpers/my_blog.php
<?php /** * Blogヘルパーを継承してブログ記事のURLのみを出力できるようにする */ class MyBlogHelper extends BlogHelper { /** * 記事のURLを取得する * * @param array $post * @return string * @access public */ function getPostUrl($post) { $this->_setBlogContent($post['BlogPost']['blog_content_id']); $url = array('admin'=>false,'plugin'=>'','controller'=>$this->blogContent['name'],'action'=>'archives', $post['BlogPost']['no']); return $this->BcBaser->getUrl($url); } /** * 記事のURLを出力する * * @param array $post * @return void * @access public */ function postUrl($post) { echo $this->getPostUrl($post); } }継承しているのでBlogヘルパーと同じメソッドも使えます。