■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

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() 等でリンクをはる際は注意が必要ですね。


どちらかに統一してもらえると一番良いのですが、現状で動作しないとかの問題ではないので、これらを使う時は気を付けて使いたいと思います。
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
34 人のユーザが現在オンラインです。 (31 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 34