POPSブログ

ページごとにサイドバーを変える/2

21

  Category:  basercms2012/02/12 pops 

ページごとにサイドバーを変える方法2である。現在のページ情報を得る手段として、CakePHP直接の取得命令、
$this->params['url']['url']、を使用してみた。


ページごとにサイドバーを変える2


カテゴリごとにサイドバーを変える

BaserCMSにはページカテゴリ情報を得る命令は少ない。ページカテゴリを登録したら3番から始まった。
このときは実際驚いた(1番から始まると思っていた)。しかるに、TOPページ属、コンタクトページ属、ブログページ属は、仮想的に0,1,2番カテゴリに属しているのだろう。制作する側の思考としては推測される。


現在のページ情報を得る手段として、CakePHP直接の取得命令である、$this->params['url']['url']、がある。


  • 取得例 / index contact/index tokusyuu/transition pops/archives/category/index など
  • 取得できる情報はURLの記述と同じなので処理しやすい。
  • TOPページが / または index の時があるので修正すればよい。
  • カテゴリーを登録した場合は必ず index ページを作る事。

レイアウトctpなど何処かに書き入れ、情報を取得して表示してみよう。


<?php
$pageUrl = $this->params['url']['url'];
if ($pageUrl=="/" ) {$pageUrl="index";}
echo(" ".$pageUrl);
?>

表示例
index about sitmap contact/index tokusyuu/transition pops/archives/category/index

/ で分解することによってページ判定が出来る


$pageUrl=$this->params['url']['url'];
$page_urls=explode("/",$pageUrl);
$page_urls[0]に最初の階層の文字が入る

split()は非推奨である、単なる分解目的なので、explode()使用した。


switch構文で利用してみよう

無理やりページカテゴリ3番から始まる構成である。


popsはブログ、tokusyuuはページカテゴリとする
カテゴリxxxxxxxxと増えても視覚的に対応sidebarが明示的になる
switch構文なので、defaultを設定できるのがうれしい

<?php
$pageUrl=$this->params['url']['url'];
$page_urls=explode("/",$pageUrl);

$no=0;
if ($page_urls[0]=='' || $page_urls[0]=='index') {$no=0;}
if ($page_urls[0]=='contact') {$no=1;}
if ($page_urls[0]=='pops') {$no=2;}
//カテゴリ3.4.5
if ($page_urls[0]=='tokusyuu') {$no=3;}
if ($page_urls[0]=='xxxxxxxx') {$no=4;}
if ($page_urls[0]=='yyyyyyyy') {$no=5;}

switch($no){
	case 0:
		$baser->element('sidebar');
	break;
	case 1:
		$baser->element('sidebar1');
	break;
	case 2:
		$baser->element('sidebar2');
	break;
	case 3:
		$baser->element('sidebar3');
	break;
	case 4:
		$baser->element('sidebar4');
	break;
	case 5:
		$baser->element('sidebar5');
	break;
	default:
		$baser->element('sidebar');
}
?>

サブカテゴリがあれば、$page_urls[1]、で取得できる、そのほか状況に応じて書き換えれば良い。


注意、CakePHP直接の取得命令なので、element の ctp が深くなる階層では、$this->params、、が取得出来ないことも予測される。


【参考】forum.basercms.net: カテゴリごとに異なるサイドバーを表示させたいが


【前のページ】ページごとにサイドバーを変える1


[ この記事のURL ]


タグ:series , memo , basercms , cakePHP

[ ページごとにサイドバーを変える シリーズ記事 ]

ページごとにサイドバーを変える/22012.02.12
ページごとにサイドバーを変える/12012.02.11

 

ブログ記事一覧



[1]