¿Cómo ocultar las Opciones de formato de entrada y el texto de ayuda en un área de texto?


32

¿Cómo ocultar las Opciones de formato de entrada y el texto de ayuda debajo de un área de texto al agregar | editar un nodo?

Captura de pantalla: parte para ocultar seleccionada con rectángulo rojo


Creo que puede hacerlo si accede a través de la forma hook_form_alter, sin embargo no estoy seguro acerca de los detalles, así que no voy a publicar esto como una respuesta ...
acm

Respuestas:


26

Para Drupal 7, puede usar el módulo Simplificar . Le permite ocultar las opciones de Formato de texto del área de texto, así como otros elementos en los formularios de nodo.


3
Si observa su fuente ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), el módulo usa jQuery para ocultar las opciones de formato de texto. Es una pena porque 1: solo desea ocultar el formato de texto y no necesita todo el módulo y 2: JavaScript se convierte en un requisito. ¿Por qué no simplemente ocultarlo con CSS como sugiere la respuesta de Ionut Adrian Luchian? Es definitivamente apropiado y limpio.
B2F

simplificar no funcionó consistentemente para mí. en algunos casos funcionó en otros no.
snowguy

No funciono para mi. He usado el tema bootstrap, así que tal vez por eso.
sobi3ch

Simplificar tampoco funcionó para mí.
Артем Ильин

25

Puede usar hook_form_alter en un módulo personalizado para hacer esto.

Por ejemplo, en 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
esto funciona pero tiene un efecto secundario: elimina el editor wysiwyg del área de texto
náufrago

Eso hizo el truco para mí. Principalmente solo quería limpiar la entrada de texto.
RevNoah

1
es mejor mencionar LANGUAGE_NONE en lugar de 'und' y también la función after_build debe tener una verificación basada en roles en caso de que otros roles superiores puedan ver el cuadro Formato de texto.
Aneek Mukhopadhyay

12

En drupal 6 está el módulo Better Formats que hace exactamente lo que quieres, hay una versión de 7 dev pero viene con una advertencia de que está en desarrollo. Si su sitio aún está en desarrollo, puede valer la pena intentarlo.


Parecía funcionar bien para los usuarios que no eran administradores, incluso si elimina los permisos para el grupo de administración, el usuario 1 seguirá viendo las opciones en D7
joelpittet

Los mejores formatos funcionan bien para D7, es estable, sin problemas serios y una versión Beta 2 en enero de 2016.
Duncanmoo

9

En realidad, solo puede matar el elemento de formulario de formato.

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, la mejor solución. Para futuros visitantes, reemplace PERSONALIZADO con el nombre de su tema activo. Este fragmento de código debe ir en su script template.php en la carpeta del tema activo. Y si su sitio ha habilitado para varios idiomas, reemplace LANGUAGE_NONE con su código de idioma.
Janaka R Rajapaksha

2
CUSTOMestá pensado como tu nombre de tema personalizado. NUNCA debe codificar un idioma, si necesita usar el lenguaje activo global $language;para capturarlo.
doublejosh

Nota: LANGUAGE_NONEes una constante con valor und... no la use und.
doublejosh

Esto también mata al wysiwyg
digitgopher

7

Creo que la mejor solución es no permitir el acceso al elemento de selección de formato de texto. Si lo desarma por completo, enfrentará efectos secundarios no deseados como un editor WYSIWYG que desaparece. Entonces propongo el siguiente 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 es una excelente solución si solo desea ocultarla en un campo en particular. Y el WYSIWYG se mantiene funcional.
Dalin

6

Usa CSS, la forma más fácil. Firebug

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

El poder de CSS y Firebug

Buena suerte.


3
No recomendaría "aunque funciona" la ocultación de CSS.
saadlulu

no es una respuesta, una escapada
Pan Chrono

55
Por qué ? Esta es una gran respuesta porque la pregunta es ocultarla, no eliminarla. No es como esconderse, podría causar una amenaza a la seguridad o ser malo para el SEO ... Ya definiste los permisos en la configuración del formato de texto, ¿dónde está el problema?
B2F

1
Preferiría esconderlo. +1 voto por ti.
Alyssa Gono

El módulo inyector css funciona de maravilla. ver: 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;
}

Esta es una gran técnica si desea ocultarla en muchos / todos los campos.
Dalin

2

La otra forma sencilla de ocultar la opción de formato de entrada es eliminar todos los demás formatos de entrada de los perfiles de usuario que desea ocultar. Para ello, vaya a admin-> configuración-> formatos de entrada y elimine todas las funciones de usuario de todos los demás formatos de entrada, excepto uno que desee asignar de forma predeterminada.


