ニュース&ブログ


[baserCMS2]スマホ・携帯サイトでカテゴリ名を取得

特定のカテゴリだけに表示したい!

5月1日、baserCMS2正式版がリリースされました。
このサイトも早速 baserCMS2 にアップデートさせて頂き、特に大きな問題もなく動作しております。
ユーザー会の皆様をはじめ開発等に関わっていらっしゃる皆様に感謝申し上げます。

さて本題ですが、baserCMS 2.0.0では「ContentsName」と「getContentsName」関数でスマートフォンサイト(公開してませんが携帯サイトも同様)のページのカテゴリ名(ID)が取得できませんでした。
そこで、ヘルパー(bc_baser.php)を修正して対応しましたのでその方法をご紹介します。

はじめに

「ContentsName」と「getContentsName」関数の不具合は、スマホ・携帯サイトの固定ページの問題で、PCサイトでは正常にページのカテゴリ名(ID)を取得できます。スマホまたは携帯サイトを公開する場合で、この関数を使用する場合にご活用ください。また、ページのカテゴリ名(ID)が取得方法は、『[baserCMS] 特定のカテゴリに条件を適応する方法』に記載しております。
なお、掲載したプログラムの修正は当サイトでは問題なく動作しておりますが、「bc_baser.php」の設置や修正は自己責任でお願いします。

bc_baser.php の複製および修正内容

bc_baser.php の複製

BaserCMSは「baser」ディレクトリ内は触らないというのが基本(アップデートで上書きされるから)で、「app」にコピーすることでそのファイルが優先され読み込まれる仕様です。

そこでまずは「baser/views/helpers/」ディレクトリの「bc_baser.php」を「app/views/helpers/」へコピーしました。

bc_baser.php の修正(1)

bc_baser.php を修正しない場合の「ContentsName」の出力結果は、スマホ・携帯ともにすべての固定ページが「Pages」と出力され、「ContentsName(true)」の出力結果は、スマホは「PagesSmartphoneDisplay」、携帯は「PagesMobileDisplay」と出力されます。なお、ブログとメールフォームに関してはスマホ・携帯ともに正常に取得できます。

そこで、bc_baser.php 1144行目辺りの「 } else { 」の直前に下記ソースを追記し対応しました。

		// スマホの場合(CoreDesign 追記)
		} elseif($controller=='pages' && $action=='smartphone_display') {
			if(strpos($pass[0], 'pages/') !== false) {
				$pageUrl = str_replace('pages/','', $pass[0]);
			} else {
				$pageUrl = h($this->params['url']['url']);
				$pageUrl = str_replace('s/','', $pageUrl);
			}
			if(preg_match('/\/$/', $pageUrl)) {
				$pageUrl .= 'index';
			}
			$pageUrl = preg_replace('/\.html$/', '', $pageUrl);
			$pageUrl = preg_replace('/^\//', '', $pageUrl);
			$aryUrl = split('/',$pageUrl);
		

		// 携帯の場合(CoreDesign 追記)
		} elseif($controller=='pages' && $action=='mobile_display') {
			if(strpos($pass[0], 'pages/') !== false) {
				$pageUrl = str_replace('pages/','', $pass[0]);
			} else {
				$pageUrl = h($this->params['url']['url']);
				$pageUrl = str_replace('m/','', $pageUrl);
			}
			if(preg_match('/\/$/', $pageUrl)) {
				$pageUrl .= 'index';
			}
			$pageUrl = preg_replace('/\.html$/', '', $pageUrl);
			$pageUrl = preg_replace('/^\//', '', $pageUrl);
			$aryUrl = split('/',$pageUrl);

bc_baser.php の修正(2)

baserCMS2では、トップページの場合「Home」を出力する仕様になっていますが、(1)だけでは「Default」と出力されます。

そのため、1186行目辺りの「 } else { 」の直前にも下記ソースを追記しました。

		// スマホ・携帯のトップページの場合に「Home」を出力(CoreDesign 追記)
		} elseif(count($aryUrl) == 1 && $aryUrl[0] == '') {
			
			$contentsName = $home;

以上、お役に立てれば幸いです。


訪問打ち合わせ対応可能エリア

【北九州市内】

八幡西区・八幡東区・若松区・戸畑区・小倉北区・小倉南区・門司区

【北九州市周辺地域】

遠賀郡(水巻町・芦屋町・遠賀町・岡垣町)・中間市・宗像市・鞍手郡(鞍手町・小竹町)・宮若市・福津市・古賀市・直方市・飯塚市・田川市・行橋市・京都郡(苅田町・みやこ町)・山口県下関市など

上記以外の地域も訪問での打ち合わせ対応が可能な場合がございます。
また、お電話とメールだけで打ち合わせが可能な案件につきましては、日本全国どこからでもご依頼を承ります。お気軽にお問い合わせください。

ホームページ制作無料お見積り(リアルタイム概算計算機能付き)

お問い合わせ