我需要创建类似以下内容:
颜色(词汇)
- 红色(字词)
- 黑暗(术语)
- 节点1
- 节点2
- 轻(术语)
- 节点3
- 节点4
- 黑暗(术语)
- 蓝色(术语)
- 节点5
- 节点6
- 绿色(术语)
- 节点7
- 节点8
(子弹点是缩进的。)
有没有办法用Drupal 7和view 3做到这一点?如果没有,还有其他方法吗?
我需要创建类似以下内容:
颜色(词汇)
(子弹点是缩进的。)
有没有办法用Drupal 7和view 3做到这一点?如果没有,还有其他方法吗?
Answers:
感谢refino,我使用以下模块找到了一个不错的解决方案:
在下面找到说明:
希望有帮助
干杯
iStryker编辑:这就是我得到的。我唯一更改的是将Element View设置为表视图,并删除了默认(行和带)类。
我在Drupal 7.8和Views 3 + Views字段中创建了三个视图,使用Include View将一个视图嵌套到另一个视图中,并且得到了这样的结果(附加)。
分步操作方法:
创建词汇表“颜色”并用标签填充它。
创建分类节点“颜色”的新视图-我称其为“颜色的节点”
2.1格式表,设置:分组字段:分类术语:名称
2.2高级上下文过滤器:分类术语:父术语
2.3高级关系:分类术语:使用颜色的内容
2.4设置字段:分类术语:术语ID,分类术语:名称,(field_color)内容:标题
2.5过滤条件:分类术语:词汇(=颜色)
2.6如果需要,还可以为术语ID,分类术语:名称设置“从显示中排除”
2.7设置路径:/ nodes-of-colors /%
2.8设置无结果的行为:全局:视图区域(稍后我们将再次介绍)2.9保存
3.创建新的分类节点颜色视图-我称其为“颜色节点2”
3.1格式表,设置:分组字段:无
3.2高级上下文过滤器:分类术语:术语ID
3.3高级关系:分类术语:使用颜色的内容
3.4设置字段:分类术语:术语ID,分类术语:名称,(field_color)内容:标题
3.5过滤标准:分类术语:词汇(=颜色)
3.6如果需要,还可以为术语ID,分类术语:名称设置“从显示中排除”
3.7设置路径:/ nodes-of-colors-2 /%
3.8设置无结果行为:全局:无
3.9保存
返回并再次编辑“颜色节点”
4.1转到设置无结果行为:全局:查看区域
4.2设置要插入的视图:视图:nodes_of_colors2显示:页面
4.3设置继承上下文过滤器
4.4保存
5再次返回视图(类型术语)
5.1创建分类节点的新视图颜色-我称之为“颜色树”
5.1格式表,设置:分组字段:无
5.2高级上下文过滤器:无
5.3高级关系:分类术语:父术语
5.4设置字段:分类术语:术语ID,分类术语:术语ID,分类术语:名称,视图:包括视图(包括视图)
5.5筛选条件(1):分类术语:词汇(=颜色)
5.6筛选条件(2):(父)分类术语:术语
5.7如果需要,还可以为术语ID和包含视图的标签设置“从显示中排除”
5.8设置路径:/ colors-tree
5.9设置无结果行为:无
5.10保存
...应该是这样,最后。
我自己还没有尝试过D6或D7版本,但我想我会提到它,以防您正在寻找它:视图树模块-D7进度
编辑:现在有一个D7版本,签出模块主页视图树
如果要从URL获取vid,请使用以下代码。
$vid = $_GET['vid'];
$tid = 0;
$level = 0;
print taxonomy_tree($vid, $tid, $level);
function taxonomy_tree($vid, $tid = 0, $level) {
$children = taxonomy_get_children($tid, $vid);
$output = '';
if ($children) {
$output .= '<ul>';
foreach ($children as $child) {
$level++;
$output .= '<li class="taxonomy-tree-lvl' . $level . ' ">';
print $level;
$output .= l($child->name, 'taxonomy/term/'. $child->tid) . '(' . taxonomy_term_count_nodes($child->tid) . ')';
$output .= taxonomy_tree($vid, $child->tid, $level);
$output .= '</li>';
$level--;
}
$output .= '</ul>';
}
return $output;
}
或使用以下代码。
$vocabulary = taxonomy_vocabulary_load(2);//Here pass the vid
print $vocabulary->name;
$vid1 = $_GET['vid'];
if(!$vid1) {
$vid1 = 2;
print 'empty';
}
$vid = 2;
$parent = 0;
print get_child_terms($parent, $vid1);
function get_child_terms($parent, $vid) {
$sql = "SELECT td.tid, td.vid, td.name"
. " FROM {term_data} td"
. " JOIN {term_hierarchy} th on th.tid = td.tid"
. " WHERE th.parent = %d"
. " AND td.vid = %d"
. " ORDER BY td.weight, td.name";
$terms = db_query($sql, $parent, $vid);
$output = "";
while ($aterm = db_fetch_object($terms)) {
$output .= "<li>";
$output .= l("$aterm->name", "taxonomy/term/$aterm->tid/all") . " ("
. taxonomy_term_count_nodes($aterm->tid) . ")</li>\n"
. get_child_terms($aterm->tid, $vid);
}
return ($output != "") ? "<ul style='list-style-type: none;
margin: 0px 0px 0px 20px;
padding: 0px;'>\n". $output ."</ul>\n" : "";
}
当然有:
使用上下文过滤器创建一个列出该内容类型的节点的视图:
或“内容:具有分类学术语ID(具有深度)”-如果要列出分配给特定术语及其子术语的节点,请参见。
在这种情况下,在过滤器配置中,您需要设置深度-希望该过滤器工作在以下(或以上)的级别。
然后,假设您的视图的URL为http://mysite.com/myview且'Red'tid = 1,如果您访问http://mysite.com/myview/1,它将列出您分配给以下任一节点的所有节点术语“红色”,“深色”和/或“浅色”。
我相信我已经找到了解决此问题的另一种方法,并且我认为比其他解决方案更简单。它不涉及任何其他模块,您只需要一个视图。
假设您已经创建了一个两层的分层词汇表(颜色)和一种内容类型,并且带有对该词汇表的引用,请执行以下操作:
Taxonomy term: Content using Color
和(2)Taxonomy term: Parent term
Title
(field_color
在“ Relationship”中选择并需要此关系),(2)Taxonomy term name
(不使用关系并从显示中排除)(3)Taxonomy term name
(是的,这次选择Parent
关系并排除从显示)。(Parent) Taxonomy term: Name
(2)Taxonomy term: Name
做完了 如果您有两个以上的级别,只需使用父级作为关系的关系添加另一个父级关系。
编辑:如果您不需要这种关系,您将最终陷入困境。如果父项具有节点引用的子项,则将列出两次父项。因此,这在顶级术语中限制了答案,而没有引用它的节点不会显示。另外,由于排序可能很重要,因此任何内容都引用顶级术语都可能会根据显示需求而给您带来问题。