代码之家  ›  专栏  ›  技术社区  ›  Montana Harkin

如何修改Drupal的RSS提要中的字段输出

  •  7
  • Montana Harkin  · 技术社区  · 15 年前

    尝试修改由Drupal中的视图模块创建的RSS源。

    因为RSS提要没有“主题”挂钩(正确地说,XML是无主题的),所以我需要另一种方法来修改输出到RSS中的字段,如果可能的话,最好使用template.php。

    http://api.drupal.org/api/function/format_rss_item/6 看起来很有希望,因为每行都是在这里创建的,但它没有

    node_feed() 是收集节点、创建附加字段然后调用 format_rss_item() .

    具体来说,我们需要移除 dc:creator 元素来自 $extra 数组创建于 NoDyFig()

    4 回复  |  直到 13 年前
        1
  •  0
  •   Jeremy French    15 年前

    在视图中,如果单击“样式信息”,将显示用于创建提要的模板文件。您可以复制模板,使其被视图覆盖,并从中删除dc:creator。 $item_elements 数组。

    这并不是特别好,因为您正在修改主题层中的数据,但它会满足您的需要。

        2
  •  4
  •   Cameron    13 年前

    如果您进入一个特定的内容类型,您可以根据本文设置RSS显示字段:

    http://redfinsolutions.com/redfin-blog/show-hide-fields-views-generated-drupal-rss-feed

        3
  •  2
  •   Jeremy French    15 年前

    我正在添加另一个答案,因为我最近不得不这样做,并且设法在不修改主题层中的数据的情况下完成了这项工作。

    可以向视图中添加预处理函数。不过这有点工作。

    有一些 guidelines here 但是它们有点混乱。这是我如何做这个的总结。

    首先,确保您的模块权重为>视图

    其次,将要添加预处理器的模板复制到模块目录中。将其重命名为主题信息模板列表中的某个内容。

    然后像这样编辑钩子主题(但是更改为使用需要重写的现有视图)。

    function mymodule_theme($existing, $type, $theme, $path) {
      // Copy the exsisting views theme from the existing array.
      $override = $existing['views_view_row_rss'];
      // Add my preprocessor to the list of preprocess functions
      $override['preprocess functions'][] = 'mymodule_myfunction';
      // Point to a template so that this view will be used.
      $override['template'] = 'my_more_specific_template_name';
      $override['path'] = drupal_get_path('module', 'path');
      unset($override['file']);
      // Return your theme handler.
      return array('my_more_specific_template_name' => $override);
    }
    

    然后,您应该能够在函数mymodule_myfunction中编写预处理代码。

        4
  •  0
  •   theunraveler    15 年前

    我建议使用 Views Node Feed 要执行此操作的模块。它将允许您完全编写视图为提要输出的XML。