Objectif
Le script liste le nom de chaque rédacteur sur une page choisie. Les liens permettent l’ouverture d’une fenêtre pop-up qui contient un formulaire généré par la balise #FORMULAIRE_ECRIRE_AUTEUR
de Spip, et permet d’envoyer un email.
La boucle d’affichage des auteurs et du lien pour leur envoyer un message
<BOUCLE_mail_auteur(AUTEURS) {id_auteur}{tout}>
<?php if ("#EMAIL") { ?>
<a
href="inc_ecrire_auteur.php3?id_auteur=#ID_AUTEUR" target="mail"
title="<:envoyer_message:>"
onclick="javascript:window.open('inc_ecrire_auteur.php3?id_auteur=#ID_AUTEUR', 'mail', 'scrollbars=yes, resizable=yes, width=640, height=640'); return false;">
[ (#NOM)]</a>
<?php } else { ?>
[ (#NOM)]
<?php } ?>
</BOUCLE_mail_auteur>
Le paramètre {tout}
Le paramètre {tout}
permet de lister tous les rédacteurs, qu’ils aient écrit quelque chose ou pas. (voir l’article 907)
Il faut bien vérifier dans tout le site qu’il n’y ait plus de #EMAIL qui apparaissent.
La page avec le formulaire
Le fichier inc_ecrire_auteur.php3 :
Le inc_ecrire_auteur.php3 est un fichier .php3 à 1 mois (30*24*3600 secondes) de
délais, il n’est absolument pas nécessaire de mettre un délai court.
Son squelette inc_ecrire_auteur.html :
Son squelette inc_ecrire_auteur.html se contente d’afficher la mise en page avec une simple boucle AUTEUR{id_auteur}
et #FORMULAIRE_ECRIRE_AUTEUR
Le voici : adaptez le à cotre convenance.
J’ai placé des commentaire dedans.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<BOUCLE_ecrire_auteur(AUTEURS){id_auteur}{tout}>
<html lang="#LANG">
<head>
<title>Écrire à #NOM</title>
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET">
<!-- Ceci est la feuille de style par defaut pour les types internes a SPIP -->
<link rel="stylesheet" href="spip_style.css" type="text/css">
<!-- Les feuilles de style specifiques aux presents squelettes -->
<link rel="stylesheet" href="typographie.css" type="text/css">
<!-- media="..." permet de ne pas utiliser ce style sous Netscape 4 (sinon plantage) -->
<link rel="stylesheet" href="habillage.css" type="text/css" media="projection, screen, tv">
<!-- media="print" permet d'utiliser cette feuille de style quand vous imprimez depuis votre navigateur -->
<link rel="stylesheet" href="impression.css" type="text/css" media="print">
</head>
<body dir="#LANG_DIR" OnLoad=self.focus()>
<div class="cartouche">
<h1 class="titre-texte">Écrire à #NOM</h1>
</div>
<div class="texte">
[(#FORMULAIRE_ECRIRE_AUTEUR|sinon{"Ce rédacteur ne peut pas être contacté de cette façon"}) ]
</BOUCLE_ecrire_auteur>
<//B_ecrire_auteur>
</div>
</body>
</html>
Démonstration
J’utilise ce pluggin dans ce site http://espace.jdr.ath.cx
Utilisation
Quand vous avez besoin d’afficher les auteurs de l’article avec un lien vers leur formulaire, il suffit de placer la ligne suivante à l’intérieur de la boucle article :
<INCLURE(inc_lien_ecrire_auteur.php3){id_auteur}>
Il faudrait améliorer cela pour qu’un message soit envoyé dans la partie privée si le rédacteur n’a pas mis d’e-mail.
Autres utilisations... :
Vous pourriez utiliser d’autres champs du rédacteur, ou bien les champs EXTRA
pour permettre au rédacteur de spécifier une autre adresse e-mail pour recevoir les messages des visiteurs.
améliorations à faire
Je me suis inspiré de la fenêtre qui s’ouvre pour permettre de recevoir ses identifiants par e-mail quand on les a oubliés.
Il faudrait que cette fenêtre pop-up soit refermée et crée, parce que si elle est déjà ouverte mais masquée cela peut poser quelques problèmes quand on a un système anti popup. (la fenêtre ne viendrait pas au premier plan, cela donnerait l’impression que le lien ne fonctionne pas.)
L’autre solution consiste à nommer différement la fenêtre, par exemple mail#id_article
.
Grégoire
Discussions par date d’activité
5 discussions
Bonjour
Je voulais signaler que cette contibution fonctionne mal sous Spip 1.8pr, la prévisualisation de fait mal mais le message est bien envoyé, probablement parce que le formulaire est appelé dans une fenêtre.
A bientôt
Grégoire
Bonjour,
J’avais installé cette boucle qui fonctionnait à merveille en 1.7.2 et en passant en 1.8.2g, le message obtenu devient « Cet auteur ne peut être contacté de cette façon. ».
Y a-t-il une ruse pour que cela remarche ou bien un réglage à faire quelque part ou encore une autre boucle plus récente ?
Grand merci par avance pour les réponses ;-)
@+
Voldor
Bonsoir
Oui, sous 1.7.2 ça marchait bien....
Maintenant, avec les nouveaux formulaires, il se pourrait que ce ne soit vraiment plus compatible.
Indique que
#FORMULAIRE_ECRIRE_AUTEUR
à retourné une valeur ’0’...Il faudrait refaire cette contribution et y intégrer le filtrage anti-spam pour éviter les e-mails en copie dans le champs e-mail...
Tout un programme
Je ne toucherais pas à cette contribution avant quelques mois...
Bon courage
Grégoire
Répondre à ce message
Bonjour :o)
j’ai créé les fichiers dans la racine du site :
par simple copié-collé (courageuse mais pas téméraire ;op)
dans le fichier article.html j’ai :
Cela m’affiche le formulaire dans la page (et de façon très désordonnée) comment faire pour qu’il soit véritablement affiché comme un lien générant un pop-up sur le nom de l’auteur ?
Pardon pour le temps de réponse.
Pour bien régler l’affichage, il faut bien travailler les feuilles de styles.... je sais que ce n’est pas facile.
En regardant la source de la page dans le fenêtre, il doit être possible de repérer les styles utilisés.
Bon courage.
Grégoire
Répondre à ce message
voila ou j’en suis :
- j’ai inséré le premier script dans auteur.html (c’est indiqué nulle part dans l’article, mais je vois pas ou le mettre sinon)
- j’ai créé un fichier inc_ecrire_auteur.php3 comme tu le dis
- j’ai créé son pendant html avec ton code plus haut
- j’ai inséré le
<INCLURE(inc_lien_ecrire_auteur.php3){id_auteur}>
dans une boucle article :-
- ... et ca plante
Je précise que je suis en local, et là je sais vraiment plus quoi faire... ;-(
As-tu vérifier le nom de tous les fichiers concernés ?
Et si tu reprenais la procédure ?
Je travaille parfois aussi en local avec EasyPHP.
Amicalement
Grégoire
Répondre à ce message
Bonjour.
Ici, on utilise un formulaire intégré dans Spip :
#FORMULAIRE_ECRIRE_AUTEUR
, mais on l’insère dans une boucle, qui fait partie d’un squelette :inc_ecrire_auteur.html
qui sera appelé par un include<INCLURE(inc_lien_ecrire_auteur.php3){id_auteur}>
.De la même façon que
article.html
est un squelette, qu’il est appelé via un programme en phparticle.php3
.Les squelettes doivent être avec les squelettes, les scripts php3 à la racine du site.
Voir :
Amicalement
Grégoire
Répondre à ce message
excuse moi mais j’ai pas bien compris ou on met le premier script...
merci de m’éclairer
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |