カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。

hataya > カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2010/12/28 18:13
はじめまして はたや です。

現在、自社のホームページをBaserCMSを利用して構築しております。

そのなかでページカテゴリ単位でサイドメニューを変更したいと考えており、既出のトピック「カテゴリーページごとに違うサブメニュー表示する」を参考に下記のように sidebar.ctp を編集することで、カテゴリごとにサイドバーを切り替えることができました。

しかし、ブログとメールフォームだけはこのやり方では制御できませんでした。
いずれも、下記コードにある"pageNo"に相当する値がないためではないかと思いますが、その解決策を見つけ出すことができずに、このフォーラムを頼ってみました。
(ブログは switch 〜 case 文 の default としたので結果的にうまくいっています)

よい解決策はありますでしょうか??

sidebar.ctp

<?php
/**
 * サイドバー
 *
 * TOPページは「TOPサイドバー(id3)」を表示
 * TOPページ以外は「標準サイドバー(id1)」を表示
 * 上記以外(=ブログ)は「ブログサイドバー(id2)」を表示
 *
 * 〜 未解決 〜
 * 問い合わせページは「Mailサイドバー(id4)」を表示
 *
 */
?>
<div id="beta">
                <?php
                $pageNo = '';
                if(isset($page)){
                	if($baser->isTop()){
                                $pageNo = "1";
                        } else {
                        $pageCategory = $page->getCategory();
                        $pageNo = $pageCategory['id'];
                        }
                }
                
                switch($pageNo){
                case 1:
                	$baser->element('widget_area',array('no'=>3));
                	break;
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                	$baser->element('widget_area',array('no'=>1));
                	break;
                default:
                	$baser->element('widget_area',array('no'=>2));
                }
                ?>
</div>



〜環境〜
OSの種類:CentOS5.5
PHPのバージョン:5.1.6

BaserCMSのバージョン:1.6.7.1
スマートURLの利用: ON
設置フォルダ: サブフォルダ
利用しているデータベース: CSV
PHPスキル(自己評価): E

〜環境〜
-----
■ BaserCMSのバージョン:4.0.0
■ 設置フォルダ:ドキュメントルート
■ 利用しているデータベース:CSV
■ PHPスキル(自己評価): E

non > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2010/12/28 21:20
ブログとメールフォームは、管理画面より設定できると思いますよ

お問い合わせというメールフォームであれば、「お問い合わせ基本設定」から
hataya > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2010/12/28 23:01
nonさん 早速のフォローありがとうございます。

ご指摘の通りメールフォームの設定画面の「ウィジェットエリア」でサイドバーを指定することで実現できました。
難しく考えてました・・・

念のため解決したコードを下記に掲載します。
TOPページとそれ以外のページでサイドメニューを切り替えたかったので、下記のような書き方になってます。


<?php
/**
 * サイドバー
 *
 * TOPページは「TOPサイドバー(id3)」を表示
 * TOPページ以外は「標準サイドバー(id1)」を表示
 * 上記以外のブログとメールフォームは個別設定のサイドバーを表示
 *
 */
?>
<div id="beta">
                <?php
                $pageNo = '';
                if(isset($page)){
                	if($baser->isTop()){
                                $pageNo = "1";
                        } else {
                        $pageCategory = $page->getCategory();
                	$pageNo = $pageCategory['id'];
                        }
                }
                
                switch($pageNo){
                case 1:
                	$baser->element('widget_area',array('no'=>3));
                	break;
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                	$baser->element('widget_area',array('no'=>1));
                	break;
                default:
                        $baser->element('widget_area',array('no'=>$widgetArea));
                }
                ?>
</div>

〜環境〜
-----
■ BaserCMSのバージョン:4.0.0
■ 設置フォルダ:ドキュメントルート
■ 利用しているデータベース:CSV
■ PHPスキル(自己評価): E

板橋 陽一 > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2011/5/29 17:14
真似てやってみましたがうまくいきません。
そっくりコピペでやってみたのですが・・・

私もトップページとその他2種類ぐらいかえたいのでぜひ挑戦したいのですが、なにせ知識がついて行きません。
よかったらもう少しだけ付き合ってください。

■ BaserCMSのバージョン:3.0.2
■ レンタルサーバー名:heteml
■ スマートURLの利用: [OFF]
■ 設置フォルダ: [サブフォルダ]
■ 利用しているデータベース: [ sqlite ]
■ PHPスキル(E)

hataya > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2011/5/30 14:26
nomokun さん

