[v4.1.1] Livre d'Or
Bonjour,
Pour amener une petite pierre à l'édifice :-)
Une page statique qui permet d'ajouter un livre d'or à Pluxml, (script que j'ai adapté et dont l'original se trouve sur http://www.salemioche.net/script-php-2.php)
C'est simple en attendant mieux
Cordialement
Fabrice
Pour amener une petite pierre à l'édifice :-)
Une page statique qui permet d'ajouter un livre d'or à Pluxml, (script que j'ai adapté et dont l'original se trouve sur http://www.salemioche.net/script-php-2.php)
<?php
if(!empty($_POST)) { //Formulaire valide
//Ouverture du fichier en écriture
$fp = fopen("data/guestbook/guestbook.txt",a);
//On convertit les caracteres html
$nom = htmlspecialchars($_POST['nom']);
$mail = htmlspecialchars($_POST['mail']);
$message = stripslashes(nl2br(htmlentities($_POST['message'],ENT_NOQUOTES,PLX_CHARSET)));
$d = date ( "d/m/Y H:i:s" );
$page = "<p>";
$lemail = "<a href=\"mailto:$mail\">$mail</a>";
$page .= "<b>$nom</b> (".$lemail.") - $d<br />$message<br /></p><hr />\n";
//On rajoute le message
fwrite($fp,"$page" ,strlen("$page"));
//fermeture du fichier
fclose($fp);
}
?>
<h2>A vous !!</h2>
<div id="form">
<form method="post" action="#form" onsubmit="if ( this.nom.value.length < 2 ) { return false ;}" >
<fieldset>
<label>Nom :</label>
<input type="text" name="nom" size="25" />
<label>Mail :</label>
<input type="text" name="mail" size="25" />
<label>Message:</label>
<textarea name="message" rows="4" cols="47"></textarea>
<p><input type="submit" value="Envoyer" /></p>
</fieldset>
</form>
</div>
<?php
$fichier=PLX_ROOT."data/guestbook/guestbook.txt";
$tabfich=file($fichier);
$i = count($tabfich);
while( $i > 0 ){
echo $tabfich[$i];
$i--;
}
?>
<br /><br />
Il faut créer dans le répertoire DATA, un répertoire "guestbook" et à l'intérieur, un fichier vide qui a comme nom guestbook.txtC'est simple en attendant mieux
Cordialement
Fabrice
0
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Merci.
Merci Hamtaro,
J'aimerai pouvoir trier dans le sens inverse les posts, càd, les posts les plus récents en premier
Si vous avez une idée
Cordialement
Fabrice
Je peut te proposer la solution que j'avais prise sur un v2 ou v3 (http://yidille.free.fr/plux/bs_plux/?7-livre-d-or et post http://forum.pluxml.org/viewtopic.php?id=706 ) , qui consister a alimenter un tableau en bouclant sur les commentaires au lieu de les afficher , puis selon le nombre ceux-ci était paginer et afficher du plus récent au plus ancien .
En modifiant le fichier "article.php" de ton theme , les commentaires de toutes tes pages seront paginer .
Ensuite :
1) Creer un nouvel Article , lui donner le nom de livre d'or et l'anti-daté (en faire le premier article par exemple) .
récuperer le lien vers cette page .
2) Pour creer un lien direct vers celui-ci
Creer une page statique avec comme nom : Livre d'Or et l'editer en incorporant cette redirection pour eviter le duplicate content :
<?php // Permanent redirection header("HTTP/1.1 301 Moved Permanently"); header("Location: http://adresse de votre page livre-d'or"); exit(); ?>Modification a effectuer sur article.php :chercher :
<?php # Si on a des commentaires ?> <?php if($plxShow->plxMotor->plxGlob_coms->count): ?> <div id="comments"> <h2>Commentaires</h2> <?php while($plxShow->plxMotor->plxRecord_coms->loop()): # On boucle sur les commentaires ?> <div id="<?php $plxShow->comId(); ?>" class="comment"> <div class="info_comment"><p>Par <?php $plxShow->comAuthor('link'); ?> le <?php $plxShow->comDate(); ?></p></div> <blockquote><p><?php $plxShow->comContent() ?></p></blockquote> </div> <?php endwhile; # Fin de la boucle sur les commentaires ?> <?php # On affiche le fil Atom de cet article ?> <div class="feed_article"><?php $plxShow->comFeed('atom',$plxShow->artId()); ?></div> </div> <?php endif; # Fin du if sur la prescence des commentaires ?>et remplacer par :<?php # Si on a des commentaires ?> <?php if($plxShow->plxMotor->plxGlob_coms->count): ?> <div id="comments"> <h2>Commentaires</h2> <? $i=0; while($plxShow->plxMotor->plxRecord_coms->loop()): # On boucle sur les commentaires $i_com=$i; $ligne_com= $i_com%2; $id_com= $plxShow->plxMotor->plxRecord_coms->f('numero'); $auteur_com= $plxShow->plxMotor->plxRecord_coms->f('author'); $auteur_site= $plxShow->plxMotor->plxRecord_coms->f('site'); $date_com= plxUtils::dateIsoToHum($plxShow->plxMotor->plxRecord_coms->f('date')).' à '.plxUtils::heureIsoToHum($plxShow->plxMotor->plxRecord_coms->f('date')); $contenu_com= nl2br($plxShow->plxMotor->plxRecord_coms->f('content')); $commentaire[$i] = array($i_com, $ligne_com , $id_com , $auteur_com , $auteur_site , $date_com , $contenu_com ); $i++; endwhile; # Fin de la boucle sur les commentaires ?> <?php //recuperation des variables d'url // recuperation du numero de page a afficher if(!isset($_GET['pagenum'])) {$page_num=1;} else {$page_num=$_GET['pagenum'];} // choix du sens d'affichage croissant ou decroissant if(!isset($_GET['tri'])) {$tri="kr";} else {$tri="k";} // mise en place variables pour pagination comptage des commentaires , et configuration $compteur=0; //raz $nb=count($commentaire);//nombre de commentaires $comm_par_page=15; // nombres de commentaires a affichée par pages $pages_com_ar=ceil($nb/$comm_par_page); // nombre de pages $pages_com=floor($nb/$comm_par_page); // pour gestion des liens // verification et nettoyage des numeros de pages qui n'existent pas avec renvoi a la premiere page . if (($page_num==0) || ($page_num > $pages_com_ar)) {$page_num=1;} $page_numero=$page_num; //numero de page $prem=($page_numero*$comm_par_page)-$comm_par_page;//numero du premier message a afficher $der=$prem+$comm_par_page;//numero du dernier message a afficher $before=$page_numero-1 ; $after=$page_numero+1 ; // fin variables de pagination // lien de navigations de page en page //test si premiere page echo '<p id="nav_comment">page(s) : · '; // test si plusieurs pages si besoin d'afficher une pagination (liens precedents/premier) if ($pages_com>=0){ if (($page_num!=0) && ($page_num!=1)) // test que ce n'est pas la premiere page { echo '<a href="?article'.$plxShow->artId().'/#comments" title="premiere page de commentaires">1</a> · '; } $pagesbefore=2; // boucle affichant les liens des pages precedentes existantes while($pagesbefore < $page_num) { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$pagesbefore.'#comments" title="page N°'.$pagesbefore.'">'.$pagesbefore.'</a> · '; $pagesbefore++; } } echo ' <b style="color:#DCA61C">'.$page_num.' </b> · ' ; // affiche numero de page en cours // test si plusieurs pages si besoin d'afficher une pagination (liens suivants/derniers) if ($pages_com>0){ if ($page_num!=$pages_com_ar) // test que ce n'est pas la derniere page { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$after.'#comments" title="page N°'.$after.' " >'.$after.'</a> · '; } // boucle affichant les liens des pages suivantes existantes $pagesafter=$after; $pagesafter++; while(($pagesafter < $pages_com_ar) && ($pagesafter > $after)) { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$pagesafter.'#comments" title="page N°'.$pagesafter.'">'.$pagesafter.'</a> · '; $pagesafter++; } // on affiche le lien vers la derniere page si celle ci n'est pas la page courante if (($page_numero!=$pages_com_ar) && ($after!=$pages_com_ar)) //test si pages precedentes existent { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$pages_com_ar.'#comments" title="Derniere page" >'.$pages_com_ar.'</a> · '; } } echo '</p>'; eval($tri.'sort($commentaire);'); $comnum=$nb; foreach($commentaire as $valeur) { if ($compteur!=$nb) { if(($compteur>=$prem) && ($compteur<$der) ) { $aopen='';$aclose=''; if($valeur[4]!='') {$aopen='<a href="'.$valeur[4].'">';$aclose='</a>';} echo'<div id="'.$valeur[2].'" class="comment ligne'.$valeur[1].'"> <div class="info_comment"><p><span style="float:right;">N°'.$comnum .'/'.$nb.' .</span>Par '.$aopen.$valeur[3].$aclose.' le '.$valeur[5].'</p></div> <blockquote><p>'.$valeur[6].'</p></blockquote> </div>'; } $comnum--; $compteur++; } } ?> <?php # On affiche le fil Atom de cet article ?> <div class="feed_article"><?php $plxShow->comFeed('atom',$plxShow->artId()); ?></div> </div> <?php endif; # Fin du if sur la prescence des commentaires ?>La gestion de la pagination des commentaires se fait dans le theme sans toucher a Pluxml.GC
exemple de mise en place d'un article en tant que livre d'or : http://gcyrillus.com/zaicha/static6/livre-d-or
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Merci gcyrillus, je vais tester ta solution, je ne l'avais pas vu, elle a l'air pas mal car utilise les commentaires des articles, ce qui est astucieux, je vais voir si elle est adaptée à mon blog.
Sinon, j'ai mis à jour dans mon premier post, le code avec la modification de l'ordre des commentaires pour avoir les plus récents en premier
Cordialement
Fabrice
ça peut servir pour ajouter des commentaires à une page statique comme sous un article ? Je voudrais créer une page de liens et laisser aux visiteurs la possibilité de commenter
Ça marche bien excepté à deux détails près :
* je préférerais une présentation en 2 colonnes (invisibles) c-a-d dans celle de gauche : les nom, mél et bouton de validation ; dans celle de droite : le champ commentaire. Car là le champ commentaire vient après et il y a un gâchis d'espace
* le mél est rendu publque et le site web ne peut être renseigné
au final c'est dommage que ce module ne soit pas calqué sur le module commentaire normal (avec indication du site web du visiteur mais pas de son adresse - enfin je crois)
je n'ai pas osé tester l'autre solution qui semble modifier PluXml en profondeur ?
tout se joue dans le themes et la page statique redirige vers une page 'article' definie (avec son formulaire de commentaire comme les autres ) et utilisé comme livre d'or . , cette page peut-etre une page de lien ou n'importe quoi d'autre .
Ce que je proposesert a paginer les commentaires ceci est la seule modification , fonction dont tu n'as pas besoin a priori .
Une page article normale se suffit a elle-même selon la description que tu fait.
Ce sujet parle de "livre d'or"
GC
note : penser a remplacer plxUtils::dateIsoToHum par plxDate::dateIsoToHum pour les dernieres versions de pluxml .
edit : mise a jour pour la v4.3.1 (objet date) pour paginer les commentaires.
<?php # Si on a des commentaires ?> <?php if($plxShow->plxMotor->plxGlob_coms->count): ?> <div id="comments"> <h2>Commentaires</h2> <?php $i=0; while($plxShow->plxMotor->plxRecord_coms->loop()): # On boucle sur les commentaires $i_com=$i; $ligne_com= $i_com%2; $id_com= $plxShow->plxMotor->plxRecord_coms->f('numero'); $auteur_com= $plxShow->plxMotor->plxRecord_coms->f('author'); $auteur_site= $plxShow->plxMotor->plxRecord_coms->f('site'); $date_com= plxDate::dateIsoToHum($plxShow->plxMotor->plxRecord_coms->f('date')).' à '.plxDate::heureIsoToHum($plxShow->plxMotor->plxRecord_coms->f('date')); $contenu_com= nl2br($plxShow->plxMotor->plxRecord_coms->f('content')); $commentaire[$i] = array($i_com, $ligne_com , $id_com , $auteur_com , $auteur_site , $date_com , $contenu_com ); $i++; endwhile; # Fin de la boucle sur les commentaires ?> <?php //recuperation des variables d'url // recuperation du numero de page a afficher if(!isset($_GET['pagenum'])) {$page_num=1;} else {$page_num=$_GET['pagenum'];} // choix du sens d'affichage croissant ou decroissant if(!isset($_GET['tri'])) {$tri="kr";} else {$tri="k";} // mise en place variables pour pagination comptage des commentaires , et configuration $compteur=0; //raz $nb=count($commentaire);//nombre de commentaires $comm_par_page=15; // nombres de commentaires a affichée par pages $pages_com_ar=ceil($nb/$comm_par_page); // nombre de pages $pages_com=floor($nb/$comm_par_page); // pour gestion des liens // verification et nettoyage des numeros de pages qui n'existent pas avec renvoi a la premiere page . if (($page_num==0) || ($page_num > $pages_com_ar)) {$page_num=1;} $page_numero=$page_num; //numero de page $prem=($page_numero*$comm_par_page)-$comm_par_page;//numero du premier message a afficher $der=$prem+$comm_par_page;//numero du dernier message a afficher $before=$page_numero-1 ; $after=$page_numero+1 ; // fin variables de pagination // lien de navigations de page en page //test si premiere page echo '<p id="nav_comment">page(s) : · '; // test si plusieurs pages si besoin d'afficher une pagination (liens precedents/premier) if ($pages_com>=0){ if (($page_num!=0) && ($page_num!=1)) // test que ce n'est pas la premiere page { echo '<a href="?article'.$plxShow->artId().'/#comments" title="premiere page de commentaires">1</a> · '; } $pagesbefore=2; // boucle affichant les liens des pages precedentes existantes while($pagesbefore < $page_num) { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$pagesbefore.'#comments" title="page N°'.$pagesbefore.'">'.$pagesbefore.'</a> · '; $pagesbefore++; } } echo ' <b style="color:#DCA61C">'.$page_num.' </b> · ' ; // affiche numero de page en cours // test si plusieurs pages si besoin d'afficher une pagination (liens suivants/derniers) if ($pages_com>0){ if ($page_num!=$pages_com_ar) // test que ce n'est pas la derniere page { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$after.'#comments" title="page N°'.$after.' " >'.$after.'</a> · '; } // boucle affichant les liens des pages suivantes existantes $pagesafter=$after; $pagesafter++; while(($pagesafter < $pages_com_ar) && ($pagesafter > $after)) { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$pagesafter.'#comments" title="page N°'.$pagesafter.'">'.$pagesafter.'</a> · '; $pagesafter++; } // on affiche le lien vers la derniere page si celle ci n'est pas la page courante if (($page_numero!=$pages_com_ar) && ($after!=$pages_com_ar)) //test si pages precedentes existent { echo '<a href="?article'.$plxShow->artId().'/'.'&pagenum='.$pages_com_ar.'#comments" title="Derniere page" >'.$pages_com_ar.'</a> · '; } } echo '</p>'; eval($tri.'sort($commentaire);'); $comnum=$nb; foreach($commentaire as $valeur) { if ($compteur!=$nb) { if(($compteur>=$prem) && ($compteur<$der) ) { $aopen='';$aclose=''; if($valeur[4]!='') {$aopen='<a href="'.$valeur[4].'">';$aclose='</a>';} echo'<div id="'.$valeur[2].'" class="comment ligne'.$valeur[1].'"> <div class="info_comment"><p><span style="float:right;">N°'.$comnum .'/'.$nb.' .</span>Par '.$aopen.$valeur[3].$aclose.' le '.$valeur[5].'</p></div> <blockquote><p>'.$valeur[6].'</p></blockquote> </div>'; } $comnum--; $compteur++; } } ?> <?php # On affiche le fil Atom de cet article ?> <div class="feed_article"><?php $plxShow->comFeed('atom',$plxShow->artId()); ?></div> </div> <?php endif; # Fin du if sur la prescence des commentaires ?>Dans le fichier "commentaires.php" du themesremplacer le code ci-dessous par le code ci-dessus :
<?php # Si on a des commentaires ?> <?php if($plxShow->plxMotor->plxGlob_coms->count): ?> <div id="comments"> <h2>Commentaires</h2> <?php while($plxShow->plxMotor->plxRecord_coms->loop()): # On boucle sur les commentaires ?> <div id="<?php $plxShow->comId(); ?>" class="comment type-<?php $plxShow->comType(); ?>"> <blockquote> <p class="info_comment">Le <?php $plxShow->comDate('#num_day #month #num_year(4)'); ?> <?php $plxShow->comAuthor('link'); ?> à dit :</p> <p class="content_com"><?php $plxShow->comContent() ?></p> </blockquote> <div class="clearer"></div> </div> <?php endwhile; # Fin de la boucle sur les commentaires ?> <?php # On affiche le fil Atom de cet article ?> <div class="feed_article"><?php $plxShow->comFeed('atom',$plxShow->artId()); ?></div> </div> <?php endif; # Fin du if sur la prescence des commentaires ?>Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Mais comment « faire rentrer » une « page article normale » dans mes pages statiques ?
récuperer le lien vers cette page .
2) Pour creer un lien direct via une page statique
Creer une page statique avec comme nom celui de votre page et l'editer en incorporant cette redirection pour eviter le duplicate content :
<?php // Permanent redirection header("HTTP/1.1 301 Moved Permanently"); header("Location: lien absolue vers l'article"); exit(); ?>En cliquant sur le lien de la page statique la redirection est se fait automatiquement vers l'article ciblé .(La je ne repete que ce que j'explique plus haut , je ne peut pas faire plus , prend donc le temps de bien lire les sujet.)
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
merci d'avoir pris le temps de m'éclairer
c'est du bricolage mais c'est plus cohérent comme ça
Si tu ne veut pas voir cette catégorie s'afficher dans ton menu vertical (dans la sidebar) , donnes lui le n° 0 .
GC
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)