Làm cách nào để tôi viết một trình định dạng trường bổ sung cho trường hiện có


9

Tôi muốn viết một định dạng trường mới cho một loại trường hiện có. Tôi không muốn thay thế bất kỳ trình định dạng hiện có nào nhưng cung cấp tùy chọn mới.

Hoặc tôi nên sử dụng theme_pre process_field () để thực hiện các thay đổi nhỏ? Nhưng điều này dường như khó duy trì hơn và tôi muốn giữ các tùy chọn trình chỉnh sửa nội dung của mình mở (và trong GUI).

Ai đó có thể chỉ cho tôi một ví dụ về cách thích hợp để làm điều này?

Câu trả lời:


13

Cá nhân tôi muốn nói một định dạng là giải pháp tốt hơn.

Chỉ có hai móc bạn cần thực hiện:

Ví dụ:

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

Để có cái nhìn sâu hơn, hãy tải xuống mô-đun Ví dụ và xem trường_example - có rất nhiều mã và tài liệu ở đó để giúp bạn tiếp tục.


Bạn cũng có thể quan tâm đến việc triển khai hook_field_formatter_sinstall_form và hook_field_formatter_sinstall_summary để bạn có thể cung cấp cho người dùng của mình một số tùy chọn để thay đổi cách trình bày trường.
ndvo

2

bạn có thể phát triển một mô-đun tùy chỉnh hoặc sử dụng mô-đun "Trình định dạng tùy chỉnh".

Trong trường hợp đầu tiên bạn phải viết một module mà thực hiện một số Drupal 7 móc: hook_field_formatter_info(), hook_field_formatter_view()hook_theme(). hook_field_formatter_info()Được sử dụng để khai báo các loại định dạng. Hàm này trả về một mảng với mô tả định dạng. Khóa sẽ là tên của trình định dạng và nó sẽ có một mảng với nhãn và các loại trường. Sau khi bạn phải thực hiện hook_field_formatter_view()hook_theme()để xác định mẫu. Bạn có thể tìm thêm chi tiết về API Fatter Fatter trong tài liệu .

Trong trường hợp thứ hai, bạn có thể sử dụng mô-đun Trình định dạng tùy chỉnh cho phép tạo trình định dạng hiển thị tùy chỉnh cho mọi trường. Với mô-đun này, bạn có thể tạo trình định dạng bằng mã PHP tùy chỉnh hoặc mã HTML bằng mã thông báo.

Tôi đề nghị cách thứ hai vì rất dễ sử dụng và cấu hình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.