Attacher WYSIWYG au formulaire Drupal

12

Avec un formulaire Drupal personnalisé, comment pouvez-vous associer la fonctionnalité WYSIWYG à une zone de texte avec le module WYSIWYG?

Kevin
la source
J'ai trouvé que la solution soumise par moon.watcher et Dylan Tack fonctionne parfaitement.

Réponses:

2

revoir cette indication pour Drupal 7 (avec une petite indication pour drupal 6) http://drupal.org/node/1031160 . est spécifiquement sur la façon d'afficher un éditeur dans textarea dans drupal 7, donc je suppose que cela pourrait être utile pour commencer (il semble que le dernier commentaire ait une manière testée).

peut être pourrait être une alternative pour le faire à la place / avec WYSIWYG.

cigotete
la source
8

Le module wysiwyg est lié au système de format d'entrée.

À utiliser '#type' => 'text_format'lors de la définition de votre zone de texte.

Dylan Tack
la source
7

Vous devez utiliser type = 'text_format' au lieu de la zone de texte. et format = 'editor_format'. Le code ressemblera à ceci.

$form['description'] = array(
  '#type' => 'text_format',
  '#title' => t('Description'),
  '#format' => 'full_html' //the format used for editor.
);
Paulson Peter
la source
C'est l'option correcte. Mais je ne peux pas obtenir safe_value sous forme.
Guru
4

Voici le mien:

$form['my_module_my_form_my_field'] = array(
  '#type' => 'text_format',
  '#title' => t('Awesome title'),
  '#format' => isset($edit['format']) ? $edit['format'] : NULL,
  '#base_type' => 'textarea',
  '#default_value' => variable_get('my_module_my_form_my_field', '')['value'],
  '#description' => t("Awesome description."),
  '#required' => FALSE,
  '#maxlength' => 500,
);

J'ai dû ajouter le ['value']à la #default_valuecause car il n'était pas chargé après avoir été enregistré.

Référence de l'API Form 7x

Francisco Corrales Morales
la source
1
Wow en effet, le variable_get('foo', '')['value']suffixe est vraiment nécessaire.
leymannx
0

Le module WYSIWYG n'est qu'un moyen d'utiliser l'un des nombreux éditeurs wysiwyg disponibles. Une fois que vous avez installé le module wysiwyg ( http://drupal.org/project/wysiwyg ), accédez à la configuration du module (admin / config / content / wysiwyg). Des instructions d'installation seront disponibles pour de nombreux éditeurs Wysiwyg. Par exemple, pour FCKeditor, il dit ce qui suit:

Extrayez l'archive et copiez son contenu dans un nouveau dossier à l'emplacement suivant: sites / all / bibliothèques / fckeditor

Ainsi, la bibliothèque réelle peut être trouvée sur: sites / all / bibliothèques / fckeditor / fckeditor.js

Alors, téléchargez l'éditeur, extrayez l'archive dans le répertoire donné. Une fois que vous avez fait cela (en supposant que vous l'avez fait correctement), vous pourrez changer l'éditeur pour les formats d'entrée donnés sur l'écran de configuration de Wysiwyg. Vous devrez ensuite affecter différentes opérations pour chaque type (HTML filtré, HTML complet, etc.). Cliquez sur "Modifier" sous opérations dans admin / config / content / wysiwyg dans la ligne pour le format d'entrée qui vous intéresse. À partir de là, vérifiez quels boutons vous souhaitez.

mrryanjohnston
la source
Le CKEditor peut également être installé "autonome", sans utiliser l'éditeur WYSIWYG. Voir drupal.org/project/ckeditor .
Jorrit Schippers du
0

Il ne semble pas que cela soit possible avec Wysiwyg version 7.x-2, mais le générateur de formulaire pour les paramètres de profil utilise le tableau suivant:

  $profile['settings'] += array(
    'default' => TRUE,
    'user_choose' => FALSE,
    'show_toggle' => TRUE,
    'theme' => 'advanced',
    'language' => 'en',
    'access' => 1,
    'access_pages' => "node/*\nuser/*\ncomment/*",
    'buttons' => array(),
    'toolbar_loc' => 'top',
    'toolbar_align' => 'left',
    // ...
  );

L'index du tableau "access_pages" permettrait de définir pour quelles pages l'éditeur est affiché, mais le module ne fournit aucun champ de formulaire pour changer ce code, et aucune fonction n'utilise cette valeur.

Il se peut que cette valeur ait été utilisée dans les versions précédentes, et que le code pour la gérer soit toujours porté, ou que cette option soit introduite dans les prochaines versions du module.

kiamlaluno
la source