dans Drupal Vous pouvez créer votre propre NodeType dans un module personnalisé. Faire cela, vous devez créer votre propre forme qui est très agréable. P>
Toutefois, si vous voulez ajouter JS, les choses sont un peu plus difficiles. Si vous ajoutez le JS sous la forme, le JS ne sera ajouté que le formulaire lorsqu'il est chargé. Si l'utilisateur publierait le formulaire avec des erreurs de validation, la fonction de formulaire ne fonctionne pas à nouveau et que le JS n'est pas ajouté. Normalement, vous ne créeriez que créer un rappel de menu et ajouter le JS là-bas, mais pour le formulaire Ajouter un noeud, cela ne sera pas une solution possible. P>
Quelle est la meilleure solution pour ajouter de JS dans un noeud Ajouter un formulaire, pour le garder persistant lorsque le formulaire ne validait pas? P>
3 Réponses :
J'ai posté un patch sur le SMILIES Module qui corrige ce problème: Les smilies ne sont pas sélectionnables lors de la résoumission d'une page P>
Le patch ajoute une fonction Hook_NodeapI () pour vérifier si l'opération de nœud est "Vérifiez" et si elle vérifie si le nœud est censé avoir des smileys et si cela appelle la fonction pour ajouter le fichier smileys.js javascript qui crée le formulaire de sélection. P>
Vous devez juste avoir besoin de faire la même chose dans votre cas. Cela vous obligera à écrire un module très simple qui implémente la fonction Hook_NodeAppi et vérifie les mises à jour de la même manière que le module de smileys corrigé le fait. P>
Merci pour le conseil. J'ai fini par utiliser une fonction de thème pour faire l'affaire car elle est un peu plus propre dans ce cas particulier.
Essayer des hacks différents, j'ai trouvé une solution assez simple à ce problème, créez une fonction de thème pour le formulaire et ajoutez le JS là-bas. Cela ressemblerait à quelque chose comme ceci: Cela appelle simplement la fonction de thème par défaut du noeud Ajouter un formulaire après ajout du JS. Comme la fonction thématique est appelée même la forme est mise en cache, cela fonctionne bien. Vous devez également implémenter Hook_theme pour effectuer ce travail. P> Mise à jour de Drupal 7. Strong> P> Drupal 7 rend cela beaucoup plus facile car il est possible de faire cela possible p> Un exemple d'utilisation de cela pourrait être: p>
Intéressant - je suis surpris que cela fonctionne sans créer une boucle infinie, comme l'appel à thème ("node_form") code> pourrait finir à nouveau à invoquer votre substitution à nouveau. Ne serait-il pas préférable de mettre le
drupal_add_js code> appeler dans un
fonction theme_preprocess code> fonctionner?
@HENRIK OPEL: Je suppose qu'une fonction theme_preprocess ferait l'astuce ASWELL, je n'y ai pas pensé à l'époque. La fonction theme_node_form est la fonction qui serait appelée si le contenu_type_node_form n'existe pas, donc je ne pense pas qu'une boucle infinie est de tout danger. Mais je suppose que c'est un peu plus pirate que d'utiliser la fonction de préprocession de thème S.
Vous pouvez faire revenir theme_node_form ($ formulaire); au lieu de retourner le thème ('node_form', $ formulaire); pour éviter une boucle infinie.
Au lieu d'ajouter cela au thème, j'ajouterais cela à un module et dans le module que vous utilisez simplement la fonction d'implication (add) nommée
Vous pouvez utiliser Exemple: p> Vous pouvez maintenant ajouter votre code JavaScript dans votre module Dossier, par exemple harok_nodeapi code>
avec affaire préparer code>:
myscript.js code>. p> p>
La même chose sur les réponses drupes: drupal.stackexchange.com/questions/70015/...