Як написати додатковий форматник поля для існуючого поля


9

Я хотів би написати новий форматизатор поля для існуючого типу поля. Я не хочу замінювати будь-які існуючі формати, але пропоную новий варіант.

Або мені краще використовувати topic_preprocess_field (), щоб зробити незначні зміни? Але це здається важче підтримувати, і я хотів би, щоб параметри моїх редакторів вмісту були відкритими (і в графічному інтерфейсі).

Чи може хтось вказати мені на приклад правильного способу зробити це?

Відповіді:


13

Особисто я б сказав, що формат - це краще рішення.

Вам потрібно здійснити лише два гачки:

Наприклад:

function MYMODULE_field_formatter_info() {
  return array(
    'my_formatter' => array(
      'label' => t('My formatter'),
      // The important bit...
      'field types' => array('field_type'),
    ),
  );
}

function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $settings = $display['settings'];
  $element = array();

  if ($display['type'] == 'my_formatter') {
    foreach ($items as $delta => $item) {
      $element[$delta] = array('#markup' => $item['value']);
    }
  }

  return $element;
}

Для більш поглибленого погляду завантажте модуль Приклади та подивіться на field_example - там є багато коду та документації, щоб допомогти вам у дорозі.


Ви також можете бути зацікавлені в застосуванні крючок_field_formatter_settings_form та ho_field_formatter_settings_summary, щоб ви могли дати своєму користувачеві кілька варіантів змінити спосіб подання поля.
ndvo

2

ви можете розробити спеціальний модуль або використовувати модуль "Спеціальні формати".

У першому випадку ви повинні написати модуль , який реалізує деякі Drupal 7 гачків: hook_field_formatter_info(), hook_field_formatter_view()і hook_theme(). hook_field_formatter_info()Використовується для оголошення типу форматера. Ця функція повертає масив з описом форматера. Ключовим буде ім'я форматера, і він матиме масив з міткою та типами полів. Після вам доведеться реалізувати hook_field_formatter_view()і hook_theme()для того, щоб визначити шаблон. Докладніші відомості про API формату F ield ви можете знайти в документах .

У другому випадку ви можете використовувати користувальницький форматування модуль , який дозволяє створювати призначені для користувача відображення форматування для кожного поля. За допомогою цього модуля ви можете створити форматер за допомогою спеціального PHP-коду або HTML-коду з лексемами.

Я пропоную другий спосіб, оскільки він дуже простий у використанні та налаштування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.