Drupal - 通过URL获取节点的正文文本


Drupal - fetch body text of a node via URL?

>我正在尝试创建一个函数,根据给定的URL检索和显示Drupal节点的Body字段。

目前,我已经扩展了标准Drupal RSS的功能来执行检测方法。 如果您输入以下 url,则会发生这种情况:http://mysite.com/rss.xml/页=54

最后一部分至关重要 - 它告诉要从哪个节点 ID 加载。 就代码而言,我已经修改了/modules/node/node.module 中的 node_feed() 函数以执行以下操作:

if (stristr($nids, 'page=') !== FALSE) {
 $nid = substr($nids, stripos($nids, 'page=') + 5);
 $result = NULL;
 if ((string)(int)$nid === $nid) {
  $result = db_result(db_query("SELECT `nid` FROM {node} WHERE `nid` = %s AND `type` =  'flashnode'", $nid));
 }
 if ($result) {
   $item = node_load($result);
   print($item->body);
 }
 exit;
}

虽然这有效,但我们担心它有两个原因:

1) 结果是否缓存? 这是一个负载非常重的页面,将被称为很多。

2)有没有"官方"的方式来做到这一点? 一个使用带有缓存的模块,而不是半黑客的解决方法?

提前感谢您的任何指导。-汤姆

你绝对不应该为了创建一个返回节点主体的URL而破坏RSS提要。您应该创建一个非常简单的自定义模块:http://drupal.org/developing/modules

Drupal模块系统允许您设置一个url,以便像/fetch_body/1234这样的东西调用fetch_body()函数,并以$nid=1234作为参数。至于缓存,您的自定义模块中有很多选项。最明显的是使用 cache_get() 和 cache_set() 根据节点 ID 自行执行简单的缓存。

您使用的是哪个版本的Drupal?我强烈推荐《Pro Drupal Development》一书,只要确保获得与您的Drupal版本匹配的版本即可。