タグ: database_indexed_search

ブログの日付アーカイブページネーション表示しない

 自己解決しました。 → ユーザーページの質問&回答

 “各月ごとの検索結果でページネーションが効く”ことが思った仕様での表示ができていない原因でした。

タグや検索結果において、ページネーションが発生したとき、 サイドバーに置いていた、
「ブログの日付アーカイブ」(date_archive)ブロックの カスタムテンプレートにて以下のように、

2015年4月 (4)
2015年3月 (2)
2015年2月 (1)
2015年1月 (1)

月ごとの件数を出力しています。
このとき、インデックスページリストを使って月の件数を取得しています。

concrete/blocks/date_archive/view.php -> リネームコピーして以下 blocks/date_archive/templates/date_archive.php ←名前適宜 このview.php(date_archive.php)途中に、以下を追加します。

もともと、各月ごとに表示する仕様ですので、 月のループごとに都度検索処理しています。

Loader::library('database_indexed_search'); // 追加
$i=0; while(true) {

// 追加 ここから
$ipl = new IndexedPageList();
// エイリアスを無視
$ipl->ignoreAliases();
$ipl->setSimpleIndexMode(true);
$year_month_query = $workingDt->format('Y') . '-' . $workingDt->format('m') . '-';
$ipl->filterByPublicDate($year_month_query . '%', 'like');
$aksearch = true; $ipl->filterByPath('/concrete5', true);
// $ipl->filter(false, '(ak_exclude_search_index = 0 or ak_exclude_search_index is null)');

// 検索結果(各月ごと検索でページネーションが効くので無効0にする)
$ipl->setItemsPerPage(0);
$res = $ipl->getPage(); $month_count = count($res);

// 上記の値を、echo '(' . $month_count . ')'; 等で表示してあげてください。
// 追加 ここまで