Mevcut bir alan için nasıl ek alan biçimlendiricisi yazarım


9

Varolan bir alan türü için yeni bir alan biçimlendiricisi yazmak istiyorum. Mevcut biçimlendiricileri değiştirmek istemiyorum, ancak yeni bir seçenek sunuyoruz.

Yoksa küçük değişiklikler yapmak için bir theme_preprocess_field () kullanmaktan daha iyi miyim? Ancak bunu korumak daha zor görünüyor ve içerik editörlerimi seçeneklerimi açık tutmak istiyorum (ve GUI'de).

Birisi beni bunu yapmanın uygun yolunun bir örneğine yönlendirebilir mi?

Yanıtlar:


13

Şahsen ben bir biçimlendiricinin daha iyi bir çözüm olduğunu söyleyebilirim.

Uygulamanız gereken sadece iki kanca var:

Örneğin:

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

Daha ayrıntılı bir görünüm için Örnekler modülünü indirin ve field_example'e bakın - sizi yolunuza çıkarmak için bol miktarda kod ve dokümantasyon var.


Ayrıca, kullanıcılara alanın sunulma biçimini değiştirmek için bazı seçenekler sunabilmeniz için hook_field_formatter_settings_form ve hook_field_formatter_settings_summary uygulamalarıyla da ilgilenebilirsiniz.
ndvo

2

özel bir modül geliştirebilir veya "Özel biçimlendiriciler" modülünü kullanabilirsiniz.

İlk durumda bazı Drupal 7 kanca uygulayan bir modül yazmak zorunda: hook_field_formatter_info(), hook_field_formatter_view()ve hook_theme(). hook_field_formatter_info()Formatlayıcı türünü bildirmek için kullanılır. Bu işlev, biçimlendirici açıklamasını içeren bir dizi döndürür. Anahtar, biçimlendirici adı olacak ve etiketi ve alan türlerini içeren bir diziye sahip olacaktır. Eğer uygulamak zorunda sonra hook_field_formatter_view()ve hook_theme()şablonu tanımlamak için. Dokümanlar'da Kaynak Biçimlendirici API'sı hakkında daha fazla ayrıntı bulabilirsiniz .

İkinci durumda , her alan için özel ekran formatlayıcıları oluşturmanıza izin veren Özel Formatlayıcılar modülünü kullanabilirsiniz . Bu modül ile özel PHP kodu veya jetonlu HTML kodu kullanarak biçimlendirici oluşturabilirsiniz.

İkinci yolu öneririm çünkü kullanımı ve yapılandırması çok kolaydır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.