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

関数「getPageList」と、pagesテーブルについて

well > 関数「getPageList」と、pagesテーブルについて @ 2015/1/2 3:24
baserCMS関係者の皆様、
2015年 新年あけましておめでとうございます。
本年も益々のご繁栄がありますよう心よりお祈り申し上げます。


久しぶりに、baserCMSで開発途中だったものをいじり出したのですが、
関数とデータベースデータの扱いで、アレっと思うことがありましたので、お話しさせていただきます。
関数名は「getPageList」です。
以前にもウィジェットのPHPテンプレートでテスト導入してみましたが、、
今回は、カテゴリの固定ページの階層はとりあえず2層まで作り、
その下層側の固定ページに、新設の商品テーブルのデータを動的に出力する為に、
ソースをいじり出しました。

簡単な例で説明しますと、

まず、pagesテーブルを確認後、
関数「getPageList」に1か所パラメータ'page_category_id'を追加しました。

app/View/Helper/BcBaserHelper.php

public function getPageList($categoryId = null) {

	if ($this->Page) {
		$conditions = array('Page.status' => 1);
		if ($categoryId) {
			$conditions['Page.page_category_id'] = $categoryId;
		}
		$this->Page->unbindModel(array('belongsTo' => array('PageCategory')));
		$pages = $this->Page->find('all', array('conditions' => $conditions,
			'fields' => array('title',▼'page_category_id'▲, 'url'),
			'order' => 'Page.sort'));
		return Hash::extract($pages, '{n}.Page');
	} else {
		return false;
	}
}



そして、カテゴリリストのリンク先URLを次のように設定しました。

app/webroot/theme/kaizo/Elements/widgets/categoryList.php

<?php
$pages = $this->BcBaser->getPageList(10);

if(isset($pages)) {
    foreach($pages as $page){
?>
<li> <?php echo $this->BcBaser->link($page['title'], $page['url'].'?id='.$page['page_category_id']); ?> </li>
<?php
	}
}



デバッグコードで出力させてみると、$page['page_category_id']が、意図したidではなく、
どうやらparent_idになっているようでした。

pagesテーブルを確認するとカラム'page_category_id'にはすべて_page_categoriesテーブルのparent_idの値が入っていました。

関数「getPageList」の目的は、配下に属する子カテゴリのリスト化だと思いますので、ソースを見てそれは達成されいるとわかりましたが、
pagesテーブル内のpage_categoriesテーブルへの外部キーが、表記では'page_category_id'となっていますが、実際は'page_category_parent_id'ですので、矛盾が生じ、拡張性に問題が生じるようです。

ソースの変更、さらにテーブルの設計にも影響する事ですので、改善要望として挙げさせていただきました。
どうぞよろしくお願いいたします。

■ BaserCMS:3.0.6.1
■ サーバー名:CentOS 6.5 on VirtualBox(PHP 5.4.x / MySQL 5.5.x)
■ スマートURL:ON
■ 設置フォルダ: [ドキュメントルート]
■ PHPスキル:C
■ IDE:NetBeans7.4

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


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

検索

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

フォーラムガイド


関連リンク

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

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