Хук Drupal 6: «поле в типе узла было добавлено, изменено или удалено»? - PullRequest
1 голос
/ 26 ноября 2011

Я вижу, что hook_node_type () позволяет мне перехватывать и изменять вновь созданные или вновь модифицированные типы узлов .Но очевидно, что hook_node_type () не срабатывает, когда определения полей узла создаются или модифицируются.

Например, когда я создаю тип узла "my_bio"msgstr ", hook_node_type () запускается.Но если я затем добавлю поле «my_photo» к типу узла «my_bio», то hook_node_type () не сработает.

В Drupal 6 есть способ написать ловушку, которая эффективно расширяет hook_node_type (), так что ловушка вызывается при добавлении или изменении полей в типе узла?

Кроме того, есть ли ловушка, которая вызывается при добавлении или изменении какого-либо определения поля?

Более конкретно, это то, что я пытаюсь выполнить: у меня есть два пользовательских средства форматирования, которые являются "сопряженными": formatter_1 и formatter_2.Когда какое-либо поле в типе узла добавляется или изменяется, я проверяю, является ли форматер поля formatter_1.Если это так, то я проверяю, содержит ли тип узла «сопряжение» для этого поля, то есть второе поле, форматером которого является formatter_2.Если нет, я добавляю сопряжение для этого типа узла.

1 Ответ

1 голос
/ 26 ноября 2011

EDITED

По адресу обновления к вашему вопросу ...

CCK имеет хук, который срабатывает всякий раз, когда экземпляр поля присоединяется к типу узла, или экземпляр, который уже присоединен к типу узла, обновляется. Это называется hook_content_fieldapi(); документация выглядит довольно схематично, но в файле content.crud.inc она упоминается как выполняющая следующие операции:

  1. создать экземпляр
  2. читать экземпляр
  3. экземпляр обновления
  4. удалить экземпляр

Реализация ловушки будет выглядеть примерно так:

function mymodule_content_fieldapi($op, $field) {
  if ($op == 'create instance') {
    if ($field->foo == 'bar') {
      // Do something
    }
  }
}

Поскольку «экземпляры» по существу определяют отношения между типом узла и полем, это должно быть хорошим местом для начала того, что вы пытаетесь сделать. Я бы порекомендовал сбросить значения $field в хуке, чтобы увидеть, с какими переменными вы должны работать.

...