我正在寻找一个优雅的(尽可能)解决方案来在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()来实现它。所以,当我说“有一个函数可以加载和静态缓存文章”我的意思是你有一个函数,你必须静态缓存文章。 –