Re: 左サイドバーに置いた、日付ナビブロックが、タグブロックのページネーションで、空白になる(自己解決)

2015年4月14日 at 12:04

質問自己解決しました。

タグや検索結果において、ページネーションが発生したとき、
サイドバーに置いていた、「ブログの日付アーカイブ」(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); // <- ブログページ(例::concrete5)でフィルターするなら
$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 . ')'; 等で表示してあげてください。
// 追加 ここまで



あまりきれいな書き方ではないです。
きれいな書き方があれば教えてください。