「うまくいっていない」の中身がみえないのですが、PHPコードを追いかけていけばご理解いただけるかと思います。
私が理解している範囲で解説をします。

おおまかな流れとしては

1)TOPページだったら $pageNo = '1' とする

2)それ以外ならば カテゴリID($pageCategory['id'];)を$pageNoに代入する

3)switch〜case文で$pageNo(=カテゴリID)ごとに表示するサイドバーを振り分けている

です。

このことから、ページごとにサイドバーを切り替えるというよりは、カテゴリごとにサイドバーを切り替えていることになるので、やるべき事は

[1] nomokunさんが考えているサイドバー切替イメージにあったカテゴリを作成する

[2] [1]で作ったカテゴリIDを確認する(*1)

[3] ページを[1]で作ったカテゴリに所属させる。

[4] カテゴリIDに対応させたいサイドバー表示のコードを確認する(*2)

[5] [2]と[4]を念頭において sidebar.ctp を編集する

(*1)
カテゴリ一覧の「No」

(*2)
サイドバー(=ウィジェット)の編集画面から確認できます。
ウィジェットエリア編集のヘルプ (?)マーク をクリック

となります。

補足ですが、サンプルで上げたコードのswitch〜case文を解説すると

TOPページだったら $pageNo = '1' になるので case1 が実行される。
$pageNo(=カテゴリID)が'2''3''4''5''6'だったら case6 が実行される。
さらにそれ以外なら default が実行される。

ということになります。

どうでしょうか?

〜環境〜
-----
■ BaserCMSのバージョン:4.0.0
■ 設置フォルダ:ドキュメントルート
■ 利用しているデータベース:CSV
■ PHPスキル(自己評価): E

板橋 陽一 > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2011/5/30 15:18
hatayaさん、ご丁寧な解説ありがとうございます。なにか理解できたような気がしますので、早速試してみます。
またわからなかったらもどってきますのでその節はよろしくお願いします。
本当にありがとうございました。

■ BaserCMSのバージョン:3.0.2
■ レンタルサーバー名:heteml
■ スマートURLの利用: [OFF]
■ 設置フォルダ: [サブフォルダ]
■ 利用しているデータベース: [ sqlite ]
■ PHPスキル(E)

板橋 陽一 > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2011/5/30 18:05
まだうまくできません。

よく見ると、2つsidebar.ctpがありますが、どちらを置き換えればいいのでしょうか?
それとも両方とも変えなきゃだめなのかな?なにかめちゃくちゃやってるような気がしてきましたが、大丈夫かな???
2つとは
baser/views/elements/sidebar.ctp
app/webroot/themed/demo/elements/sidebar.ctp
の2つなのですが。。。。。

■ BaserCMSのバージョン:3.0.2
■ レンタルサーバー名:heteml
■ スマートURLの利用: [OFF]
■ 設置フォルダ: [サブフォルダ]
■ 利用しているデータベース: [ sqlite ]
■ PHPスキル(E)

hataya > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2011/5/30 18:22
『sidebar.ctp』は管理画面から編集できますよ。

システム設定 > テーマ管理 > 現在適用されているテーマ > エレメント一覧

未確認ですが・・・
管理画面から編集した『sidebar.ctp』は『app/webroot/themed/demo/elements/sidebar.ctp』に反映されると思いますよ。


〜環境〜
-----
■ BaserCMSのバージョン:4.0.0
■ 設置フォルダ:ドキュメントルート
■ 利用しているデータベース:CSV
■ PHPスキル(自己評価): E

板橋 陽一 > Re: カテゴリごとに異なるサイドバーを表示させたいがブログとメールフォームだけうまくいきません。 @ 2011/5/30 22:41
なるほど!
管理画面から編集したら反映されました。そう言う事なんですね。
ズーッとFTPでダウウロードして編集してアップロードという手順でやっていました。
こちらの方が面倒じゃないですね。

ありがとうございました、ずーっと気になっていた事ができて、すっきりしました。
まだまだ初心者ですが、とても気に入っているのでしばらく使ってもっとしっかり操れる様頑張ります。

本当に助かりました、hatayaさんが居なかったらずーっと繰り返してできなくて嫌になっていたでしょう、これからもよろしくお願いします。

■ BaserCMSのバージョン:3.0.2
■ レンタルサーバー名:heteml
■ スマートURLの利用: [OFF]
■ 設置フォルダ: [サブフォルダ]
■ 利用しているデータベース: [ sqlite ]
■ PHPスキル(E)

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


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

検索

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

フォーラムガイド


関連リンク

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

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