如何修改Drupal';s的RSS源

如何修改Drupal';s的RSS源,drupal,rss,views,Drupal,Rss,Views,尝试修改Drupal中视图模块创建的RSS提要 由于RSS提要没有“主题”钩子(因为XML是无主题的),因此我需要另一种方法来修改输出到RSS中的字段,如果可能,最好使用template.php 看起来很有希望,因为这是创建每一行的地方,但事实并非如此 node\u feed()收集节点,创建附加字段,然后调用format\u rss\u item() 具体来说,我们需要从节点feed()中创建的$extra数组中删除dc:creator元素。我建议使用模块来完成此操作。它将允许您完全编写由提要

尝试修改Drupal中视图模块创建的RSS提要

由于RSS提要没有“主题”钩子(因为XML是无主题的),因此我需要另一种方法来修改输出到RSS中的字段,如果可能,最好使用template.php

看起来很有希望,因为这是创建每一行的地方,但事实并非如此

node\u feed()
收集节点,创建附加字段,然后调用
format\u rss\u item()


具体来说,我们需要从
节点feed()

中创建的
$extra
数组中删除
dc:creator
元素。我建议使用模块来完成此操作。它将允许您完全编写由提要视图输出的XML。

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


这并不是特别好,因为您正在修改主题层中的数据,但它可以做您想要做的事情。

我正在添加另一个答案,因为我最近不得不这样做,并且在不修改主题层中的数据的情况下成功地做到了这一点

可以向视图中添加预处理函数。不过,这是一项工作

有一些,但有点混乱。下面是我对如何做到这一点的总结

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

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

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

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\u myfunction中编写预处理代码。

如果您进入特定的内容类型,您可以按照以下内容设置RSS显示字段:


我发现了这个链接,其中提到了如何修改输出,但它看起来效率很低,因为它为提要中的每个节点执行额外的db查询。查看timtoon链接,它需要创建一个页面视图(而不是rss视图)这在目前还不可行。这是可行的,但Drupal 6的模块仍在开发中,没有完全实现view_plugin_样式类的接口,因此会出现错误。这也会起作用,但我们最终使用沉思来设计提要中的内容类型。我认为这是目前最好的解决方案s您可以影响所需的RSS源,所有RSS源或其中一个RSS源。$item\u元素不是数组,您必须重新设置它们,请参见