Comment masquer les options de format d'entrée et le texte d'aide sous une zone de texte?


32

Comment masquer les options de format d'entrée et le texte d'aide sous une zone de texte lors de l'ajout | d'un noeud?

Capture d'écran - partie à masquer sélectionnée avec un rectangle rouge


Je pense que vous pouvez le faire si vous accédez au formulaire, hook_form_altermais je ne suis pas sûr des détails. Je ne le
posterai

Réponses:


26

Pour Drupal 7, vous pouvez utiliser le module Simplify . Il vous permet de masquer les options de format de texte textarea, ainsi que d'autres éléments sur les formes de nœud.


3
Si vous regardez son source ( cgit.drupalcode.org/simplify/tree/simplify.module?id=7681b0e ), le module utilise jQuery pour masquer les options de format de texte. C'est dommage car 1: vous voulez seulement masquer le format de texte et n'avez pas besoin de l'intégralité du module et 2: le javascript devient une exigence. Pourquoi ne pas simplement le cacher avec CSS, comme le suggère la réponse de Ionut Adrian Luchian? C'est définitivement approprié et propre.
B2F

simplifier n'a pas fonctionné de manière constante pour moi. dans certains cas, cela n'a pas fonctionné dans d'autres.
Snowguy

Ca n'a pas marché pour moi. J'ai utilisé le thème bootstrap alors peut-être à cause de cela.
sobi3ch

Simplifier n'a pas fonctionné pour moi aussi.
Артем Ильин

25

Pour ce faire, vous pouvez utiliser hook_form_alter dans un module personnalisé.

Par exemple, dans 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
cela fonctionne mais a un effet secondaire: il supprime l'éditeur wysiwyg de la zone de texte
naufrage

Cela a fait le tour pour moi. Je voulais principalement nettoyer la saisie de texte.
RevNoah

1
il est préférable de mentionner LANGUAGE_NONE au lieu de 'und' et la fonction after_build devrait également faire l'objet d'une vérification basée sur les rôles dans le cas où d'autres rôles supérieurs pourraient afficher la zone Format de texte.
Aneek Mukhopadhyay

12

Dans Drupal 6, il y a le module Meilleurs formats qui fait exactement ce que vous voulez, il existe une version 7 dev mais il vient avec un avertissement indiquant qu'il est en plein développement. Si votre site est encore en développement, alors il vaut peut-être la peine de l'essayer.


Semblait bien fonctionner pour les utilisateurs qui n'étaient pas administrateurs, même si vous supprimez les autorisations du groupe d'administrateurs, l'utilisateur 1 verra toujours les options dans D7
joelpittet

De meilleurs formats fonctionnent bien pour D7, est stable sans problèmes sérieux et une sortie de la version bêta 2 en janvier 2016.
Duncanmoo

9

Vous pouvez en fait simplement tuer l'élément de formulaire de format.

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 meilleure solution. Pour les futurs visiteurs, remplacez CUSTOM par le nom de votre thème actif. Cet extrait de code devrait aller dans votre script template.php dans le dossier du thème actif. Et si le multilinguisme est activé sur votre site, remplacez LANGUAGE_NONE par votre code de langue.
Janaka R Rajapaksha

2
CUSTOMest conçu comme votre nom de thème personnalisé. Vous ne devez JAMAIS coder en dur une langue, si vous avez besoin de la langue active global $language;pour la saisir.
doublejosh

Remarque: LANGUAGE_NONEest une constante avec valeur und... ne l'utilisez pas und.
doublejosh

Cela tue également le wysiwyg
digitgopher

7

Je pense que la meilleure solution consiste à interdire l'accès à l'élément de sélection du format de texte. Si vous le supprimez complètement, vous ferez face aux effets secondaires indésirables en tant qu'éditeur WYSIWYG en voie de disparition. Je propose donc le code suivant.

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

C'est une excellente solution si vous voulez seulement le cacher sur un champ particulier. Et le WYSIWYG reste fonctionnel.
Dalin

6

Utilisez CSS, le moyen le plus simple. Pyromane

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

Le pouvoir de CSS et de Firebug

Bonne chance.


3
Je ne recommanderais pas "bien que cela fonctionne" se cachant CSS.
Saadlulu

pas une réponse, une escapade
Pan Chrono

5
Pourquoi ? C'est une excellente réponse car la question est de le cacher, pas de le supprimer. Ce n'est pas comme si cacher cela causerait une menace à la sécurité ou serait mauvais pour le référencement ... Vous avez déjà défini des autorisations dans la configuration du format texte, alors où est le problème?
B2F

1
Je préférerais le cacher. +1 vote pour vous.
Alyssa Gono

Le module injecteur CSS fait des merveilles. voir: prntscr.com/cieuvs
Patoshi a annoncé le

5

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

C'est une excellente technique si vous voulez la masquer sur plusieurs / tous les champs.
Dalin

2

