Drupal在分类法和内容之间构建自定义查询

时间:2014-05-17 07:42:23

标签: php mysql sql drupal drupal-7

我收到了一个由Drupal 7上的其他人编码的项目,但显然没有遵循Drupal的任何标准,并且被编码为覆盖模板系统的网站(修改或编辑为时已晚)任何当前的结构)。

我有以下问题需要构建自定义查询:

CMS中的数据是这样创建的:

类别(在分类中创建) - >子类别(作为内容类型创建) - > item(作为内容类型创建)

在CMS中添加条目时,工作流程如下:

  1. 首先从分类法(名为Category)
  2. 创建主要类别
  3. 您从内容
  4. 创建子类别
  5. 添加/编辑子类别时,从广播列表中选择父类别
  6. 并从复选框列表中选择项目
  7. 我已经从CMS截取了屏幕截图,因此有助于使结构更清晰,可以在这里找到:

      

    http://dropcanvas.com/qdokx/

    问题是我根本无法为此构建视图, 我需要创建一个可以执行以下操作的自定义查询:

    1. 阅读类别
    2. 阅读属于每个类别的子类别
    3. 阅读每个类别下的项目
    4. 使用PHP,使用上述数据上的循环生成自定义HTML
    5. 这样做的目的是在网站上,用户能够点击一个类别,并获得一个子类别列表。单击子类别时,可以看到其中的项目。

      在典型的PHP / MySQL中,查询过程看起来像这样(假设没有连接):

      <?php
      $categories = query('SELECT * FROM categories');
            while ($category = fetcharray($catetgories)) {
                $subcategories = query('SELECT * FROM subcategories WHERE category = $category['id']);
                while ($subcategory = fetcharray($subcategories)) {
                     $items = query('SELECT * FROM items WHERE subcategory = $subcategory['id']);
                }
             }
      ?>
      

      我需要能够通过查询来获取分类法和#34;类别&#34;,找到属于它的子类别(内容类型),然后查找属于子类别的项目来复制上述内容

1 个答案:

答案 0 :(得分:0)

您可以使用Drupal API函数taxonomy_get_tree来获取分类树,并在每个子类别迭代下使用EntityFieldQuery来加载项(节点)列表。

但我建议您创建具有三个选择表单元素的自定义AJAX字段并依赖于加载值。