我正在尋找一個優雅的(儘可能)解決方案來在Drupal網站中構建特定頁面。來自WebService的Drupal模塊頁面
於是,我開始有:
function hook_menu() {
$items = array();
$items['module/articles'] = array(
'title' => 'List of articles',
'page callback' => 'show_article_list',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
$items['module/articles/%'] = array(
'title' => '',
'page callback' => 'show_article_page',
'page arguments' => array(2),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
的第一項回到我的文章的列表,並且第二內建一個頁面的文章%(其中%是一個id,使它很簡單)。
問題是,我使用web服務來獲取列表和每個頁面。因此,頁面回調打電話給我的web服務(例如http://api/articles),並根據結果構建頁面。
它的工作原理。但是,如果我想設置每個頁面的標題,則必須使用標題回調,這是另一個功能。而且,我不想再撥打我的網絡服務。 要明確:http://api/articles/id,返回一個結果中的標題和內容。所以使用兩種方法讓我調用這個URL兩次:一個用於標題,另一個用於內容。
有沒有更好的解決方案來解決這個問題?
提前許多感謝,
謝謝你的回答!我正在實施你描述的第二種方法,所以你讓我意識到它是*好方法*。只是一個問題。你說article_load會靜態緩存數據。你的意思是應該自動完成?因爲我手動執行了,使用**&drupal_static(__ FUNCTION __); **(我的測試讓我猜測它不是自動的。) – TiPi
不,緩存不是自動的,你必須用drupal_static()來實現它。所以,當我說「有一個函數可以加載和靜態緩存文章」我的意思是你有一個函數,你必須靜態緩存文章。 –