recurring dateをコンテンツタイプの1つに使用しようとしています(Event)Eventレコードの量を制限します。
そのイベントのすべての日付に対して1つのイベントレコードを作成したいと思います。たとえば、1年間イベントが毎週発生する場合、52ではなく1つのレコードがあります。
それでも、ビューを並べ替え/フィルターして現在の週のイベントのみを表示できるようにしたいので、関連するビューに52行の個別の行を表示したいと思います。
各ビューの行に1つの日付のみが表示されるように、そのデータのイベントビューを設定する方法
ビューがこのようなリストを返すようにしたい...
- Event A 12-10-2011
- Event B 12-11-2011
- Event A 12-12-2011
- Event B 12-13-2011
- Event A 12-14-2011
- Event B 12-15-2011
(イベントAとBは2日ごとに繰り返されます)
...このようなリストの代わりに:
- Event A
- 12-10-2011
- 12-12-2011
- 12-14-2011
- Event B
- 12-11-2011
- 12-13-2011
- 12-15-2011
- Event A
- 12-10-2011
- 12-12-2011
- 12-14-2011
- Event B
- 12-11-2011
- 12-13-2011
- 12-15-2011
- Event A
- 12-10-2011
- 12-12-2011
- 12-14-2011
- Event B
- 12-11-2011
- 12-13-2011
- 12-15-2011
最終的に私はこれを簡単な方法で設定する方法を見つけました:
Viewに移動します
Displays-> <your display name, for example Page>
->編集に移動します
選択フォーマット:テーブル
日付フィールドを追加します。
コンテンツを選択:<your date field name>
構成フィールドが表示されます:コンテンツ:<your date field name>
「複数フィールド設定」に移動します
「同じ行のすべての値を表示する」のチェックを外します
オンにすると、このフィールドの複数の値が同じ行に表示されます。チェックされていない場合、このフィールドの各値は新しい行を作成します。グループ化を使用する場合、この設定を有効にするには、必ず「エンティティID」でグループ化してください。
また、「フォーマットされていないリスト」を使用して、日付を「以上」でフィルタリングして、現在および今後のイベントを表示することもできます。
イベントを表示するために Display Suite を使用する場合(表示:Display Suite)、カスタムモジュールでこのようなことを行うことができます。 「mymodule」と「field_date」をモジュールと日付のフィールド名に対応するように変更することを忘れないでください。
/**
* Implements hook_ds_views_row_render_entity_alter()
*/
function mymodule_ds_views_row_render_entity_alter(&$content, &$context) {
//Display only the current date value from repeating dates
$date_field_name = 'field_date';
if (isset($content[$date_field_name]) && count($content[$date_field_name]['#items']) > 1) {
// Modify the view, or the content render array in the context of a view.
for ($i = 0; $i < count($content[$date_field_name]['#items']); ++$i) {
if($content[$date_field_name]['#items'][$i]['value'] != $context['row']->field_data_field_date_field_date_value) {
unset($content[$date_field_name][$i]);
}
}
}
}
表示オプションとしてフィールドを使用している場合は、おそらくビューのフックを使用して同様のことを行うことができます。