viewsで引数による日付範囲指定

nikaso's picture

D8のviewsについて質問なのですが、
例えば2017年9月の投稿一覧(どの月かは、"201709"のような引数で動的に指定したい)を作りたい場合、どのようにすればよいのかがいまいちわかりません。
それと、できれば前後1週間の投稿も含めたい(つまり2017年9月という指定をした場合に2017年8月25日~10月7日までの投稿を含めたい)のですが、そのようなことも可能でしょうか?

Comments

muro's picture

Viewsの編集画面の右上になる「高度」>「コンテクスチュアルフィルター」より「作成年月」を追加すればいけますよ。

Drupal8のデフォルト(だっけ?)にある「Archive」Viewをみると参考になるはずです。

Exposed filterもあります

hagi's picture

DrupalMeetupの2017年8月の回で話題になりました。
Contextual FilterとExposed Filter、Search APIが選択肢としてあるとアドバイスされたのを思い出します。
Exposed Filterを利用する場合は、フィルターの条件設定で、
「このフィルターを訪問者へ表示し、変更できるようにする」にチェックをつけるとURLのパラメーターで名前をつけて値を与えることができます。範囲で限定する時は、コンテクスチュアルフィルターより便利なケースがあります。
「高度」>「外部設置フォーム」の「外部設置フォームをブロックで提供」を有効にすれば、ブロックとして外出しする事もできるのですが、moreリンクの時に入力内容が引き継がれないというバグが8.3.7では残っています。
資料を読む限りSearch APIにはもっと柔軟性があるように思われますが、まだ検証していないので良く分かりません。
ご参考まで

nikaso's picture

muroさん、hagiさん、早速のアドバイスありがとうございます。

muroさん
単純な月指定だけならこれでできそうです!なるほどデフォルトの設定を参考にすればよいのですね、

hagiさん
Exposed Filter、Search APIについては、存在を知りませんでした。検索フォームのような感じになるのですね。

今回私が考えているのは単純な月別の投稿アーカイブで、その月の投稿だけでなく前後1週間分の投稿も含めたいという少し特殊な要望でして、viewsで対応できなければ他の方法でと思っております。
viewsに限らず何かスマートな解決方法がございましたら引き続きアドバイスをいただければ幸いです。
私はDrupalの経験があまりなく、コードを書くようなカスタマイズについてはこれから勉強したいと思っておりますので、やさしく教えていただけるとありがたいです。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group events

Add to calendar

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week