跳转到主要内容
rli 提交于 28 March 2012

原文链接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’作为参数传到方法中。