下記の記事はadiary2.04のものです。
adiary2.06で下記の内容は解決されています。
adiary2.04で「月で記事を一覧表示」させた時に、改ページ関連がうまく動作しません。仕様なのか不具合なのか分かりませんが、気持ち悪いので動くように改善してみました。
まずは標準の動きから。
- カレンダーの年月の部分をクリックすれば、その月の記事が表示されます。(例:https://hitoxu.com/200812で2008年12月の記事が表示される)
- 「一覧で表示する」をクリックすればリストで表示されます。(例:https://hitoxu.com/?diary_list&yyyymm=200812)
- デフォルトで30件ずつ表示されますが、「次の30件>>」や「50件表示」をクリックした時に[全体の記事から表示]されます。(例:2008年12月という情報が保持されず全体の記事が対象となります。)
この年月を保持するように以下の作業をします。
- サーバ上に「/diary.user.skel/diary_list.html」があればダウンロードして3へ
- 1のファイルがなければ、「/diary.skel/diary_list.html」をダウンロード
- ダウンロードした「diary_list.html」をテキストエディタで開く
- 37行目付近に次の1行を追加する
<$ifset(query.yyyymm ne '', add_query, "&yyyymm=" . form_encode(x=query.yyyymm))>
↓周辺のソースは以下の通り(最後の1行が追加した箇所)
変更前<@>前へと次へ <$prev = h.start - limit> <$next = h.end + 1> <$prev = if(prev < 1, undef, prev)> <$next = if(h.hits < next, 0, next)> <$url = v.myself2 . lists . '?' . v.query_ary#0> <$ifset(query.id ne '', add_query, "&id=" . form_encode(x=query.id))> <$ifset(query.cat ne '', add_query, "&cat=" . form_encode(x=query.cat))>
変更後
<@>前へと次へ <$prev = h.start - limit> <$next = h.end + 1> <$prev = if(prev < 1, undef, prev)> <$next = if(h.hits < next, 0, next)> <$url = v.myself2 . lists . '?' . v.query_ary#0> <$ifset(query.id ne '', add_query, "&id=" . form_encode(x=query.id))> <$ifset(query.cat ne '', add_query, "&cat=" . form_encode(x=query.cat))> <$ifset(query.yyyymm ne '', add_query, "&yyyymm=" . form_encode(x=query.yyyymm))>
- 「diary_list.html」を上書き保存し、「diary.user.skel」内にアップロード
以上で次ページや前ページ、○件表示について年月が保持された状態で動くようになります。ご参考まで。