Como ocultar as opções de formato de entrada e o texto de ajuda em uma área de texto?


32

Como ocultar as opções de formato de entrada e o texto de ajuda em uma área de texto ao adicionar | editar um nó?

Captura de tela - parte a ocultar selecionada com retângulo vermelho


Eu acho que você pode fazê-lo se você acessar o formulário através hook_form_alterno entanto Eu não tenho certeza sobre os detalhes, então eu não vou postar isso como uma resposta ...
acm

Respostas:


26

Para o Drupal 7, você pode usar o módulo Simplify . Ele permite ocultar a área de texto das opções Formato do texto, bem como outros elementos nos formulários do nó.


3
Se você olhar para sua fonte ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), o módulo usará o jQuery para ocultar as opções de formato de texto. É uma pena, porque 1: você só quer ocultar o formato do texto e não precisa de todo o módulo e o 2: javascript se torna um requisito. Por que não esconder isso com CSS, como sugere a resposta de Ionut Adrian Luchian? É definitivamente apropriado e limpo.
B2F 16/10

simplificar não funcionou consistentemente para mim. em alguns casos, funcionou em outros não.
snowguy 22/01

Não funcionou para mim. Eu usei o tema de inicialização, talvez por isso.
Sobi3ch 5/03

Simplificar também não funcionou para mim.
Артем Ильин

25

Você pode usar hook_form_alter em um módulo personalizado para fazer isso.

Por exemplo, no drupal 7:

// hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
    // We want this on a specific field
    $form['YOUR_FIELD']['und']['0']['format']['#access'] = FALSE;
    return $form;
}

2
isso funciona, mas tem um efeito colateral: remove o editor wysiwyg da área de texto
náufrago

Isso fez o truque para mim. Eu só queria limpar a entrada de texto.
RevNoah

1
é melhor mencionar LANGUAGE_NONE em vez de 'und' e a função after_build deve ter uma verificação baseada em funções, caso outras funções superiores possam exibir a caixa Formato de texto.
Aneek Mukhopadhyay

12

No drupal 6, há o módulo Better Formats, que faz exatamente o que você deseja, existe uma versão 7 dev, mas vem com um aviso de que está em desenvolvimento pesado. Se o site ainda estiver em desenvolvimento, pode valer a pena tentar.


Parecia funcionar bem para os usuários que não estavam admin, mesmo se você remover as permissões para o grupo admin, user 1 ainda vai ver as opções na D7
joelpittet

Formatos melhores funciona bem para D7, é estável, sem problemas graves e uma versão Beta 2 de janeiro de 2016.
Duncanmoo

9

Na verdade, você pode simplesmente matar o item de formato do formulário.

function MY_THEME_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_THEME_configure_comment_form';
}

function MY_THEME_configure_comment_form(&$form) {
  unset($form[LANGUAGE_NONE][0]['format']);
  return $form;
}

+1, a melhor solução. Para futuros visitantes, substitua PERSONALIZADO pelo nome do seu tema ativo. Esse trecho de código deve estar no script template.php na pasta do tema ativo. E se o seu site tiver ativado vários idiomas, substitua LANGUAGE_NONE pelo seu código de idioma.
Janaka R Rajapaksha

2
CUSTOMdestina-se ao seu nome de tema personalizado. Você NUNCA deve codificar um idioma, se precisar do idioma ativo global $language;para obtê-lo.
DoubleJosh 23/14 /

Nota: LANGUAGE_NONEé uma constante com valor und... não use und.
doublejosh

Isso também mata o wysiwyg
digitgopher

7

Eu acho que a melhor solução é impedir o acesso ao elemento de seleção de formato de texto. Se você a desarmar completamente, os efeitos colaterais indesejados serão enfrentados como um editor WYSIWYG que desaparece. Então, proponho o seguinte código.

function MY_MODULE_form_comment_form_alter(&$form, &$form_state, &$form_id) {
  $form['comment_body']['#after_build'][] = 'MY_MODULE_hide_text_format';
}


