如何创建在Drupal 7网站之间传输节点的订阅源?

时间:2012-06-06 21:24:23

标签: drupal rss drupal-7 export feeds

我有一个Drupal 7网站,内容类型如“events”和“news”。

我希望这些内容类型的节点能够自动导入其他网站。

我在'客户'网站上使用Feeds,XPath和'服务器'端的观看RSS字段,但我意识到文件等内容类型字段会出现问题......有什么建议吗?我希望能够在其他网站上为此内容创建新视图。

P.S。网站之间的内容类型相同(但如果您的解决方案包含其他内容,则不必如此)。

2 个答案:

答案 0 :(得分:1)

servicescontent Distribution可能会取得更大的成功。 RSS提要不太适合语义数据的传输。他们高度关注文章列表,并且通常缺少诸如" event-start-date"之类的信息。

服务允许您在服务器-drupal-site上公开服务,从而将节点公开为例如RESTfull json。然后,客户端drupalsite可以使用服务和内容分发从所述服务器导入节点。

也就是说,服务适合插入视图,并且非常重,大而复杂。如果你对大型复杂的项目过敏(就像我一样),你可能更喜欢编写简单的模块:

  • events-service:一个20+行模块,用于从数据库中获取事件,并将它们显示为json。
  • news-service:一个10+行模块,用于获取新闻节点列表并将其显示为json。
  • events-client:一个小模块(约400-800行?),它在给定的url处吃掉json并将它们变成节点。它将在节点表旁边保留一些UUID的寄存器,以避免在上游更改时重新创建节点(而是找到相关的节点并更新它)。
  • news-client:一个小模块。与上述相同。

编写这样的模块是非常有益的,因为您可以完全控制和完全理解,而不是与文档记录不佳的插件,插件,服务等复杂层进行斗争。它还允许更好的调整和性能。

一个很大的缺点是Drupal,更具体:CCK或Fields,决定数据库及其结构。当你的网站上的一些微小的配置改变破坏你的模块SQL查询时会有一点:突然之间你正在爆炸SQL错误,因为Drupal决定重命名或移出一些表,列或引用。

答案 1 :(得分:1)

也许您可以通过创建客户端将使用的xmls / json(服务器端)来共享数据。

服务是一个很好的方式。但我发现它很简单。

您可以做的是创建将以xml / json格式输出的视图...您可以通过在模块/模板文件中执行预处理功能来完成此操作。

之后客户端(可能运行cron)将采用xml / json并以编程方式创建节点。

相关问题