原文链接http://drupal.org/node/1118216
我们要新建的页面方法基本会与 current_posts_block_view的功能相同,它将从我们要建立的current_posts_contents方法中获得数据。所以我们需要在current_posts_contents方法中来读取数据库并获得数据。我们所需要做的就是编辑这个方法,调用一些数据库命令,然后把返回的信息传给页面。
下面是我们要编辑的代码:
<?php
function current_posts_contents($display){ //$display argument is new.
//Get today's date.
$today = getdate();
//Calculate midnight a week ago.
$start_time = mktime(0, 0, 0,$today['mon'],($today['mday'] - 7), $today['year']);
//Get all posts from one week ago to the present.
$end_time = time();
$max_num = variable_get('current_posts_max', 3);
//Use Database API to retrieve current posts.
$query = db_select('node', 'n')
->fields('n', array('nid', 'title', 'created'))
->condition('status', 1) //Published.
->condition('created', array($start_time, $end_time), 'BETWEEN')
->orderBy('created', 'DESC'); //Most recent first. Query paused here.
if ($display == 'block'){
// Restrict the range if called with 'block' argument.
$query->range(0, $max_num);
} //Now proceeds to execute().
//If called by page, query proceeds directly to execute().
return $query->execute();
}
?>
首先,我们把$display这个变量假如到方法中。然后在数据库命令构建结束后,我们来判断这个变量,来决定如何继续构建和运行数据库命令。如果这个变量是'block', 表明是block在请求信息,那么我们则限制选择的范围,因为block能显示的条目有限。如果变量参数是'page'。表明是page页面在请求信息,那么我们将不对数据库选择范围进行限制,页面将显示所有信息。
编辑current_posts_block_view
如果我们要想我们的代码像current_posts_block_view一样工作,必须要在block区块的显示代码中加入雷斯下面的代码来调用我们所建立的方法。
<?php
$result = current_posts_contents('block');
?>
要想代码工作得像block_view一样,只需把‘block’作为参数传到方法中。