我正在寻找实现一个列出某个词汇表所有术语的块的最佳方法。每个术语都应链接到列出与该术语关联的所有节点的页面。任何帮助将不胜感激。谢谢!
答案 0 :(得分:3)
请参阅此处获取精彩教程以实现您想要的内容
http://chrisshattuck.com/blog/how-add-block-menu-tags-or-other-taxonomy-terms-drupal-site
答案 1 :(得分:1)
解决此问题的最简单方法可能是使用Views,只需创建“term”类型的新视图即可。这是一个快速示例,假设您对Views UI有一些基本的了解:
值得注意的是,Views确实有一些开销,但根据我的经验,它的灵活性和易用性远远超过相对较小的性能影响。
如果您想避免使用Views,可以使用hook_block()编写一个非常简单的自定义模块并调整http://drupal.org/node/247472。如果您愿意,我可以使用基于此的示例模块编辑此答案。
答案 2 :(得分:1)
(将此作为另一个答案,因为这是与我的第一个答案不同的方法。)
正如我上面提到的,这是另一种涉及基于http://drupal.org/node/247472代码的自定义模块的方法。您也可以将该代码放入选择了“PHP”输入格式的自定义块中,但这通常被认为是不好的做法。
在名为 vocabulary_block 的sites / all / modules中添加一个新文件夹。自定义并添加以下两个文件:
<强> vocabulary_block.module 强>
<?php
/**
* @file
* Exposes a block with a simple list of terms from [vocabulary].
* Each term is linked to its respective term page.
*/
/**
* Lists terms for a specific vocabulary without descriptions.
* Each term links to the corresponding /taxonomy/term/tid listing page.
*/
function vocabulary_block_get_terms($vid) {
$items = array();
$terms = taxonomy_get_tree($vid, 0, -1, 1);
foreach($terms as $term) {
$items[]= l($term->name, "taxonomy/term/$term->tid");
}
if(count($items)) {
return theme('item_list', $items);
}
}
/**
* Implementation of hook_block().
*/
function vocabulary_block_block($op = 'list', $delta = 0, $edit = array()) {
switch ($op) {
case 'list':
$blocks[0]['info'] = t('List of [vocabulary] terms');
return $blocks;
case 'view':
if ($delta == 0) {
$vid = 43;
$block['subject'] = t('[Vocabulary]');
$block['content'] = vocabulary_block_get_terms($vid);
}
return $block;
}
}
<强> vocabulary_block.info 强>
name = Vocabulary Block
description = Exposes a block with a simple list of terms from [vocabulary]. Each term is linked to its respective term page.
; Core version (required)
core = 6.x
; Package name (see http://drupal.org/node/101009 for a list of names)
package = Taxonomy
; Module dependencies
dependencies[] = taxonomy
备注强>
务必将$vid = 43;
更改为
反映词汇的ID
你想加载。你可以找到
通过访问VID
管理员/内容/分类和看
编辑的目的地
你的词汇链接
词汇。 VID将是最后一个
该网址的片段:
管理/内容/分类/编辑/词汇/的 [VID] 强>
我通常不会硬编码 $ vid进入模块本身。然而, 设置必要的Drupal 变量和管理形式(到 允许用户选择词汇表 从Drupal接口)将是 这个答案有点过头了。
出于自己的文档目的, 不要忘记搜索/替换 [词汇]在这两个文件中 使用你自己的词汇名称 代替。
此方法可能不一定更高效 比我描述的Views方法 更早,特别是一旦你开始考虑缓存, 优化等 由于表现是一个优先事项, 我建议彻底测试一下 本页面上有各种不同的方法 选择哪一个对你来说最快。