function MY_MODULE_hide_text_format(&$form) {
  $form[LANGUAGE_NONE][0]['format']['#access'] = false;
  return $form;
}

Esta é uma excelente solução se você deseja apenas ocultá-lo em um campo específico. E o WYSIWYG permanece funcional.
Dalin

6

Use CSS, da maneira mais fácil. Firebug

#body-add-more-wrapper #edit-body-und-0-format {display: none;}

O poder do CSS e do Firebug

Boa sorte.


3
Eu não recomendaria "embora funcione" CSS oculto.
Saadlulu3 /

não é uma resposta, uma fuga
Pan Chrono

5
Por quê ? Esta é uma ótima resposta, porque a questão é ocultá-lo, não removê-lo. Não é como esconder que isso causaria uma ameaça à segurança ou seria ruim para o SEO ... Você já define as permissões na configuração do formato de texto. Qual é o problema?
B2F 16/10

1
Eu preferiria escondê-lo. +1 voto em você.
Alyssa Gono

módulo injetor css faz maravilhas. consulte: prntscr.com/cieuvs
Patoshi (

5

PARA Drupal 7

function MODULENAME_element_info_alter(&$type) {
  if (isset($type['text_format']['#process'])) {
    foreach ($type['text_format']['#process'] as &$callback) {

      if ($callback === 'filter_process_format') {
        $callback = 'MODULENAME_filter_process_format';
      }
    }
  }
}


function MODULENAME_filter_process_format($element) {
  $element = filter_process_format($element);

  // Change input format to "Filtered HTML" for body fields of NODETYPE_NAME

  if ($element['#bundle'] == 'NODETYPE_NAME' && $element['#field_name'] == 'body') {

    $element['format']['format']['#default_value'] = 'filtered_html';
    $element['format']['format']['#format'] = 'filtered_html';  
    $element['format']['format']['#value']  = 'filtered_html';
    $element['#format'] = 'filtered_html';

  }
  return $element;
}

Essa é uma ótima técnica se você deseja ocultá-la em muitos / todos os campos.
Dalin

2

A outra maneira simples de ocultar a opção de formato de entrada é remover todos os outros formatos de entrada dos perfis de usuário que você deseja ocultar a opção. Para isso, acesse admin-> configuração-> formatos de entrada e remova todas as funções de usuário de todos os outros formatos de entrada, exceto o que você deseja atribuir por padrão.


6
Só funciona se você deseja ativar o texto sem formatação. Porque você não pode desativar esse.
quer

exatamente. Você não pode ter apenas "Texto filtrado". Desculpe, mas esta resposta é enganosa.
Nerdoc 9/02/16

2

Eu fiz isso:

Desmarcada "Usar o formato de texto HTML filtrado" e "Administrar formatos e filtros de texto" de permissões de pessoas para usuários anônimos e autorizados, para que não pudessem usar o CKeditor.

Claro que você pode desativá-lo do CSS "display: none;" para determinada classe div (é .filter-wrapper) e oculte toda a área que você apontou para cima, mas nesse caso a área está oculta para todos, incluindo o superusuário.


1

Instale o Injetor CSS módulo (atualmente existe apenas uma versão de desenvolvimento para o Drupal 8).

Em seguida, vá para a página de administração do CSS Injector (/ admin / config / development / css-injector). Crie uma nova regra CSS com este código (ou qualquer código que se aplique a uma classe do texto da área de formatação):

.filter-guidelines {
    display: none;
}

Escolha aplicá-lo no tema Sete (ou qualquer tema administrativo em uso). Salve e divirta-se!


Instale o css injector 1.x, pois 2.0 é mais antigo. Aqui está uma prévia de como ele se parece: prntscr.com/cieuvs - Este módulo faz maravilhas para injecção css vs outros módulos como CPN (código por nó)
Patoshiパトシ

0

Você não pode remover o formato de entrada "Texto sem formatação". E o RTE não é exibido quando você usa o formato de entrada "Texto sem formatação".

Eu vou estar usando a opção CSS.


O seletor de formato de entrada não aparece quando o usuário conectado no momento pode usar apenas um formato de entrada; esse único formato de entrada poderia ser diferente e o seletor não seria o mesmo.
kiamlaluno

0

Eu uso tanto "removendo todos os outros formatos de entrada dos perfis de usuário" quanto css.


0

Experimente o módulo simplificar .

Simplificar permite ocultar determinados campos da interface do usuário. Isso ajuda a desorganizar os formulários e apresentar uma experiência mais amigável aos editores de conteúdo.


simplificar trabalhos para outros campos, mas não consegui fazê-lo funcionar para formatos de entrada.
Druvision

0

Se você deseja ocultar os formatos, mas ainda mantê-los disponíveis, tente o módulo " Formatos simplificados ": https://www.drupal.org/project/simplified_formats

Ele oculta os detalhes dos formatos em um pequeno ícone de ponto de interrogação ao lado da lista suspensa de seleção de formatos. Para muitos filtros de formato de texto, não é bom ocultar completamente as instruções que indicam como usá-las. Outros filtros são mais automáticos. Acho que precisamos de um módulo que permita escolher o que aparece para o usuário final e o que não aparece.


0

Você também pode usar o módulo Ocultar formatos .

Ocultar formatos permite recolher as listas suspensas "formato de texto" ou "formato de entrada" para limpar a interface do usuário.


Este é um ótimo módulo, mas faz com que a caixa de formatos seja recolhida, não oculta.
Druvision

0

Para o Drupal 8. Isso remove a área de formato para dois campos.

/**
 * Implements hook_form_FORM_ID_alter().
 */
function CUSTOM_MODULE_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $form['#after_build'][] = 'CUSTOM_MODULE_eform_application_after_build';
}

