[英]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.