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