isCategoryTop()とisBlogHome()のトップ判定について
TeddyBuddy > isCategoryTop()とisBlogHome()のトップ判定について @ 2014/8/14 13:15 |
---|
isCategoryTop()とisBlogHome()のトップ判定について、URLの末尾にスラッシュ("/")が付くかどうかで挙動が違うのですが、これはそういう仕様なんでしょうか?
○ページカテゴリーのトップを表示して $this->BcBaser->isCategoryTop() で判定した場合: URLの最後が /[ページカテゴリー名] → false URLの最後が /[ページカテゴリー名]/ → true ○ブログのトップページを表示して $this->BcBaser->isBlogHome() で判定した場合: URLの最後が /[ブログアカウント名] → true URLの最後が /[ブログアカウント名]/ → true ■ BaserCMS:3.0.5.1 ■ スマートURL:OFF ■ 設置フォルダ:サブフォルダ ■ OS:OS X 10.9.4 ■ PHP:5.4.24 ■ 利用データベース:MySQL 5.6.20 |
tecking > Re: isCategoryTop()とisBlogHome()のトップ判定について @ 2014/8/15 0:15 |
---|
TeddyBuddyさん
引用: isCategoryTop()とisBlogHome()のトップ判定について、URLの末尾にスラッシュ("/")が付くかどうかで挙動が違うのですが、これはそういう仕様なんでしょうか? 現状、そのような仕様になっていますね。$this->BcBaser->isCategoryTop() と $this->Blog->isHome() とでトップページの判定ロジックが異なっているので、ご指摘のような返り値となります。 ●前者のロジック (ソース /lib/Baser/View/Helper/BcBaserHelper.php の1618〜1632行) 1. 純粋なURLを $this->BcBaser->getHere() で取得。先頭の文字 / を削除。 2. 1が / で終わる場合、URLの末尾に文字列 index を追記。/ で終わらない場合 false を返す。 3. 2の文字列を / を区切り文字にして配列に格納。配列の要素が2個以上(例:カテゴリー名, index 等)なら true を返す。 ●後者のロジック (ソース /lib/Baser/Plugin/Blog/View/Helper/BlogBaserHelper.php の131〜133行、/lib/Baser/Plugin/Blog/View/Helper/BlogHelper.php の854〜859行) / の有無に関係なく、ブログプラグインからトップページ(=indexアクション)が呼び出されていれば true を返す。 ということで、ページカテゴリーのトップページに対して $this->BcBaser->link() 等でリンクをはる際は注意が必要ですね。 |
TeddyBuddy > Re: isCategoryTop()とisBlogHome()のトップ判定について @ 2014/8/15 21:14 |
---|
teckingさん、投稿ありがとうございました。
引用: 現状、そのような仕様になっていますね。$this->BcBaser->isCategoryTop() と $this->Blog->isHome() とでトップページの判定ロジックが異なっているので、ご指摘のような返り値となります。 ロジックの解説、ありがとうございます。 参考になりました。 引用: ということで、ページカテゴリーのトップページに対して $this->BcBaser->link() 等でリンクをはる際は注意が必要ですね。 どちらかに統一してもらえると一番良いのですが、現状で動作しないとかの問題ではないので、これらを使う時は気を付けて使いたいと思います。 |