Saat menerapkan hook_field_extra_fields () , dapatkah saya membuat bidang ekstra disembunyikan secara default?
Terkadang lebih ramah untuk menawarkan bidang tambahan sebagai opsi, alih-alih menampilkannya segera setelah modul diaktifkan.
Saat menerapkan hook_field_extra_fields () , dapatkah saya membuat bidang ekstra disembunyikan secara default?
Terkadang lebih ramah untuk menawarkan bidang tambahan sebagai opsi, alih-alih menampilkannya segera setelah modul diaktifkan.
Di _field_info_prepare_extra_fields()
bidang tambahan diatur ke terlihat secara default, tetapi pengaturan bidang tambahan disimpan dalam variabel field_bundle_settings yang dapat Anda ubah di modul Anda hook_install()
seperti:
$entity_type = 'node';
$bundle = 'article';
$field_name = 'my_extra_field';
$view_mode = 'teaser';
$field_bundle_setting = variable_get('field_bundle_settings', array());
$field_bundle_setting[$entity_type][$bundle]['extra_fields']['display'][$field_name][$view_mode]['visible'] = FALSE;
variable_set('field_bundle_settings', $field_bundle_setting);
_field_extra_fields_pre_render () , panggilan balik pra-render yang digunakan oleh field_attach_form () dan field_attach_view () , berisi kode berikut:
Menerapkan hook_field_extra_fields_display_alter () , Anda dapat mengubah pengaturan visibilitas, tetapi itu akan membuat bidang tidak terlihat sepanjang waktu formulir ditampilkan. Jika Anda ingin tidak menampilkan bidang saat formulir dimuat pertama kali, dan menunjukkannya ketika, misalnya, bidang formulir lain dipilih atau nilainya diubah, maka Anda perlu menggunakan beberapa kode JavaScript.
sumber
<hidden>
pada awalnya.hook_field_extra_fields()
. Anda bisa mengubah bidang formulir, atau mengubah formatter yang digunakan oleh bidang tersebut.Ada tambalan untuk menambahkan kemampuan ini ke drupal core.
Jika Anda ingin melihat ini masuk silakan tinjau dan berikan umpan balik.
http://drupal.org/node/1256368#comment-7201552
sumber
Di kait instal modul Anda, Anda dapat membuat panggilan ke fungsi yang sama dengan ini dan itu akan secara massal menyembunyikan bidang tambahan Anda secara default.
sumber
Contoh yang jauh lebih sederhana. Untuk Drupal 7 Buat example_module.install di bawah direktori example_module
Dokumentasi untuk hook_install https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_install/7
Dalam file example_module.module Anda, tambahkan
Dokumentasi untuk hook_field_extra_fields https://api.drupal.org/api/drupal/modules%21field%21field.api.php/fungsi/hook_field_extra_fields/7
sumber