Un autre moyen simple de masquer l'option de format de saisie consiste à supprimer tous les autres formats de saisie des profils utilisateur pour lesquels vous souhaitez masquer l'option. Pour cela, allez dans admin-> configuration-> formats d'entrée et supprimez tous les rôles d'utilisateur de tous les autres formats d'entrée, sauf celui que vous souhaitez attribuer par défaut.


6
Ne fonctionne que si vous souhaitez uniquement activer le texte brut. Parce que vous ne pouvez pas désactiver celui-là.
Fletch

exactement. Vous ne pouvez pas avoir uniquement du "texte filtré". Désolé, mais cette réponse est trompeuse.
nerdoc

2

J'ai fait ça:

Décoché "Utiliser le format de texte HTML filtré" et "Administrer les formats et filtres de texte" de personnes> autorisations pour les utilisateurs anonymes et autorisés afin qu'ils ne puissent pas utiliser CKeditor.

Bien sûr, vous pouvez le désactiver à partir de CSS en "display: none;" pour une classe de div particulière (c'est .filter-wrapper) et masquez toute la zone que vous avez indiquée en haut, mais dans ce cas, la zone est masquée pour tout le monde, y compris le superutilisateur.


1

Installez le module CSS Injector (il n’existe actuellement qu’une version de développement pour Drupal 8).

Ensuite, accédez à la page d'administration de CSS Injector (/ admin / config / development / css-injector). Créez une nouvelle règle CSS avec ce code (ou tout code s'appliquant à une classe du texte de l'aire de mise en forme):

.filter-guidelines {
    display: none;
}

Choisissez de l'appliquer sur le thème Seven (ou sur n'importe quel thème d'administrateur utilisé). Enregistrer et profiter!


Installez l'injecteur css 1.x car 2.0 est plus ancien. Voici un aperçu de son apparence: prntscr.com/cieuvs - Ce module fonctionne à merveille pour l'injection de CSS par rapport à d'autres modules comme CPN (code par nœud)
Patoshi le

0

Vous ne pouvez pas supprimer le format de saisie "Texte brut". Et le RTE ne s'affiche pas lorsque vous utilisez le format de saisie "Texte brut".

Je vais utiliser l'option CSS.


Le sélecteur de format d'entrée n'apparaît pas lorsque l'utilisateur actuellement connecté ne peut utiliser qu'un format d'entrée; ce seul format d’entrée pourrait être différent et le sélecteur n’apparaîtrait pas de la même façon.
kiamlaluno

0

J'utilise à la fois "supprimer tous les autres formats d'entrée des profils utilisateur" et css.


0

Essayez de simplifier le module.

Simplifier permet de masquer des champs particuliers de l'interface utilisateur. Cela permet de réduire l'encombrement des formulaires et de présenter aux éditeurs de contenu une expérience plus conviviale.


simplifier les travaux pour d'autres domaines, mais je ne pouvais pas le faire fonctionner pour les formats d'entrée.
Druvision

0

Si vous souhaitez masquer les formats tout en les gardant disponibles, essayez le module " Formats simplifiés ": https://www.drupal.org/project/simplified_formats

Il masque les détails des formats dans une petite icône en forme de point d'interrogation à côté du menu déroulant de sélection de format. Pour de nombreux filtres de format texte, il est inutile de masquer complètement les instructions indiquant comment les utiliser. D'autres filtres sont plus automatiques. Je pense que nous avons besoin d’un module qui permette de choisir ce qui se présente à l’utilisateur final et ce qui ne le fait pas.


0

Vous pouvez également utiliser le module Cacher les formats .

Masquer les formats vous permet de réduire les menus déroulants "format de texte" ou "format de saisie" pour nettoyer l'interface utilisateur.


C'est un excellent module, mais la boîte de formats est réduite et non masquée.
Druvision

0

Pour Drupal 8. Ceci supprime la zone de formatage pour deux champs.

/**
 * 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 spécifié D7 dans la question
Geoff

1
D'accord. Cependant, il y a très peu en ligne pour D8 à ce stade. Je suppose que je pourrais poser ma propre question et ensuite y répondre. Je n'ai jamais essayé ça.
Andre Angelantoni

ce serait la meilleure approche, uniquement parce que, dans ce cas, le PO est très spécifique à propos de la version
Geoff

Pourriez-vous s'il vous plaît indiquer comment le mettre en œuvre? Comment puis-je trouver form_id?
john

0

Pour Drupal 7, vous pouvez:

1) Utilisez à hook_theme_registry_alter(&$theme_registry)partir d’un module pour modifier le registre de thèmes, eq. la définition des processeurs de thèmes.

2) Ensuite , modifier trois fonctions à thème, theme_filter_tips, theme_filter_tips_more_infoet theme_filter_guidelines, et les forcer à retourner rien. Comme suit:

C'est la fonction cible. Toutes les fonctions de thème ci-dessus seront redirigées vers cela.

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

Lorsque vous effacez votre cache, Drupal recherchera ces définitions de filtre sur le chemin du module de votre choix (voir drupal_get_path) et ne retournera rien pour chaque filtre. Par conséquent, plus de descriptions de format de texte.


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

Essentiellement travaillé pour moi avec ces petits changements.

$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.