Come faccio a scrivere un formattatore di campo aggiuntivo per un campo esistente


9

Vorrei scrivere un nuovo formattatore di campo per un tipo di campo esistente. Non voglio sostituire nessun programma di formattazione esistente ma offro una nuova opzione.

O sto meglio usando un theme_preprocess_field () per fare piccole modifiche? Ma questo sembra essere più difficile da mantenere e mi piacerebbe tenere aperte le opzioni dei miei editor di contenuti (e nella GUI).

Qualcuno può indicarmi un esempio del modo corretto di farlo?

Risposte:


13

Personalmente direi che un formattatore è la soluzione migliore.

Esistono solo due hook da implementare:

Per esempio:

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;
}

Per uno sguardo più approfondito, scarica il modulo Esempi e guarda field_example: c'è un sacco di codice e documentazione lì per iniziare.


Potresti anche essere interessato all'implementazione di hook_field_formatter_settings_form e hook_field_formatter_settings_summary in modo da poter offrire all'utente alcune opzioni per modificare la modalità di presentazione del campo.
ndvo,

2

puoi sviluppare un modulo personalizzato o utilizzare il modulo "Formatter personalizzati".

Nel primo caso si deve scrivere un modulo che implementa alcune Drupal 7 ganci: hook_field_formatter_info(), hook_field_formatter_view()e hook_theme(). hook_field_formatter_info()Viene utilizzato per dichiarare il tipo di formattatore. Questa funzione restituisce un array con la descrizione del formattatore. La chiave sarà il nome del formattatore e avrà un array con l'etichetta e i tipi di campo. Dopo aver implementato hook_field_formatter_view()e hook_theme()per definire il modello. Puoi trovare maggiori dettagli sull'API F ield Formatter nei documenti .

Nel secondo caso è possibile utilizzare il modulo Formatter personalizzati che consente di creare formattatori di visualizzazione personalizzati per ogni campo. Con questo modulo è possibile creare il formatter utilizzando il codice PHP personalizzato o il codice HTML con token.

Suggerisco il secondo modo perché è molto facile da usare e da configurare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.