左サイドバーに置いた、日付ナビブロックが、タグブロックのページネーションで、空白になる
2015年4月10日 at 6:09
5.6.3.2ja
ブログ系の投稿をページリストブロックで一覧表示させ、その各投稿に、キーワードタグを追加しています。
そのたぐのキーワードをクリックすると、同一キーワードがある投稿を一覧表示します。
その際、検索ブロックの表示数をテスト的に、defaultの 20件を 3件に設定
$ipl->setItemsPerPage(3)
にて設定して、ページネーションが発生するようにしています。
すると、キーワードタグ一覧では、きちんとページネーションはできるのですが、
2ページに送ったとたんに、
左サードバーに置いた、日付ナビブロックが、タイトル以外空白になってしまいます。
調べると、日付の検索条件を作って、最後に、$res = $ipl->getPage();
を読んだとき、2ページ以降が0件になってしまうようです。
おそらく、20件以下なので、2ページ以降は処理不要となってしまっているのかもです。
ちなみに、ページリストブロックを用いたページでは、左サイドバーの日付ナビは空白になることがなく正常です。
検索ブロックに、タグを表示するロジックを追加しているのが問題なのかもです。
わかれば教えてください。
タグ:
Your post has been saved and will be published after approval by the forum moderator.
kiyopi
Re: 左サイドバーに置いた、日付ナビブロックが、タグブロックのページネーションで、空白になる(自己解決)
タグや検索結果において、ページネーションが発生したとき、
サイドバーに置いていた、「ブログの日付アーカイブ」(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 . ')'; 等で表示してあげてください。
// 追加 ここまで
あまりきれいな書き方ではないです。
きれいな書き方があれば教えてください。