我正在尝试根据给定的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)是否有“官方”方式来执行此操作?一个使用带缓存的模块而不是半熟练的解决方法?
提前感谢任何指导。 - 汤姆
答案 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版本相匹配的版本。