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ヘルパーと同じメソッドも使えます。