drupal-获取节点内容

有了节点 ID,我们就可从数据库中取出指定的内容片段了。

为了做到这一点,我们可以编写令一条(更复杂)的 SQL 语句,以获取节点内容。因为节点内容散布在多个表格中,我们不得不使用若干个联合(joins)以获得需要的内容。幸运的是,有个更简单的方法。

Drupal 的节点 API 提供了一个方便的函数替我们完成繁琐的工作: node_()。如果我们传递给这个函数一个 NID,它将反回一个包含节点内容的对象。

提示:节点是用 Drupal 模块实现的。节点API的主要部分(位于drupal/modules/node/node.module)提供了几十个函数以处理节点。

使用 node_load(), 我们就可以完成函数了,如下:
 

function _philquotes_get_quote() {
    $sql = "SELECT nid FROM {node} ".
	"WHERE status=1 AND type='quote' ORDER BY RAND() LIMIT 1";
    $res = db_query($sql);
    $item = db_fetch_object($res);
    $quote = node_load($item->nid);
    return $quote;
}

只有高亮的两条是新增的。我们这里所做的,就是用 node_load() 取出一个完整的节点对象,然后返回这个对象。(如果传给 node_load() 一个 NULL 值,它只是返回 FALSE。我们在 philquotes_block() 函数中处理空值的情况。)

 

在我们的模块中,这起什么作用呢?让我们回顾一下前面编写的philquotes_block() 函数中的几行:

 

$item = _philquotes_get_quote();
if(!empty($item)) {
    $content = theme('philquotes_quote',
		     check_plain($item->body),
		     check_plain($item->title));

 

现在,philquotes_block() 中的 $item 变量包含我们刚才用_philquotes_get_quote() 取出的节点对象($quote的值)。我们现在得到了所需数据。现在我们需要对它进行格式化以便显示。

接下来,我们将学习 theme()函数(和相关代码),以及它如何把我们的对象处理成一个风格化的字符串。

评论

发表新评论

此内容将保密,不会被其他人看见。
  • 允许HTML标签:<a> <img><em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><p>
  • 自动断行和分段。

更多关於格式化选项的信息

Image CAPTCHA
验证码
|