POPSブログ

BaserCMS 2.0、ページ毎にサイドバーを変える

105

  Category:  basercms2012/05/20 pops 

BaserCMS 2.0、ページ毎にサイドバーを変える。新たにページの判定用途の、getHere()メソッドを利用して「ページ毎にサイドバーを変える」を行ってみます。


BaserCMS 2.0、ページ毎にサイドバーを変える


BaserCMS 2.0、メソッド追加

BaserCMS 2.0、から新たにページの判定用途に、次ぎのメソッドが追加された。
(BaserCMS 1系ではページ判定などのメソッドはほとんど無かったので少し改善された。isTop()は従来通り使用OK。)

【参考、参照】basercms.net: baserCMS 2.0.0 リリース



BcBaserヘルパ変更、メソッド追加
* $bcBaser->isHome()
* $bcBaser->isPage()
* $bcBaser->getHere()
* $bcBaser->isCategoryTop()
* $bcBaser->page()
* $bcBaser->isBlogHome()

HTMLに埋め込んでの出力テスト

追加メソッドはページによりどのように出力されるか、次のコードを layoutsのdefault.php に埋め込んで見る。
サブフォルダを basercms2 としての例です。


<br />
<?php echo("DATA URL: ".$bcBaser->getUrl()) ?><br />
<?php echo("PASS ROOT: ".$bcBaser->getRoot()) ?><br />
<?php echo("------------------------------------------") ?><br />
<?php echo("*getContentsName: ".$bcBaser->getContentsName()) ?><br />
<?php echo("*isHome: ".$bcBaser->isHome()) ?><br />
<?php echo("*isPage: ".$bcBaser->isPage()) ?><br />
<?php echo("*getHere: ".$bcBaser->getHere()) ?><br />
<?php echo("*isCategoryTop: ".$bcBaser->isCategoryTop()) ?><br />
<?php echo("*page: ".$bcBaser->page()) ?><br />
<?php echo("*isBlogHome: ".$bcBaser->isBlogHome()) ?><br />
<?php echo("------------------------------------------") ?><br />

ページ毎の出力結果

次ぎの出力は「初期インストール直後」状態での「ページ毎の出力結果」になります。


TOP INDEX
DATA URL: /basercms2/
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: Home
*isHome: 1
*isPage: 1
*getHere: /
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

About
DATA URL: /basercms2/about
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: Default
*isHome:
*isPage: 1
*getHere: /about
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

Service
DATA URL: /basercms2/service
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: Default
*isHome:
*isPage: 1
*getHere: /service
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

Contact入力
DATA URL: /basercms2/contact/index
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: Contact
*isHome:
*isPage:
*getHere: /contact/index
*isCategoryTop: 1
*page:
*isBlogHome:
------------------------------------------

Contact入力確認
DATA URL: /basercms2/contact/confirm
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: Contact
*isHome:
*isPage:
*getHere: /contact/confirm
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

Contact送信
DATA URL: /basercms2/contact/submit
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: Contact
*isHome:
*isPage:
*getHere: /contact/submit
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

Sitemap
DATA URL: /basercms2/sitemap
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: Default
*isHome:
*isPage: 1
*getHere: /sitemap
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

BLOG NEWS INDEX
DATA URL: /basercms2/news/index
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: News
*isHome:
*isPage:
*getHere: /news/index
*isCategoryTop: 1
*page:
*isBlogHome: 1
------------------------------------------

月別アーカイブ一覧
DATA URL: /basercms2/news/archives/date/2012/05
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: News
*isHome:
*isPage:
*getHere: /news/archives/date/2012/05 
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

カテゴリー一覧
DATA URL: /basercms2/news/archives/category/release
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: News
*isHome:
*isPage:
*getHere: /news/archives/category/release
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

Archives 1
DATA URL: /basercms2/news/archives/1
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: News
*isHome:
*isPage:
*getHere: /news/archives/1
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

Archives 2
DATA URL: /basercms2/news/archives/2
PASS ROOT: /basercms2/
------------------------------------------
*getContentsName: News
*isHome:
*isPage:
*getHere: /news/archives/2
*isCategoryTop:
*page:
*isBlogHome:
------------------------------------------

注意、page は「ページカテゴリー分類」の設定をしないと出力されない、従来通りである。インストール初期では「分類の設定」はなされていない、そのため isPage() では index ページの判定がなされる。


getHere()を利用してサイドバーを変える

新たなメソッドgetHere()を利用してサイドバーを変える場合は次ぎのようになる。(getHere で得られた文字列を / で分解して配列にいれ、文字で判定して分岐しているだけです)
layoutsのdefault.php に埋め込んで使用すれば良い。elementsにsidebar.php 等が在るものとする。
(下の例は、switch文を使用するため記述が長い。if、else if、文だけで書くのも個人の自由です。isCategoryTop等で細かく判定するのも自由です。)


default.phpへの挿入例

<>
<!-- begin contents -->
<div id="contents">
	
	<!-- begin alfa -->
	<div id="alfa" >

	記事挿入部分

	</div>
	<!-- end alfa -->
	<!-- begin beta -->
	<div id="beta" >

		<?php
		$no = 0;

		$url_datas=explode("/",$bcBaser->getHere());/*sliceは使えないexplodeを使うこと*/
		$d = $url_datas[1];

		if ($bcBaser->isHome()) {$no = 1;}
		if ($d == 'about' || $d == 'service' || $d == 'sitemap') {$no = 2;}
		if ($d == 'contact') {$no = 3;}
		if ($d == 'news') {$no = 4;}
		if ($d == 'content') {$no = 5;}

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

	</div>
	<!-- end beta -->
</div>
<!-- end contents -->

注意、サブフォルダを basercms2 としての例です。サブフォルダ構成等を変更した場合はテスト出力して決定すれば間違いは起きない。getUrl()を利用することも可能です。


この記事を書いた 2012/05/20 時点では、正式の「リファレンス」は発表されて居ないので、詳細は正式の「リファレンス」を参照ください。


以上です。


[ この記事のURL ]


タグ:memo , basercms2

 

ブログ記事一覧



[1]