66
Solo funciona si solo desea habilitar texto sin formato. Porque no puedes deshabilitar esa.
Fletch

exactamente. No puede tener solo "Texto filtrado". Lo siento, pero esta respuesta es engañosa.
nerdoc

2

Hice esto:

Desmarque "Usar el formato de texto HTML filtrado" y "Administrar formatos de texto y filtros" de personas> permisos para usuarios anónimos y autorizados para que no puedan usar CKeditor.

Por supuesto, puede deshabilitarlo desde CSS "display: none;" para una clase div particular (es .filter-wrapper) y oculta todo el área que has señalado hacia arriba, pero en este caso el área está oculta para todos, incluido el superusuario.


1

Instalar inyector CSS módulo (actualmente solo hay una versión de desarrollo funcional para Drupal 8).

Luego vaya a la página de administración de CSS Injector (/ admin / config / development / css-injector). Cree una nueva regla CSS con este código (o cualquier código que se aplique a una clase del texto del área de formato):

.filter-guidelines {
    display: none;
}

Elija aplicarlo en el tema Seven (o cualquier tema de administrador en uso). ¡Ahorra y disfruta!


Instale el inyector css 1.x ya que 2.0 es anterior. Aquí hay una vista previa de cómo se ve: prntscr.com/cieuvs - Este módulo funciona de maravilla para la inyección de CSS frente a otros módulos como CPN (código por nodo)
Patoshi パ ト シ

0

No puede eliminar el formato de entrada "Texto sin formato". Y el RTE no se muestra cuando utiliza el formato de entrada "Texto sin formato".

Usaré la opción CSS.


El selector de formato de entrada no aparece cuando el usuario conectado actualmente puede usar solo un formato de entrada; ese único formato de entrada podría ser diferente, y el selector no aparecería igual.
kiamlaluno

0

Uso tanto "eliminar todos los demás formatos de entrada de los perfiles de usuario" como css.


0

Prueba simplificar el módulo.

Simplificar permite ocultar campos particulares de la interfaz de usuario. Esto ayuda a desordenar formularios y presentar una experiencia más fácil de usar para los editores de contenido.


simplifico trabajos para otros campos, pero no pude hacerlo funcionar para formatos de entrada.
Druvision

0

Si desea ocultar los formatos pero aún mantenerlos disponibles, pruebe el módulo " Formatos simplificados ": https://www.drupal.org/project/simplified_formats

Oculta los detalles de los formatos en un pequeño icono de signo de interrogación junto al menú desplegable de selección de formatos. Para muchos filtros de formato de texto, realmente no sirve de nada ocultar por completo las instrucciones que le indican a uno cómo usarlos. Otros filtros son más automáticos. Creo que necesitamos un módulo que nos permita elegir qué se muestra al usuario final y qué no.


0

También puede usar el módulo Ocultar formatos .

Ocultar formatos le permite contraer los menús desplegables "formato de texto" o "formato de entrada" para limpiar la interfaz de usuario.


Este es un gran módulo, pero hace que el cuadro de formatos se colapse, no se oculte completamente.
Druvision

0

Para Drupal 8. Esto elimina el área de formato de dos 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 especificó D7 en la pregunta
Geoff

1
Convenido. Sin embargo, hay muy poco en línea para D8 en este momento. Supongo que podría hacer mi propia pregunta y luego responderla. Nunca lo intenté.
Andre Angelantoni

ese sería el mejor enfoque, solo porque el OP en este caso es muy específico sobre la versión
Geoff

¿Podría indicar cómo implementarlo? ¿Cómo puedo encontrar form_id?
juan

0

Para Drupal 7, puede:

1) Usar hook_theme_registry_alter(&$theme_registry)desde un módulo para alterar el registro de temas, eq. La definición de los procesadores temáticos.

2) A continuación, alterar tres funciones temáticos, theme_filter_tips, theme_filter_tips_more_info, y theme_filter_guidelines, y los obligan a devolver nada. Como sigue:

Esta es la función objetivo. Todas las funciones del tema anterior se redirigirán a eso.

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';
}

Cuando borra su caché, Drupal buscará esas definiciones de filtro en la ruta de su módulo de elección (ver drupal_get_path), y no devolverá nada para cada filtro. Por lo tanto, no más descripciones 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;
}

Principalmente funcionó para mí con estos pequeños cambios.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.