champ formulaire commentaire

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.

bonjours à tous,

je développe actuellement un blog sous drupal 6,
que j'ais construit à partir du theme basic,
l'ayant fini depuis 2 jours,

sauf au niveau du formulaire à remplir pour poser un commentaire:
ça fait maintenant 1 nuit et une journée que j'essaye en vain d'enlever le champ
"page d'accueil"
je voudrais garder tout les reste (nom mail commentaire) sauf ce maudit champ page d'accueil qui est sensé représenté le site du visiteur.

_J'ais dabord essayer de passer par le css et utilisé hide mais impossible de le cacher sans cacher tous les autre champs et l'id du champ: "edit-homepage-wrapper" n'existe nulle part dans les 7 link css relier à la page.

_j'ais alors essayer de trouver un module, content cck installer mais toujours aucun moyen de modifier le contenue du formulaire mail

_j'ais ensuite googler le probleme avec un seul cas similaire:
http://drupal.org/node/147502
en anglais mais toujours sans reponse à la clés.

_j'ai aussi essaye de voir les fichiers comment tpl mais je n'ais rien compris, des appel php sur des fichiers aux langages que je ne connais pas.

C'est pourquoi je m'en remet à vous. Merci d'avance

ps: habituer à spip c'est mon premier site drupal et vue la difficulté pour modifier un simple champs, je suis surpris qu'aucun module est était développer pour le dit cms le plus puissant au monde !...

Forum : 
Version de Drupal : 

Disons qu'il ne faut pas se tromper de cible, sa puissance tient avant tout (à mon sens) à sa souplesse de programmation.

Pour cacher un élément formulaire il suffit de créer un module custom (voir le tuto en fin de ma signature) et d'y coller le code suivant (en prenant soit de faire concorder le nom de la fonction avec le nom du module) :

<?php
function mon_module_form_alter(&$form, $form_state, $form_id) {
   if(
$form_id=='comment_form') {
       unset(
$form['homepage']);
    }
}
?>

Et pour ne faire ce changement que pour un certain type de contenu?
Actuellement, je récupère le nid, je lis la db pour connaitre le type et je le teste.
Cela fonctionne bien, mais j'aimerai savoir si c'est la bonne méthode

Oui c'est la bonne méthode, mais utilise la fonction node_load (pas de lecture directe en DB). En effet, le noeud est sans aucun doute déjà chargé en cache statique. Passer par la base te coûterais une requête supplémentaire.

<?php
$node
=node_load($form['nid']['#value']);
if (
$node->type=='...') {
   unset(
$form['homepage']);
}
?>

Tu as aussi une méthode plus directe en partant du principe que l'URL est de la forme node/XXX et en utilisant la fonction menu_get_object()

<?php
if ($node=menu_get_object() && $node->type=='...') {
   unset(
$form['homepage']);
}
?>

"le noeud est sans aucun doute déjà chargé en cache statique"
Je pensais justement le contraire : que charger tout le noeud juste pour récupérer le type, ce n'était pas performant. Ah, l'expérience!
J'essaierai le menu_get_object() prochainement.
Merci pour la réponse

Trust but check ;p

Va ligne 698 de modules/node.module, dans la fonction node_load. Tu verras un tableau statique (static $node=array()) qui garde en mémoire, le temps de la construction de la page, tous les nodes déjà chargés jusque là.

Merci pour ta réponse concise et précise, on voie qu il ya de la bouteille, j ais lue l'ensemble du tuto, trés bien fait même si il faut de bonne connaissance en programmation pour tout comprendre, et j'ais donc creer un module parfait mais je voulais savoir ou mettre le hook en debut fin de page comment.module .

Et merci encore, j avais jamais compris que le module etait dans le fichier.module ?! ca paré un peu bête dit comme ça...

Et pr mo probleme j ais reussi à le resoudre par un autre moyen, mais merci pr le tuto, d'une grande aide pr l avenir !