Hướng dẫn mở rộng để thêm field vào entity / node display trong Drupal 7

Hướng dẫn mở rộng để thêm field vào entity / node display trong Drupal 7

I had a case recently, where I needed to add custom data to the node display and wanted this data to behave like a field, however the data itself didn't belong to a field. By "behaving like a field" I mean you can that field at node display settings and able to control it's visibility, label and weight by dragging and dropping that field.

So, as you may have undestood, hook_preprocess_node / node_view_alter approach alone wasn't enough.

But we do Drupal right? Then there should be a clever way to do what we want and it is here: hook_field_extra_fields() comes for help!

hook_field_extra_fields() (docs: https://api.drupal.org/api/drupal/modules!field!field.api.php/function/h...) exposes "pseudo-field" components on fieldable entities. Neat!

Here's how it works, let's say we want to expose a welcoming text message as a field for a node, here's how we do that:

/**
 * Implements MODULE_NAME_field_extra_fields().
 */
function hook_field_extra_fields() {
  $extra['node']['article']['welcome_message'] = array(
    'label' => t('Welcome message'),
    'description' => t('A welcome message'),
    'weight' => 0,
  );
  return $extra;
}

As you see in example above, we used hook_field_extra_fields() to define an extra field for an enity type of 'node' and 'article' bundle (content type). You can actually choose any other type of entity that's available on your system (think user, taxonomy_term, profile2, etc).

Now if you'll clear your cache and go to display settings for Node -> Article you should see 'A welcome message' field available.

Ok the last bit is to actually force our "extra" field to output some data, we do this in hook_node_view:

/**
 * Implements hook_node_view().
 */
function MODULE_NAME_node_view($node, $view_mode, $langcode) {
  // Only show the field for node of article type
  if ($node->type == 'article') {
    $node->content['welcome_message'] = array(
      '#markup' => 'Hello and welcome to our Drupal site!',
    );
  }
}

That should be all. Now you should see a welcome message on your node oage. Please note, if you're adding an extra field to another entity type (like, taxonomy_term for example), you should do the last bit in this entity's _view() hook.

UPDATE: I put code snippets for this tutorial at dropbucket.org here: http://dropbucket.org/node/1398

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy Tran owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy
  • Phone/Zalo: (+84) 944 225 212
  • WhatsApp: (+84) 944 225 212
  • Line Messenger: (+84) 944 225 212
  • Email: asaleotestf@gmail.com
  • Telegram Messenger: https:/t.me/tommytran0401

Quảng cáo việc làm

 

Thích hợp các bạn nữ mảng thợ may làm việc tại nước NGA

Đơn hàng Tuyển dụng 100 Thợ may đi Nga(đợt 1 tháng 3.2021, đợt 2 tháng 5.2021). Lương thực lãnh 800 USD, bao ăn ở, vé máy bay và visa, phí xuất cảnh(1800 USD)trả khi đi làm có lương. Bạn có thể liên hệ CÔNG TY qua Phone/Zalo: (+84) 944 225 212. Công ty sẽ tư vấn cho bạn.

Xem chi tiết: >>> https://bit.ly/3o9NOfR

Tìm kiếm bất động sản

 

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Top 10 Thủ Thuật SEO Webmaster Cần Tránh (Phần 2)

Top 10 Thủ Thuật SEO Webmaster Cần Tránh (Phần 2)

Đây là một trong những cách thức rất phổ biến và được vận dụng rộng rãi bởi các Webmaster và những người làm SEO.

Tối ưu hóa hiệu ứng KDE cho Desktop

Tối ưu hóa hiệu ứng KDE cho Desktop

KDE (chữ viết tắt của K Desktop Environment) là một môi trường màn hình nền hiện đại trên các máy vi tính chạy dưới hệ điều hành UNIX/Linux

day con kieu nhat

Dạy con kiểu Nhật - mẹ Việt áp dụng như thế nào để con thông minh.

Phương pháp nuôi dạy con theo kiểu Nhật từ lâu đã được nhiều mẹ Việt đánh giá cao bởi tính ưu việt và hiệu quả nổi bật. Tuy nhiên, làm sao để áp dụng cách nuôi dạy con của người Nhật vào gia đình Việt Nam là câu hỏi nhiều phụ huynh thắc mắc. Cũng như, phương pháp dạy con kiểu Nhật giúp gì cho quá trình phát triển trí thông minh của trẻ? Cùng tìm hiểu trong bài viết dưới đây.

BLOG POSTS