web-dev-qa-db-ja.com

ビューで繰り返し日付を適切に使用するにはどうすればよいですか?

recurring dateをコンテンツタイプの1つに使用しようとしています(EventEventレコードの量を制限します。

そのイベントのすべての日付に対して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
4
Refineo

最終的に私はこれを簡単な方法で設定する方法を見つけました:

  1. Viewに移動します

  2. Displays-> <your display name, for example Page>->編集に移動します

  3. 選択フォーマットテーブル

  4. 日付フィールドを追加します。

  5. コンテンツを選択:<your date field name>

  6. 構成フィールドが表示されます:コンテンツ:<your date field name>

  7. 「複数フィールド設定」に移動します

  8. 「同じ行のすべての値を表示する」のチェックを外します

オンにすると、このフィールドの複数の値が同じ行に表示されます。チェックされていない場合、このフィールドの各値は新しい行を作成します。グループ化を使用する場合、この設定を有効にするには、必ず「エンティティID」でグループ化してください。

5
Refineo

また、「フォーマットされていないリスト」を使用して、日付を「以上」でフィルタリングして、現在および今後のイベントを表示することもできます。

0
criscom

イベントを表示するために 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]);
      }
    }
  }
}

表示オプションとしてフィールドを使用している場合は、おそらくビューのフックを使用して同様のことを行うことができます。

0
jiv-e