[resolu] altérer une partie d'un formulaire déjà ajoutée via un hook par un autre module

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous
Je fais mes premier pas dans l'API des formulaires de Drupal
Je souhaite modifier un formulaire de soumission de contenu; dans mon cas l'utilisateur va pouvoir lui même créer une fiche de produit d'ubercart.
Je souhaite préremplir certains champs grâce au hook form_alter.

Mon souci : ce formulaire est déjà altéré par le module "private nodes" qui ajoute un champ permettant à l'utilisateur de décider si cette fiche doit être publique ou privée.

Je souhaite masquer ce champ à l'utilisateur et surtout lui donner par défaut la valeur "private" au lieu de "anyone".

Problème : ce champ étant lui même rajouté par une altération du formulaire; je ne comprends pas comment modifier sa propriété #value puisqu'il n'apparait même pas dans dans la variable $form.

Suis-je clair et existe-t-il une solution?

Merci d'avance aux experts de Drupal qui sauront m'aider, pas facile de comprendre tout ça quand on débute :-)

Forum : 
Version de Drupal : 

re hello
Personne ne sait comment altérer un champ de formulaire qui est déjà le résultat d'un hook?
Je ne sais vraiment pas comment m'y prendre, ça m'ennuie de hacker le module private nodes, je suis presque sûr que l'API de drupal permet d'éviter ça.

Hello

Les modules s'exécutent dans un ordre défini par leur poids. Donc, il faut que ton module ait un poids supérieur à Private Nodes, pour que le champ que celui-ci ajoute apparaisse dans $form.

Je n'ai pas la requête sous la main, mais c'est un "UPDATE module SET weight=xxx WHERE name=ton_module" ou quelque chose d'approchant, qu'il faut exécuter dans hook_init(). La variable $form devrait alors contenir le champ ajouté par Private Nodes.