メニューを表示する関数についておしえてください

ninon > メニューを表示する関数についておしえてください @ 2017/10/5 21:56
お世話になっております。
baserCMS 4系での質問です。

コアウィジェットにローカルナビゲーションというものがありますが、
あのような形式で、自分で指定したフォルダ以下のページへのメニューを表示させたいです。
contentsMenu関数でできると思ったのですが、引数をどのように指定すればよいのかわからず行き詰っています。

$this->BcBaser->contentsMenu( $id , $level , $currentId );

引数$idでフォルダを指定すればその下層メニューを出せると想像しています。
そこで、contentsMenu("folder", 0)のようにしてみましたが、"folder"内のページ一覧は出ませんでした。$currentIdの指定が無いことが原因かと思いましたが、$currentIdというのは、何を入れればよろしいでしょうか。

そもそも、この関数で可能なのかもわからないため、ほかに適切な関数がありましたらアドバイス頂きたく思います。
例えば下記の2つでは、フォルダを指定して下層ページだけのメニューを出すことはできないでしょうか。
■グローバルメニュー
$this->BcBaser->getGlobalMenu( [$level] , [$options] );

■サイトマップ
$this->BcBaser->sitemap($siteId);


よろしくお願いいたします。
akillerbee > Re: メニューを表示する関数についておしえてください @ 2017/10/26 11:02
こんにちはakillerbeeです。

ヘルパ「contentsMenu」の使用方法ですがサンプルテーマ「bc_sample」のウィジェットのエレメントの処理が参考になるかと思います。
lib/Baser/Config/theme/bc_sample/Elements/widgets/local_navi.php
<?php
/**
 * [PUBLISH] ローカルナビゲーションウィジェット
 *
 * baserCMS :  Based Website Development Project <http://basercms.net>
 * Copyright (c) baserCMS Users Community <http://basercms.net/community/>
 *
 * @copyright		Copyright (c) baserCMS Users Community
 * @link			http://basercms.net baserCMS Project
 * @package			Baser.View
 * @since			baserCMS v 0.1.0
 * @license			http://basercms.net/license/index.html
 */

/**
 * $this->BcBaser->widgetArea('ウィジェットエリアNO') で呼び出す
 * 管理画面で設定されたウィジェットエリアNOは、 $widgetArea で参照できる
 */
if(empty($this->request->params['Content'])) {
	return;
}
if($this->request->params['Content']['type'] == 'ContentFolder') {
	$parentId = $this->request->params['Content']['id'];
	$title = $this->request->params['Content']['title'];
} else {
	$parent = $this->BcContents->getParent($this->request->params['Content']['id']);
	$parentId = $parent['Content']['id'];
	$title = $parent['Content']['title'];
}
if(@$parent['Content']['site_root']) {
	return;
}
?>


<div class="widget widget-local-navi widget-local-navi-<?php echo $id ?>">
	<?php if ($use_title): ?>
		<h2><?php echo h($title) ?></h2>
	<?php endif ?>
	<!-- /Elements/page_list.php -->
	<?php $this->BcBaser->contentsMenu($parentId, 1, $this->request->params['Content']['id']) ?>
</div>


現在表示しているコンテンツがフォルダであれば第1、第3引数はこのコンテンツ(フォルダ)のコンテンツIDをセット、フォルダでなければ親コンテンツ(フォルダ)を走査して親コンテンツのコンテンツIDをセットしているようです。その際階層を「1」に設定しています。
このように実装すればフォルダ以下のコンテンツ一覧を表示できるのではないかと思います。

※下記のファイルでレイアウトの調整が可能です。
theme/bccolumn/Elements/contents_menu.php

以上、宜しくお願い致します。
ログイン
ユーザー名:
パスワード:


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

検索

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

フォーラムガイド


関連リンク

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

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