Gabarit article et commentaire

super_g2super_g2 Member
août 2010 modifié dans Bogues
Bonjour,

je viens de remarquer que si j'utilise un template différent pour un de mes articles, la fonction de calcul du nombre de commentaire "pète un cable"...
je m'explique :

j'ai mis en place / réadapté le "tuto" de frederic pour pouvoir faire une shoutbox (tuto Webradio/dédicaces) sur mon site. pour cela, j'ai créé un article "chat" qui me sert à collecter les messages, article dont je change le template, par un plus light sans sa section article_content, mais juste avec un include pour la page commentairechat.php, page de lecture des commentaires elle aussi modifiée légèrement (juste le texte, pas le php..).

code de article-chat.php :
<?php include(dirname(__FILE__).'/header.php'); # On insere le header ?>
<?php include(dirname(__FILE__).'/sidebar.php'); # On insere la sidebar ?>

	<div class="news_haut"></div><div class="news_fond"><!-- Cadre de News -->
	
		<span class="titre"><?php $plxShow->artTitle('link'); ?></span>
			
		<?php include(dirname(__FILE__).'/commentairechat.php'); # On insere les commentaires ?>
	
	</div><div class="news_bas"></div><!-- Fin Cadre de News -->
	
<?php include(dirname(__FILE__).'/footer.php'); # On insere le footer ?>
code de commentairechat.php :
<?php if(!defined('PLX_ROOT')) exit; ?>
<?php # Si on a des commentaires ?>
<?php if($plxShow->plxMotor->plxGlob_coms->count): ?>
	<div id="comments">
		<?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) &agrave #hour:#minute'); ?>, <?php $plxShow->comAuthor('link'); ?> a dit :</p>
					<p class="content_com"><?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 ?>
<?php # Si on autorise les commentaires ?>
<?php if($plxShow->plxMotor->plxRecord_arts->f('allow_com') AND $plxShow->plxMotor->aConf['allow_com']): ?>
	<div id="form">
		<span class="titre_com_form">Ecrire un message</span>
		<p class="message_com"><?php $plxShow->comMessage(); ?></p>
		<form action="<?php $plxShow->artUrl(); ?>#form" method="post">
			<fieldset>
				<div class="form_left">
					<label>Nom :</label>
					<input name="name" type="text" size="20" value="<?php $plxShow->comGet('name',''); ?>" maxlength="30" />
					<label>Site (facultatif) :</label>
					<input name="site" type="text" size="20" value="<?php $plxShow->comGet('site',''); ?>" />
					<label>E-mail (facultatif) :</label>
					<input name="mail" type="text" size="20" value="<?php $plxShow->comGet('mail',''); ?>" />
				</div>
				<label class="lab_com">Commentaire :</label>
				<textarea name="content" cols="35" rows="4"><?php $plxShow->comGet('content',''); ?></textarea><br /><br />
				<label><strong>Vérification anti-spam</strong> :</label>
				<p class="button">
					<?php # Affichage du capcha anti-spam
					if($plxShow->plxMotor->aConf['capcha']): ?>
						<?php $plxShow->capchaQ(); ?> : <input name="rep" type="text" size="5" />
						<input name="rep2" type="hidden" value="<?php $plxShow->capchaR(); ?>" /><br />
					<?php endif; # Fin du if sur le capcha anti-spam ?>
					<span class="buttons"><input type="reset" value="Effacer" />   <input type="submit" value="Envoyer" /></span>
				</p>
			</fieldset>
		</form>
	</div>
<?php endif; # Fin du if sur l'autorisation des commentaires ?>
une page statique contenant un formulaire me permet d'envoyer directement des messages dans la chatbox, page statique elle-aussi avec un template différent (le contenu de cette page est ci-dessous, suivi de son template).
contenu de la page statique chatbox :
<?php 
if(!defined('PLX_ROOT')) exit;

# Notre capcha
$capcha = new plxCapcha();

# Nos variables
if($_POST['rep2'] == md5($capcha->gds.$_POST['rep'])) ;
?>
<div id="form">
        <form action="http://srpulz.fr/article2/chatbox#form" method="post">
            <fieldset>
                <div class="form_left">
                    <label>Nom:</label>
                    <input name="name" type="text" size="20" value="" maxlength="30" /><br />
                    <label>Site (facultatif) :</label>
                    <input name="site" type="text" size="20" value="" /><br />
                    <label>E-mail (facultatif) :</label>
                    <input name="mail" type="text" size="20" value="" /><br />
                </div>
                <label>Message:</label>
                <textarea name="content" cols="35" rows="2"></textarea><br /><br />
                <p class="button">
                <?php echo $capcha->q(); ?> : <input name="rep" type="text" size="10" />
                <input name="rep2" type="hidden" value="<?php echo $capcha->r(); ?>" />
                <span><input type="submit" value="Envoyer" /></span>
                </p>
            </fieldset>
        </form>
    </div>
