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

时间:2011-11-26 23:18:38

标签: php mysql drupal drupal-6 cck

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

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

2 个答案:

答案 0 :(得分:2)

我不认为有一个功能但是查看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;
}

答案 1 :(得分:-1)

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