Créer un formulaire de contact (ez)

10 Commentaires

Aujourd’hui  je vais vous présenter la notion  des collecteurs d’information  qui sont très utiles par exemple lors de la création de formulaire de contact, ainsi d’autres fonctionnalités.

Dans un premier temps nous allons créer notre classe « Contact » avec les attributs suivants :

  1. Titre  (type : ligne de texte)
  2. Nom type  (ligne de texte  (Il faut cocher  « Collecteur d’information »))
  3. Email type (Courriel (« Collecteur  d’information »))
  4. Message type (Bloc de texte (« Collecteur d’information »))

Bien sur il ne faut pas oublier la case « Obligatoire », si ceci est nécessaire.  Ensuite sur votre arborescence, vous allez créer un objet de cette classe

contact

Si vous avez remarqué, nous n’avons remplis que le champ Titre qui sera affiché sur le front end, les autres champs, c’est aux internautes des les remplir. Si vous avez créé votre objet « nous-contacter »  sur le même niveau  que les autres rubriques,  alors vous allez le voir automatiquement  sur le menu (bien sur si vous avez fait une boucle)

Sinon un simple fetch pour récupérer la node adéquate pour faire un affichage.

Si  tout est bon, après un clic sur le lien « contact »

 contact3

Vous aurez quelques choses telles :

contact2

Alors, nous avons un  affichage non surchargé de la vue full de la node « contact ». Comme déjà mentionné dans le tutoriel de dynamisation , il faut faire un surcharge node.

Nous allons rappeler de ce qu’il faut faire.

Sur votre fichier de surcharge  «/settings/siteaccess/plain_site/override.ini.append.php».

contact_surcharge

Ensuite  sur le fichier « contact.tpl ».  Vous devez mettre votre html selon vos besoins. Il faut garder les noms des champs de button ainsi les trois champs cachés

formulaire_contact

Nous avons surchargé notre vue, le code sélectionné sera utilisé pour la gestion de contrôle de saisie. Dans cette vue nous avons la variable $node, cette variable est définie automatiquement par le système et elle contient un objet ezcontentobjecttreenode, qui représente le node demandé. Cette variable permet l’extraction et l’affichage de diverses informations sur le node et l’objet qu’il encapsule.

Voici le code pour la gestion de contrôle

{include name=Validation uri='design:content/collectedinfo_validation.tpl' class='message-warning' validation=$validation collection_attributes=$collection_attributes}

contact2

Si vous remplissez le formulaire, après un clic sur « envoyer », vous aurez l’affichage suivant :

contact4

Alors, cet affichage dépend du template  « design/standard/templates/content/collectedinfo/form.tpl».  Si vous voulez faire votre propre affiche, vous n’allez qu’à faire un « surcharge system » de cette vue, c’est-à-dire copier le même fichier (avec le nouveau html/style) sur votre extension avec le même chemin. Donc  le nouveau chemin est : « extension/ezsite/design/ezsite/templates/content/collectedinfo/form.tpl »

Ces informations qu’on vient de saisir, on peut les lister dans le back_office. Pour cela Onglet colonne gauche « Information recueillie », vous allez voir la liste des objets ayant des informations collectées

Aucun nouvel objet n’est créé dans l’arborescence de noeud de contenu. Au lieu de cela, une nouvelle entrée est présente dans la partie « Information recueillie » de l’onglet  « Administration », de l’interface d’administration.

contact_back

Noter  que ce n’est pas tous les datatypes ont l’option collecteur d’information.

Voilà à ce stade nous allons voir un exemple de formulaire de contact. Tout en exploitant la notion des collecteurs d’informations. J’espère que cet exemple sera utile pour les personnes qui débutent avec le CMS ezpublish

 

  • Philippe

    Bonjour,

    Juste une bonne pratique à adopter sur les règles d’override.

    Source=node/view/full.tpl
    MatchFile=node/view/full/contact.tpl

    Il faut garder un maximum l’arbo dans le MatchFile. Les autres dev reprenant le code s’y retrouveront plus rapidement 😉

  • Amine

    Bon Article !

  • Imad

    C’est un bon article. J’ai une question: Comment je peut faire pour que le message doit être envoyé à une boite email?

    • admin

      Salam,

      Dans ton fichier site.ini.append.php

      Dans le block MailSettings

      [MailSettings]
      Transport=SMTP
      TransportServer=ton.serveur
      TransportPort=25
      TransportUser=
      TransportPassword=
      AdminEmail=test@test.com
      EmailSender=
      ContentType=text/html

      si tu n’as pas de serveur SMTP, tu peux mettre juste :

      Transport=file, et tu peux voir le résultat dans /var/log/mail

      le mail sera envoyé à l’adresse définit dans : AdminEmail

      Merci

  • Hamza

    Bonjour, Merci beaucoup Amine pour tes efforts je trouve tes articles très utiles.J’ai suivi cet article et j’ai appliqué tous les étapes mais quand j’ envoi le formulaire rien ne se passe dans le front-office je reste sur la meme page et je récupère rien dans le collecteur d’information sur le back-office.Ma version d’ez publish est 4.0.7

    • Salam Hamza,
      Se sont les étapes à suivre pour créer un formulaire de contact.
      Vérifier bien stp que tu as bien coché lors de la création de la classes la case « Collecteur d’information ».

      Notez bien que cet exemple, je me suis basé sur la version 4.3

      Merci

  • Hamza

    Merci amine , stp quelle version de wamp ta utilisé ??

    • De rien Hamza,

      Cet exemple a été développé sur Linux. Il est déconseillé de développer avec eZPublish sous Windows

  • beapVq Hello! I’ve been reading your web site for a while now and finally got the courage to go ahead and give you a shout out from Dallas Tx! Just wanted to mention keep up the excellent work!

  • hello very good post