function CUSTOM_MODULE_eform_application_after_build ($form) {
  unset($form['field_experience']['widget'][0]['format']);
  unset($form['field_miscellaneous']['widget'][0]['format']);
  return ($form);
}

OP especificou D7 na pergunta
Geoff

1
Acordado. No entanto, há muito pouco online para o D8 neste momento. Suponho que poderia fazer minha própria pergunta e respondê-la. Nunca tentei isso.
Andre Angelantoni 5/06/2015

essa seria a melhor abordagem, apenas porque o OP, neste caso, é muito específico sobre a versão
Geoff

Você poderia indicar como implementá-lo? Como posso encontrar form_id?
John

0

Para o Drupal 7, você pode:

1) Use hook_theme_registry_alter(&$theme_registry)de dentro de um módulo para alterar o registro do tema, eq. a definição de processadores de temas.

2) Em seguida, alterar três funções temáticos, theme_filter_tips, theme_filter_tips_more_info, e theme_filter_guidelines, e forçá-los a retornar nada. Do seguinte modo:

Esta é a função de destino. Todas as funções do tema acima serão redirecionadas para isso.

function _mymodule_filter_tips($tips, $long = FALSE, $extra = ''){
  return '';
}

/**
 * Implements hook_theme_registry_alter
 */
function mymodule_theme_registry_alter(&$theme_registry) {
  $theme_registry['filter_tips']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_guidelines']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_guidelines']['function'] = '_mymodule_filter_tips';
  $theme_registry['filter_tips_more_info']['theme path'] = drupal_get_path( 'module', 'mymodule' );
  $theme_registry['filter_tips_more_info']['function'] = '_mymodule_filter_tips';
}

Quando você limpa seu cache, o Drupal procura essas definições de filtro no caminho do seu módulo de escolha (consulte a seção drupal_get_path) e não retorna nada para cada filtro. Portanto, não há mais descrições de formato de texto.


0
/ hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
    // We want this on a specific node type
    if ($form_id == 'NODE_TYPE_node_form') {
        $form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
    }
}

// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {

    // We want to hide input formats and we can do it like following
    $form['body']['und']['0']['format']= '<div style="display:none;">';
    $form['body']['und']['0']['format']= '</div>';   

    return $form;
}

Trabalhou principalmente para mim com essas pequenas mudanças.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.