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

$this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある

TeddyBuddy > $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/8/7 3:46
■ BaserCMS:3.0.5
■ スマートURL:OFF
■ 設置フォルダ:サブフォルダ
■ OS:OS X 10.9.4
■ PHP:5.4.24
■ 利用データベース:MySQL 5.6.19

$this->BcBaser->element('global_menu')を入れると、


<ul class="global-menu clearfix">
<li class="menu01 first">
<a href="/basercms/index.php/menu01">メニュー1</a></li>
<li class="menu02">
<a href="/basercms/index.php/menu02">メニュー2</a></li>
<li class="menu03">
<a href="/basercms/index.php/menu03">メニュー3</a></li>
<li class="menu04">
<a href="/basercms/index.php/menu04">メニュー4</a></li>
<li class="menu05">
<a href="/basercms/index.php/menu05">メニュー5</a></li>
<li class="menu06 last">
<a href="/basercms/index.php/menu06">メニュー6</a></li>
</ul>


といった具合に展開されるかと思います。
この時、現在見ているページとメニューが一致する時にLI要素のクラスに"current"と入るはずなのですが、
選んだページによって入る時と入らない時があります。
上の例の場合だと「メニュー2」「メニュー5」「メニュー6」のページを開いた時はそれぞれのLI要素のクラスに"current"と入ったのですが、それ以外のページでは入りませんでした。
何か特定の条件下で発生しているのかと思って確認してみたのですが、どうもそのようではないのです。

本来はきちんと"current"が入ると思うのですが、いかがでしょうか?
goichi > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/8/7 23:31
こんにちは、私の環境だと正常動作しているように思います。

引用:
本来はきちんと"current"が入ると思うのですが、いかがでしょうか?

サンプルを掲示していただいた通り、menu01〜06を作成して試してみましたが、全てのページでliに「current」クラスが付与されました。。。
ただ、3.0.5が出たばかりのバージョンなので、他の人の環境だと同じ現象が起きるかもしれませんので、少し回答を待ってみても良いかも知れません。
TeddyBuddy > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/8/14 1:12
goichiさん、投稿ありがとうございます。

まず、1つ記入し忘れていましたが、私はglobal_menu.phpファイルを使用しているテーマのElementsフォルダに用意しておりません。
よって、コアテンプレートのファイルを参照していると思われます。
goichiさんもコアテンプレートのファイルを使って検証されたと思われます。

引用:
サンプルを掲示していただいた通り、menu01〜06を作成して試してみましたが、全てのページでliに「current」クラスが付与されました。。。
ただ、3.0.5が出たばかりのバージョンなので、他の人の環境だと同じ現象が起きるかもしれませんので、少し回答を待ってみても良いかも知れません。

あれから自分でも検証してみたところ、私の提示した例では問題ないようですね。
それで、問題のあった箇所となかった箇所の違いを検証したところ、
問題が起こるのはメニュー項目のリンク先が次のような場合でした。

○「ホーム」の場合(/index.php/)
○固定ページカテゴリーのインデックスページ(/index.php/[ページカテゴリー名])
○ブログのインデックスページ(/index.php/[ブログアカウント名])

これはこういう仕様なんでしょうかね。
コアテンプレートに含まれているglobal_menu.phpファイルを使ってカスタマイズするしかないですかね。
一度挑戦してみますが、何か良い方法があればご提示ください。
TeddyBuddy > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/8/14 1:50
引用:
それで、問題のあった箇所となかった箇所の違いを検証したところ、
問題が起こるのはメニュー項目のリンク先が次のような場合でした。

○「ホーム」の場合(/index.php/)
○固定ページカテゴリーのインデックスページ(/index.php/[ページカテゴリー名])
○ブログのインデックスページ(/index.php/[ブログアカウント名])


更に検証したところ、リンク先URLの後ろに"index"を追加すると問題なく"current"が追加されることが分かりました。

