You are here

Drupal专业开发指南 第14章 常见任务

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-08-21 15:51

老葛的Drupal培训班 Think in Drupal

下面是一些常见任务, 在你使用分类时可能会碰到。

 
在一个节点对象中查找分类术语
通过在taxonomy.module中实现hook_nodeapi(),在node_load()期间分类术语被加载到节点对象中。实际负责从数据库中取回术语的是taxonomy_node_get_terms()函数。这将生成一个包含术语对象的数组,它放在节点的taxonomy键中:
 
print_r($node->taxonomy);
 
Array (
[3] => stdClass Object (
[tid] => 3
[vid] => 1
[name] => Vancouver
[description] => By Land, Sea, and Air we Prosper.
[weight] => 0 )
)
 
构建你自己的分类查询
如果你需要生成一个某种类别的节点列表,你可能希望一切都简单一些;你可能希望Drupal将分类术语保存在node表中,那样你就可以使用下面的SQL了:
 
SELECT * FROM node WHERE vocabulary = 1 and term = 'cheeseburger'
 
灵活性是有代价的,Drupal的分类很灵活,但是Drupal开发者在使用时需要多做一些工作。在Drupal中你不能使用这么简单的查询,你必须学习使用JOIN来查询分类数据库表。
 
使用taxonomy_select_nodes()
 
在你开始编写一个查询以前,你需要考虑一下,使用一个已有的函数是否也能够得到你想要的。例如,如果你想得到标签为术语ID 5和6的节点的标题,你可以使用taxonomy_select_nodes():
 
$tids = array(5, 6);
$result = taxonomy_select_nodes($tids, 'and');
$titles = array();
while ($data = db_fetch_object($result)) {
    $titles[] = $data->title;
}

Drupal版本: