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

时间:2010-01-05 15:40:26

标签: drupal rss views

尝试修改Drupal中Views模块创建的RSS源。

由于RSS提要没有'theme_'挂钩(理所当然,因为XML是无主题的),我需要一种替代方法来修改输出到RSS中的字段,如果可能的话,最好使用template.php。 / p>

http://api.drupal.org/api/function/format_rss_item/6看起来很有希望,因为这是创建每一行的地方,但它不是

node_feed()收集节点,创建其他字段,然后调用format_rss_item()

具体来说,我们需要从dc:creator

中创建的$extra数组中删除node_feed()元素

4 个答案:

答案 0 :(得分:4)

如果您使用特定内容类型,则可以按照以下帖子设置RSS显示字段:

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

答案 1 :(得分:2)

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

您可以在视图中添加预处理功能。虽然这有点工作。

有一些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中编写预处理代码。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

当您修改主题图层中的数据时,这不是特别好,但它会做您想要的。