繁体   English   中英

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

[英]Drupal - fetch body text of a node via URL?

我试图基于给定的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解决方法的模块?

在此先感谢您的指导。 -汤姆

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

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

您正在使用什么版本的Drupal? 我会强烈推荐这本书Pro Drupal Development,只需确保获得与您的Drupal版本匹配的版本即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM