簡體   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