【发布时间】:2011-03-12 08:24:12
【问题描述】:
当我创建一个内容类型时,我想在一个页面上显示这个内容类型的所有帖子,我必须使用视图模块。我不喜欢那样。
创建内容类型时可以只指定页面和url吗?
但只有一个选项,只有首页。我可以改变它吗?希望大家能告诉我。
【问题讨论】:
标签: drupal drupal-7 drupal-content-types
当我创建一个内容类型时,我想在一个页面上显示这个内容类型的所有帖子,我必须使用视图模块。我不喜欢那样。
创建内容类型时可以只指定页面和url吗?
但只有一个选项,只有首页。我可以改变它吗?希望大家能告诉我。
【问题讨论】:
标签: drupal drupal-7 drupal-content-types
views 模块是 Drupal 的杀手级功能之一,您可能需要重新考虑完全取消它。
无论如何,如果你想显示一个类型的所有节点,你必须自己在一个自定义模块中编写代码。这意味着您必须编写一些 SQL,加载节点并将它们呈现在列表中。在此示例中,您可以使用 EntityFieldQuery 类来构造查询,而不是自己编写 SQL。
最终结果与视图为您所做的没有太大区别,唯一的区别是您需要使用模块中的代码创建所有这些,而不是仅在视图 UI 中进行设置。
【讨论】:
我同意视图是一个强大的工具,你不应该把它排除在外,但如果你反对使用它(我拒绝在我的 2 个网站上使用它,纯粹是因为开销),你可以使用分类法.分类模块已经有每个术语的视图样式列表,我用它来实现与您正在寻找的类似的东西:
设置一个词汇表,其术语与您的节点类型匹配并记下 vid
在你的模块文件中添加一个 hook_node_insert:
mymodulename_node_insert($node){
$terms=taxonomy_get_tree($my_vid); //where $my_vid == the vid of your vocabulary.
foreach($terms as $term){
if(strtolower($node->type)==strtolower($term->name)){
$items=array((array)$term);
$field['storage']['type']='field_sql_storage';
taxonomy_field_insert('node', $node, $field, null, null, $items);
}
}
}
之后,您只需添加指向您的分类页面的菜单链接。顺便提一下,我使用自己的自定义函数渲染了所有不使用视图的列表,因此我不确定此方法可能存在哪些限制。
【讨论】: