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

时间:2012-05-02 17:56:11

标签: php drupal caching

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

目前,我已经扩展了标准Drupal RSS的功能来执行检测方法。如果您输入以下网址,则会发生这种情况: 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)是否有“官方”方式来执行此操作?一个使用带缓存的模块而不是半熟练的解决方法?

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

1 个答案:

答案 0 :(得分:0)

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

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

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