Как найти все типы узлов, содержащие определенное поле? - PullRequest
0 голосов
/ 27 ноября 2011

Как мне найти все типы узлов, содержащие определенное поле?

Предположим, например, что у меня есть два типа узлов, "mybio" и "myresume", и оба типа узлов содержат поле "myphoto".Есть ли функция, которая принимает имя моего поля в качестве входного («myphoto») и возвращает имена типов узлов, содержащих это поле («mybio» и «myresume»)?

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

Я не думаю, что есть какая-либо функция, но просмотр структуры базы данных для 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;
}
0 голосов
/ 27 ноября 2011

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

...