【问题标题】:How to find all nodetypes containing a particular field?如何查找包含特定字段的所有节点类型?
【发布时间】:2011-11-26 23:18:37
【问题描述】:

如何找到包含特定字段的所有节点类型?

例如,假设我有两个节点类型,“mybio”和“myresume”,并且两个节点类型都包含一个字段“myphoto”。是否有一个函数将我的字段名称作为输入(“myphoto”)并返回包含该字段的节点类型的名称(“mybio”和“myresume”)?

【问题讨论】:

    标签: php mysql drupal drupal-6 cck


    【解决方案1】:

    我认为没有函数,但查看 CCK 的数据库结构可以解决问题:

    function content_field_get_node_types($field_name) {
      $query = db_query("SELECT DISTINCT type_name FROM {content_node_field_instance} WHERE field_name = '%s'", $field_name);
    
      $node_types = array();
      while ($row = db_fetch_array($query)) {
        $node_types[] = $row['type_name'];
      }
    
      return $node_types;
    }
    

    【讨论】:

      【解决方案2】:

      CCK 提供了一个管理页面,您可以在其中查看内容类型和字段之间的关联:管理 > 内容类型 > 字段(路径:www.example.com/admin/content/types/fields

      如果您查看源代码,您会发现在这个函数中content_fields_list() (sites\all\modules\cck\includes\content.admin.inc) 是神奇的地方。

      您可以在此处查看源中的 SQL:http://drupalcontrib.org/api/drupal/contributions--cck--includes--content.admin.inc/function/content_fields_list/6

      【讨论】:

        猜你喜欢
        • 2023-03-23
        • 2017-03-30
        • 1970-01-01
        • 2014-06-07
        • 2012-09-03
        • 2019-02-11
        • 2017-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多