Ao implementar hook_field_extra_fields () , posso ocultar o campo extra por padrão?
Às vezes, é mais amigável oferecer os campos extras como opção, em vez de exibi-lo imediatamente após a ativação de um módulo.
Ao implementar hook_field_extra_fields () , posso ocultar o campo extra por padrão?
Às vezes, é mais amigável oferecer os campos extras como opção, em vez de exibi-lo imediatamente após a ativação de um módulo.
Nos _field_info_prepare_extra_fields()
campos extras, são definidos como visíveis por padrão, mas as configurações extras são armazenadas na variável field_bundle_settings, que você pode alterar nos módulos, 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 () , o retorno de chamada de pré-renderização usado por field_attach_form () e field_attach_view () , contém o seguinte código:
Ao implementar hook_field_extra_fields_display_alter () , você pode alterar a configuração de visibilidade, mas isso tornaria o campo invisível o tempo todo em que o formulário é exibido. Se você não deseja mostrar o campo quando o formulário é carregado pela primeira vez e quando, por exemplo, outro campo de formulário é selecionado ou seu valor é alterado, é necessário usar algum código JavaScript.
fonte
<hidden>
a primeira.hook_field_extra_fields()
. Você pode alterar o campo do formulário ou o formatador usado pelo campo.Existe um patch para adicionar essa capacidade ao núcleo drupal.
Se você quiser ver isso entrar, revise-o e envie-o.
http://drupal.org/node/1256368#comment-7201552
fonte
No gancho de instalação do seu módulo, você pode fazer uma chamada para uma função semelhante a esta e ela ocultará em massa seus campos extras por padrão.
fonte
Exemplo muito mais simples. Para o Drupal 7, crie example_module.install no diretório example_module
Documentação para hook_install https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_install/7
No seu arquivo example_module.module, inclua
Documentação para hook_field_extra_fields https://api.drupal.org/api/drupal/modules%21field%21field.api.php/function/hook_field_extra_fields/7
fonte