テーマ内でPageListオブジェクトを使用して表示した結果を、トピックの絞り込みに対応させたい
2017年10月11日 at 14:53
下記のような構成のサイトを開発中です。
トップページ(テーマA)
-ニュース(テーマA)
--ニュース詳細(テーマA)
--ニュース詳細(テーマA)
--……
-A部署のトップページ(テーマB)
--ニュース(テーマB)
---ニュース詳細(テーマB)
---ニュース詳細(テーマB)
--……
-B部署のトップページ(テーマC)
--ニュース(テーマC)
---ニュース詳細(テーマB)
---ニュース詳細(テーマB)
--……
-……
下層に別のテーマを適用した部署ごとのページがあり、それぞれにニュースが投稿できるようになっています。
ニュース詳細ページは、微妙に内容が異なるため、
・ページタイプはそれぞれ別
・ページテンプレートは共通
という実装にしています。
全体のトップページには、すべての部署のニュース一覧を表示する必要があるため、
テーマのページテンプレート内で、PageListオブジェクトを取得して、
ページテンプレートでフィルターをして表示させました。
$template = Concrete\Core\Page\Template::getByHandle('news_detail');
$list = new \Concrete\Core\Page\PageList();
$list->sortByPublicDateDescending();
$list->filterByPageTemplate($template);
$list->setItemsPerPage(5);
$pagination = $list->getPagination();
$pages = $pagination->getCurrentPageResults();
参考:
http://concrete5-japan.org/help/5-7/developer/working-with-pages/searching-and-sorting-with-the-pagelist-object/
表示はこれで出来たのですが、ニュース一覧をトピックで絞りこみする必要があり、
実装に行き詰っています。
$list->filterByTopic(3328);
と、filterByTopicにトピックのIDを入れることで絞り込めることはわかったのですが、
トピックをクリックしたときのURL、
http://example.com/news/topic/3327/notice
上記から、どのようにトピックのIDを取得すればよいかが分かりません……。
上記、方法知っている方がいらっしゃいましたら、ご教授ください。
タグ:
acliss
Re: テーマ内でPageListオブジェクトを使用して表示した結果を、トピックの絞り込みに対応させたい
$this->get('topic')
で取得できないでしょうか?