○「ホーム」の場合(/index.php/ → /index.php/index)
○固定ページカテゴリーのインデックスページ(/index.php/[ページカテゴリー名] → /index.php/[ページカテゴリー名]/index)
○ブログのインデックスページ(/index.php/[ブログアカウント名] → /index.php/[ブログアカウント名]/index)

ただ、できることなら少しでもURLを短くすっきりさせたいので、せめて「ホーム」だけでも"index"を追加しなくても上手くいくようにしたいなあと思います。
一応global_menu.phpファイルと睨めっこしてみたいと思います。
TeddyBuddy > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/8/14 13:00
引用:
ただ、できることなら少しでもURLを短くすっきりさせたいので、せめて「ホーム」だけでも"index"を追加しなくても上手くいくようにしたいなあと思います。
一応global_menu.phpファイルと睨めっこしてみたいと思います。


こんな感じで直してみました。

まず、「Home > システム設定 > メニュー管理 > メニュー一覧」にて該当するメニュー名のリンクURLを次のように設定しました。

○「ホーム」の場合(/)
○固定ページカテゴリーのインデックスページ(/[ページカテゴリー名] → /[ページカテゴリー名]/)
○ブログのインデックスページ(/[ブログアカウント名] → /[ブログアカウント名]/)

要は必ず"/"で終わるようにしました。

その上で、「Home > テーマ管理 > [Core] エレメントテンプレート 一覧」にてglobal_menu.phpファイルを[現在のテーマへコピー]し、そのファイルの42行目を下記のように変更しました。

【変更前】
if ($this->BcBaser->isCurrentUrl($globalMenu['Menu']['link'])) {
	$classies[] = 'current';
}
	↓
【変更後】
if ($this->BcBaser->isCurrentUrl($globalMenu['Menu']['link']) || (($this->BcBaser->isHome() || $this->BcBaser->isCategoryTop() || $this->BcBaser->isBlogHome()) && $this->BcBaser->isCurrentUrl($globalMenu['Menu']['link'] . 'index'))) {
	$classies[] = 'current';
}


これで当初のやりたかったことができるようになりました。
goichi > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/8/14 19:47
なるほど、色々と情報をありがとうございますm(__)m
取り急ぎ、チケットを切ってきました!
早く問題が解消されると良いですね!
TeddyBuddy > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/8/15 21:06
goichiさん、投稿ありがとうございました。

引用:
取り急ぎ、チケットを切ってきました!
早く問題が解消されると良いですね!


ご親切にありがとうございます。助かります。

一応、これで解決できたと思っています。
ただ、この解決策の中で「必ず"/"で終わるよう」設定しているのですが、これは新たに私が立てたこのスレッドに関連しています。
"index"を自分で付加する必要がなくなったのは、自分でも改善できたと思っています。
ryuring > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/10/14 15:19
こんにちは。

こちらの件、調整完了しました!
http://project.e-catchup.jp/issues/6522

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

TeddyBuddy > Re: $this->BcBaser->element('global_menu')で展開されるリスト要素にてcurrentクラスが定義されないことがある @ 2014/11/9 13:16
ryuringさん、修正ありがとうございました。

このスレッドを立てる前の状態、
引用:
○「ホーム」の場合(/index.php/)
○固定ページカテゴリーのインデックスページ(/index.php/[ページカテゴリー名])
○ブログのインデックスページ(/index.php/[ブログアカウント名])

これに戻して、かつ自分で用意したglobal_menu.phpを外して検証したところ、今度は問題なく処理されるようになりました。
助かりました!

■ BaserCMS:3.0.6.1
■ スマートURL:OFF
■ 設置フォルダ:サブフォルダ
■ OS:OS X 10.10
■ PHP:5.5.14
■ 利用データベース:MySQL 5.6.21

ログイン
ユーザー名:
パスワード:


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

検索

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

フォーラムガイド


関連リンク

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

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