【发布时间】:2011-11-26 23:18:37
【问题描述】:
如何找到包含特定字段的所有节点类型?
例如,假设我有两个节点类型,“mybio”和“myresume”,并且两个节点类型都包含一个字段“myphoto”。是否有一个函数将我的字段名称作为输入(“myphoto”)并返回包含该字段的节点类型的名称(“mybio”和“myresume”)?
【问题讨论】:
标签: php mysql drupal drupal-6 cck
如何找到包含特定字段的所有节点类型?
例如,假设我有两个节点类型,“mybio”和“myresume”,并且两个节点类型都包含一个字段“myphoto”。是否有一个函数将我的字段名称作为输入(“myphoto”)并返回包含该字段的节点类型的名称(“mybio”和“myresume”)?
【问题讨论】:
标签: php mysql drupal drupal-6 cck
我认为没有函数,但查看 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;
}
【讨论】:
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
【讨论】: