【问题标题】:How can I show a certain type of contents on a specified page with Drupal 7如何使用 Drupal 7 在指定页面上显示某种类型的内容
【发布时间】:2011-03-12 08:24:12
【问题描述】:

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

创建内容类型时可以只指定页面和url吗?

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

【问题讨论】:

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


    【解决方案1】:

    views 模块是 Drupal 的杀手级功能之一,您可能需要重新考虑完全取消它。

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

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

    【讨论】:

      【解决方案2】:

      我同意视图是一个强大的工具,你不应该把它排除在外,但如果你反对使用它(我拒绝在我的 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);
          }
        }
      }
      

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

      【讨论】:

        猜你喜欢
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-23
        • 1970-01-01
        • 1970-01-01
        • 2019-11-02
        相关资源
        最近更新 更多