Blog

concrete5でテーマにページリストブロックを直接埋め込む

Posted by admin at 13:22 日時 2013/08/28

こちらがサンプルコード。

  • 表示件数5件
  • 現在のページの親ページの子ページを一覧表示(同階層ということですね)
  • 表示順はサイトマップ順
  • 「blog_entry」ページタイプのページのみ表示

テーマにこのコードを埋め込んでおけば編集モードで入れなくてもページリストブロックがページ内に表示される。ただし、この方法だとブロックキャッシュが効かないので、最終手段と思ってほしい。基本的には、ページタイプのデフォルトで設置すべきだ。

$page_list = BlockType::getByHandle('page_list');

ブロックタイプハンドルからブロックタイプのオブジェクトを取得している。ブロックタイプハンドルとは、すなわち blocks フォルダ内の各ブロックタイプのフォルダ名と同一である。

ブロックタイプの表示上の挙動を設定するには、ブロックタイプオブジェクトのからコントローラーにアクセスし、各プロパティを設定していく。もちろんpublicなプロパティでないとアクセスはできない。また、どんなプロパティが存在するかは各ブロックタイプのcontroller.phpを読んで理解する。ここではページリストブロックタイプのパラメーターを紹介する。

$page_list->controller->num

表示するページ数。

$page_list->controller->cParentID

親ページを指定する。表示するページを絞り込むことができる。

$page_list->controller->cThis

現在のページを指定する。テーマに埋め込む場合、通常は設定する必要はない。

$page_list->controller->orderBy

表示順を指定する。デフォルトは新着順である。

  • ‘display_asc’:サイトマップ順
  • ‘display_desc’:サイトマップの逆順
  • ‘chrono_asc’:古い順
  • ‘alpha_asc’:ページ名でソート
  • ‘alpha_desc’:ページ名でソートの逆順
$page_list->controller->ctID

表示するページタイプを指定する。ページタイプID(ctID)で指定する。数値で指定してもいいが、サンプルのようにハンドルで取得したほうが楽だろう。

$page_list->controller->rss

RSSを表示するかどうか。ただしこのオプションは直接埋め込む場合は使わないほうがいいと思う。

$page_list->controller->displayAliases

エイリアスを表示するかどうか。デフォルトは表示しない。

$page_list->controller->bID

ブロックIDを指定する。RSSを表示する場合は必須になると思う(未検証)

$page_list->controller->displayFeaturedOnly

特集ページのみ

$page_list->controller->includeAllDescendents

全ての子ページを表示

$page_list->controller->paginate

ページ付けナビゲーションを表示

プロパティの設定をしたら、最後に render メソッドで表示する。引数にはカスタムテンプレートを指定することもできる。

$page_list->render('templates/blog_index');

Share this entry