static-chat.php :
<?php if(!defined('PLX_ROOT')) exit; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<title><?php $plxShow->pageTitle(); ?></title>
	<meta http-equiv="Content-Type" content="text/html; charset=<?php $plxShow->charset(); ?>" />
	<link rel="icon" href="<?php $plxShow->template(); ?>/images/favicon.png" />
	<link rel="stylesheet" type="text/css" href="<?php $plxShow->template(); ?>/style.css" media="screen" />
</head>
<body>
<div id="conteneur2">
   <div id="contenu2"><!-- Début #contenu --> 	
	<div id="right2">
		<div class="news_haut"></div><div class="news_fond"><!-- Cadre de News -->
	
			<span class="titre"><?php $plxShow->staticTitle(); ?></span>
			<div class="static"><?php $plxShow->staticContent(); ?></div>

		</div><div class="news_bas"></div><!-- Fin Cadre de News -->
	</div>
   </div><!-- Fin #Contenu -->
</div><!-- Fin #Conteneur -->	

</body>
</html>
le souci est le suivant : tant que l'article "chatbox" ne contient pas de commentaire, mes autres articles qui utilisent les templates par défaut (article.php et commenaires.php) affichent bien la section commentaires avec le formulaire. dès que j'ajoute un commentaire dans mon article "chatbox", les articles ne contenant pas encore de commentaire me renvoie l'erreur suivante :
Commentaires
Fatal error: Call to a member function loop() on a non-object in /var/www/site/themes/srpulz_v1/commentaires.php on line 6
pour les articles contenant déjà des commentaires, cela marche bien.

de la même façon, si un article contient des coms et que la chatbox n'en contient pas, le pb s'inverse et c'est le formulaire de commentaire de la chatbox qui bug...

un souci de comptage des articles??

je précise que l'article chatbox est dans sa propre catégorie, tandis que mes autres articles sont dans d'autres catégories..
des idées??

mon site : http://srpulz.fr

Réponses

  • up
  • super_g2 a écrit:
    up
    C'est quoi ça ? Nous sommes dimanche, humains, ce genre de réaction passe très moyennement.

    Merci de patienter ( sans flooder ) le temps qu'une solution soit proposée.
  • dsl, je me suis couché à 4h du mat ^^
  • Bonjour tout le monde,

    ce souci est plus que problématique, je ne vois pas d'où vient le problème...
    d'ailleurs, les articles de toutes les catégories autre que chatbox ont le même comportement, dès que je publie un des commentaires de la catégorie chatbox...

    une solution moche ( mais alors vraiment moche... mais bon) serait de créer un commentaire automatiquement à la création de l'article, mais je ne veux pas d'une telle roue de secours...
  • StéphaneStéphane Member, Former PluXml Project Manager
    Pourquoi le message d'erreur affiché concerne le fichier commentaires.php, alors que tu ne l'utilises pas ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • super_g2super_g2 Member
    août 2010 modifié
    Bonsoir,

    je l'utilise sur les pages d'articles classiques, mais pas tel quel (cf. modif du dessus) sur celle de l'article gérant la chatbox.
    tous les autres articles, qqsoit leur catégorie (hormis la catégorie chatbox, à part pour des raisons évidentes de séparation et d'affichage), bug si ils n'ont pas d'articles.

    merci de preter attention à mon post ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Si je comprends bien ta modif, ton article "chat" utilise un gabarit dans lequel tu inclus le fichier
    <?php include(dirname(__FILE__).'/commentairechat.php
    
    d'où ma question: pourquoi un message d'erreur sur le fichier commentaires.php alors qu'il n'est pas utilisé
    Commentaires
    Fatal error: Call to a member function loop() on a non-object in /var/www/site/themes/srpulz_v1/commentaires.php on line 6
    
    il y a quelque chose qui m'échappe là

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • ce message d'erreur apparait uniquement sur les articles utilisant le gabarit "article.php" (cad le gabarit de base, où personnellement je n'ai fait que des modifs d'ordre esthétiques et non fonctionnelles).

    il apparait si l'article "chatbox" (qui utilise comme tu l'as compris le gabarit "article-chat.php incluant "commentairechat.php") contient des commentaires, mais pas l'article qu'on est en train de visionner. (qui affiche donc le message).

    dans l'autre sens, si l'article "chatbox" ne contient pas de commentaire, ce dernier affiche le même message d'erreur, mais plus les autres articles même si ils n'ont pas de commentaires ! :s

    enjoy
  • StéphaneStéphane Member, Former PluXml Project Manager

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • merci :)
Connectez-vous ou Inscrivez-vous pour répondre.