0

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

目前,我已经扩展了标准 Drupal RSS 的功能来做一个检测方法。如果您输入以下 url,就会发生这种情况: http : //mysite.com/rss.xml/page=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)有没有“官方”的方式来做到这一点?一个使用带有缓存的模块,而不是半hacky的解决方法?

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

4

1 回答 1

0

您绝对不应该破解 RSS 提要以创建返回节点正文的 URL。您应该创建一个非常简单的自定义模块:http ://drupal.org/developing/modules

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

您使用的是什么版本的 Drupal?我强烈推荐这本书 Pro Drupal Development,只要确保获得与您的 drupal 版本相匹配的版本。

于 2012-05-02T20:41:45.207 回答