2

オーディオファイルフィールドを含むコンテンツタイプ「オーディオ」があります。このフィールドは複数の値を受け入れるため、各ノードには任意の数のオーディオファイルを含めることができます。通常、RSSフィードビューを作成すると、<item>ノードごとに1つ生成され、各<enclosure>エントリには、オーディオファイルごとに1つずつ、複数のエントリがあります。しかし、私の目的で<item>は、オーディオファイルの値ごとに個別に出力するビューが必要です。したがって、たとえば、選択したノードに3つのオーディオファイルがある場合、ノード全体がフィードで3回繰り返され、各ノードには1つのオーディオファイルエンクロージャのみが含まれます。

この理由は、私の特定のケースではhook_node_view()、カスタムモジュールで使用して、ビューが生成する各ノードにMRSSタグを追加しているためです。したがって、オーディオファイルがラップされるのではなく、タグ<enclosure>でラップされます。MRSS仕様によれば、同じコンテンツを表していない限り、<media:content>1つにつき複数の<media:content>エントリを含めることはできません。<item>これは、他のタグが同じ内のすべてのタグに関係している<title>ためです。皮肉なことに、カスタマイズフックは最も簡単な部分ですが、最初に、説明した方法でノードを出力するためのビューを取得する必要があります。<description><media:content><item>

では、新しいDrupal 7ビューのグループ化機能やその他の方法を使用して、探している出力を生成する方法はありますか?トリックを知りたいです!そうしないと、カスタムメニューエントリを使用する必要があり、ビューで得られるすべての利点(自動キャッシュやビューUI内での作業が可能になるなど)が失われます。

4

1 に答える 1

2

「ファイル」のビューを作成し、ビューUIの右側にある[詳細]折りたたみフィールドセットの下で、ノードとファイルの関係(結合)を作成します。

ここにコピーしてビューにインポートできるクイックビューは次のとおりです。

