如何使用Drupal 7在指定页面上显示某种类型的内容

时间:2011-03-12 08:24:13

标签: drupal drupal-7 drupal-content-types

当我创建内容类型时,我想在页面上显示此内容类型的所有帖子,我必须使用视图模块。我不喜欢那样。

我可以在创建内容类型时指定页面和网址吗?

但只有一个选项,只有首页。我可以改变吗?希望你们能告诉我。

2 个答案:

答案 0 :(得分:0)

视图模块是Drupal的杀手级功能之一,您可能需要重新考虑将其完全写下来。

无论如何,如果要显示某个类型的所有节点,则必须自己在自定义模块中对其进行编码。这意味着您必须编写一些SQL,加载节点并在列表中呈现它们。在此示例中,您可以使用EntityFieldQuery类来构造查询,而不是自己编写SQL。

最终结果与视图将为您做的差别不大,唯一的区别是您需要使用模块中的代码创建所有这些,而不是仅在视图UI中设置它。

答案 1 :(得分:0)

我同意视图是一个强大的工具,你不应该指望,但如果你反对使用它(我拒绝在我的两个网站上使用它纯粹是由于开销),你可以改用分类法。分类模块已经有了每个术语的视图样式列表,我使用它来实现类似于你正在寻找的东西:

设置一个词汇表,其术语与您的节点类型相匹配,并记下视频

将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);
    }
  }
}

之后,您只需添加指向分类页面的菜单链接。就像一个注释,我使用自己的自定义函数渲染我不使用视图的所有列表,因此我不确定此方法可能存在哪些限制。