J'ai souvent été confronté au problème suivant : Parfois, lorsqu'il m'arrive d'écrire un commentaire sur le blog Dotclear 1 de quelqu'un — c'est aussi valable chez moi — j'éprouve le besoin de me relire. Jusqu'à maintenant l'action du bouton Prévisualiser
provoquait l'affichage d'une page vierge contenant uniquement le commentaire en cours d'écriture et le formulaire correspondant.
Dans ces conditions — surtout si le commentaire est long et/ou travaillé — on perd la possibilité de relire les commentaires précédents ou même le billet dont il est question. Dotclear 2 a corrigé ce problème en intégrant la prévisualisation au sein de l'affichage complet du billet.
Il est très facile d'obtenir le même comportement sur un blog Dotclear 1 et je vais vous montrer ce qu'il faut modifier en prenant comme exemple le thème defaut
.
Première modification à effectuer, dans le fichier template.php
. Vers la ligne 60 vous trouverez ceci :
<?php elseif ($preview) : /* Si on demande la prévisualisation d'un commentaire */?> <h3>Commentaire pour <?php dcPostTitle(); ?></h3> <div id="comment-preview"> <blockquote> <?php dcCommentPreview(); ?> </blockquote> </div> <h3>Changer le commentaire</h3> <?php include dirname(__FILE__).'/form.php'; ?>
Supprimez simplement toutes ces lignes et enregistrez le fichier.
Ensuite la deuxième modification à faire, dans le fichier form.php
. Vers la ligne 23 vous trouverez ceci :
<form action="<?php dcPostUrl(); ?>" method="post" id="comment-form">
Pour que l'utilisateur soit directement placé au début de sa prévisualisation dans la page (pratique s'il y a déjà plusieurs dizaines de commentaires), il faut rajouter #pr
à l'URL fournie dans l'attribut action
de la balise <form>
. Voilà la nouvelle ligne (qui remplace la précédente) :
<form action="<?php dcPostUrl(); ?>#pr" method="post" id="comment-form">
Enfin, troisième et dernière modification, toujours dans le même fichier. Il suffit d'insérer juste devant la ligne que vous venez de modifier les lignes suivantes :
<?php if ($preview) : /* Si on demande la prévisualisation d'un commentaire */?> <h3>Votre commentaire</h3> <div id="pr"> <blockquote> <?php dcCommentPreview(); ?> </blockquote> </div> <?php endif; ?>
Enregistrez le fichier et appréciez ! Vous voilà muni d'un thème qui intègre la prévisualisation sur la page d'affichage du billet, juste après la liste des commentaires déjà présents et juste devant le formulaire permettant de le modifier.
Il n'est probablement pas difficile d'adapter ce changement à la plupart des thèmes existants et vous pouvez bien sûr adapter le code que je vous propose d'insérer dans le fichier form.php
en fonction de vos goûts.
À vous les studios \o/
1 De Lomalarch -
Ah ben oui là dis donc \o/
Ça c’est un truc que je vais lâchement te subtiliser, je le crains :op
Et l’occasion de te dire tout le bien que je pense de ce nouveau thème qui a sacrément fière allure, puisque j’ai raté la « cérémonie d’ouverture » ;-)
Encore bravo, Franck San !
2 De Franck -
Subtilises autant que tu pourras, c'est fait pour ça ;-)
3 De Tomtom -
Pas mal comme astuce! C'est bien pensé ;)
J'ai fais différemment sur mon blog mais le résultat est le même
4 De Kozlika -
Dis donc toi l'affreux, tu ferais pas partie de la team hein ? Pfffffff... Allez zou, prends tes clés et hop !
Pour la peine je te dirai meme pas que ton nouveau thème est bien fort joli, rien de rien, meme si je le pense je le garderai pour moi, na !
5 De Franck -
TomTom je sais, par contre ici point d'ajax et consort, je préfère garder le même fonctionnement que le javascript soit activé ou pas. Ceci-dit, rien t'empêches d'adopter la même méthode en plus de celle que tu proposes ;-)
Chef, oui chef ! C'est fait chef !
6 De Luc -
J'ai enfin pris 5 minutes pour faire la modification!
Je ne te confirme pas que ça marche, je ne suis surement pas le premier à la faire!
En tout cas : merci!
7 De Florence -
Merci pour l’info !! :)