<?php
    $view = new view;
    $view->name = 'test';
    $view->description = '';
    $view->tag = 'default';
    $view->base_table = 'file_managed';
    $view->human_name = 'test';
    $view->core = 7;
    $view->api_version = '3.0';
    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

    /* Display: Master */
    $handler = $view->new_display('default', 'Master', 'default');
    $handler->display->display_options['title'] = 'test';
    $handler->display->display_options['access']['type'] = 'perm';
    $handler->display->display_options['cache']['type'] = 'none';
    $handler->display->display_options['query']['type'] = 'views_query';
    $handler->display->display_options['query']['options']['query_comment'] = FALSE;
    $handler->display->display_options['exposed_form']['type'] = 'basic';
    $handler->display->display_options['pager']['type'] = 'full';
    $handler->display->display_options['pager']['options']['items_per_page'] = '10';
    $handler->display->display_options['style_plugin'] = 'default';
    $handler->display->display_options['row_plugin'] = 'fields';
    /* Relationship: File Usage: Content */
    $handler->display->display_options['relationships']['file_to_node']['id'] = 'file_to_node';
    $handler->display->display_options['relationships']['file_to_node']['table'] = 'file_usage';
    $handler->display->display_options['relationships']['file_to_node']['field'] = 'file_to_node';
    $handler->display->display_options['relationships']['file_to_node']['required'] = 0;
    /* Field: File: Name */
    $handler->display->display_options['fields']['filename']['id'] = 'filename';
    $handler->display->display_options['fields']['filename']['table'] = 'file_managed';
    $handler->display->display_options['fields']['filename']['field'] = 'filename';
    $handler->display->display_options['fields']['filename']['label'] = '';
    $handler->display->display_options['fields']['filename']['alter']['alter_text'] = 0;
    $handler->display->display_options['fields']['filename']['alter']['make_link'] = 0;
    $handler->display->display_options['fields']['filename']['alter']['absolute'] = 0;
    $handler->display->display_options['fields']['filename']['alter']['word_boundary'] = 0;
    $handler->display->display_options['fields']['filename']['alter']['ellipsis'] = 0;
    $handler->display->display_options['fields']['filename']['alter']['strip_tags'] = 0;
    $handler->display->display_options['fields']['filename']['alter']['trim'] = 0;
    $handler->display->display_options['fields']['filename']['alter']['html'] = 0;
    $handler->display->display_options['fields']['filename']['hide_empty'] = 0;
    $handler->display->display_options['fields']['filename']['empty_zero'] = 0;
    $handler->display->display_options['fields']['filename']['link_to_file'] = 1;
    /* Field: Content: Body */
    $handler->display->display_options['fields']['body']['id'] = 'body';
    $handler->display->display_options['fields']['body']['table'] = 'field_data_body';
    $handler->display->display_options['fields']['body']['field'] = 'body';
    $handler->display->display_options['fields']['body']['relationship'] = 'file_to_node';
    /* Field: Content: Date */
    $handler->display->display_options['fields']['field_date']['id'] = 'field_date';
    $handler->display->display_options['fields']['field_date']['table'] = 'field_data_field_date';
    $handler->display->display_options['fields']['field_date']['field'] = 'field_date';
    $handler->display->display_options['fields']['field_date']['relationship'] = 'file_to_node';
    $handler->display->display_options['fields']['field_date']['alter']['alter_text'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['make_link'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['absolute'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['external'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['replace_spaces'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['trim_whitespace'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['nl2br'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['word_boundary'] = 1;
    $handler->display->display_options['fields']['field_date']['alter']['ellipsis'] = 1;
    $handler->display->display_options['fields']['field_date']['alter']['strip_tags'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['trim'] = 0;
    $handler->display->display_options['fields']['field_date']['alter']['html'] = 0;
    $handler->display->display_options['fields']['field_date']['element_label_colon'] = 1;
    $handler->display->display_options['fields']['field_date']['element_default_classes'] = 1;
    $handler->display->display_options['fields']['field_date']['hide_empty'] = 0;
    $handler->display->display_options['fields']['field_date']['empty_zero'] = 0;
    $handler->display->display_options['fields']['field_date']['hide_alter_empty'] = 1;
    $handler->display->display_options['fields']['field_date']['settings'] = array(
      'format_type' => 'long',
      'fromto' => 'both',
      'multiple_number' => '',
      'multiple_from' => '',
      'multiple_to' => '',
      'show_repeat_rule' => 'show',
    );
    $handler->display->display_options['fields']['field_date']['group_rows'] = 1;
    $handler->display->display_options['fields']['field_date']['delta_offset'] = '0';
    $handler->display->display_options['fields']['field_date']['delta_reversed'] = 0;
    $handler->display->display_options['fields']['field_date']['delta_first_last'] = 0;
    $handler->display->display_options['fields']['field_date']['field_api_classes'] = 0;
    /* Field: Content: Link */
    $handler->display->display_options['fields']['view_node']['id'] = 'view_node';
    $handler->display->display_options['fields']['view_node']['table'] = 'views_entity_node';
    $handler->display->display_options['fields']['view_node']['field'] = 'view_node';
    /* Field: Content: Title */
    $handler->display->display_options['fields']['title']['id'] = 'title';
    $handler->display->display_options['fields']['title']['table'] = 'node';
    $handler->display->display_options['fields']['title']['field'] = 'title';
    /* Sort criterion: File: Upload date */
    $handler->display->display_options['sorts']['timestamp']['id'] = 'timestamp';
    $handler->display->display_options['sorts']['timestamp']['table'] = 'file_managed';
    $handler->display->display_options['sorts']['timestamp']['field'] = 'timestamp';
    $handler->display->display_options['sorts']['timestamp']['order'] = 'DESC';

    /* Display: Page */
    $handler = $view->new_display('page', 'Page', 'page');
    $handler->display->display_options['path'] = 'test';

?>

RSSプリントアウト全体を囲む正しいマークアップについては、ビューテンプレートを操作できます。各レコードを変更するには、views-view-fields--test.tpl.phpを使用します(たとえば)。また、ビュー全体のラッパーには、views-view--test.tpl.phpを使用します(たとえば)。利用可能なテンプレートは、ビューUIの3番目のレール(折りたたまれたレール)の下部にある[テーマ]リンクの下にあります。ビューテンプレートファイルをテーマのフォルダにドロップして、すべてを削除するだけです。

ジョー

于 2012-01-30T06:27:00.197 に答える