開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. CMS >
  4. baserCMS >
  5. baserCMS2 Blogヘルパーを継承して投稿記事のURLのみを出力するためのヘルパーを作る
no-image

baserCMS2 Blogヘルパーを継承して投稿記事のURLのみを出力するためのヘルパーを作る

Twitterで下記ツイートに盛大に共感しました。

 

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