Al implementar hook_field_extra_fields () , ¿puedo ocultar el campo adicional de forma predeterminada?
A veces es más amigable ofrecer los campos adicionales como una opción, en lugar de mostrarlos inmediatamente después de habilitar un módulo.
Al implementar hook_field_extra_fields () , ¿puedo ocultar el campo adicional de forma predeterminada?
A veces es más amigable ofrecer los campos adicionales como una opción, en lugar de mostrarlos inmediatamente después de habilitar un módulo.
En _field_info_prepare_extra_fields()
los campos adicionales se configuran como visibles de forma predeterminada, pero la configuración del campo adicional se almacena en la variable field_bundle_settings que puede cambiar en el módulo hook_install()
como:
$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 () , la devolución de llamada previa al procesamiento utilizada por field_attach_form () y field_attach_view () , contiene el siguiente código:
Implementando hook_field_extra_fields_display_alter () , puede alterar la configuración de visibilidad, pero eso haría que el campo no sea visible todo el tiempo que se muestre el formulario. Si no desea mostrar el campo cuando se carga el formulario por primera vez, y mostrarlo cuando, por ejemplo, se selecciona otro campo de formulario o se cambia su valor, debe usar algún código JavaScript.
fuente
<hidden>
al principio.hook_field_extra_fields()
. Sin embargo, puede modificar el campo de formulario o el formateador utilizado por el campo.Hay un parche para agregar esta capacidad al núcleo de drupal.
Si desea ver esto, por favor revíselo y envíe sus comentarios.
http://drupal.org/node/1256368#comment-7201552
fuente
En el enlace de instalación de su módulo, puede hacer una llamada a una función similar a esta y ocultará de forma predeterminada sus campos adicionales.
fuente
Un ejemplo mucho más simple. Para Drupal 7 Cree example_module.install en el directorio example_module
Documentación para hook_install https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_install/7
En su archivo example_module.module agregue
Documentación para hook_field_extra_fields https://api.drupal.org/api/drupal/modules%21field%21field.api.php/function/hook_field_extra_fields/7
fuente