Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2011-03-04 13:06:01

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Plugin MoreTpl : problème ajout de nouveaux tpl

Bonjour,

Je souhaite pouvoir afficher via des balises

{{tpl:IdentifiantTpl}}

et sans passer par des widgets existant, le nombre de billets total et le nombre de catégories du blog

j'ai donc créé un fichier _public.php dans le thème actif avec le code ci-dessous

<?php

$core->tpl->addValue('CountCategories', array('tplMoreTpl', 'CountCategories'));
$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));

class tplMoreTpl {

	public static function CountCategories($attr)
	{
		$f = $GLOBALS['core']->tpl->getFilters($attr);
		$n = '$_ctx->categories->count';
		
		return '<?php echo '.sprintf($f, $n).'; ?>';
	}
	
	public static function CountPosts($attr)
	{
		$f = $GLOBALS['core']->tpl->getFilters($attr);
		$n = '$_ctx->posts->count';
		
		return '<?php echo '.sprintf($f, $n).'; ?>';
	}
}
?>

et les tpl ne sont pas interprétés, il ne m'affiche pas les "comptes" souhaités.

Merci de votre aide

Hors ligne

#2 2011-03-04 13:20:40

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Dans quelle page place-tu ces balises, et à quel endroit de ces pages ?


Dyslexics have more fnu!

Hors ligne

#3 2011-03-04 13:42:12

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Bonjour Dsls,
je place les tpl dans la page home.html et juste après

<div id="content">

Comme ceci

<p class="infosblog">Actuellement il y a : {{tpl:CountPosts}} billetss classés dans {{tpl:CountCategories}} catégories</p>

Hors ligne

#4 2011-03-04 13:50:25

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Normal que ça n'affiche rien : $_ctx->posts et $_ctx->categories ne sont renseignées que dans des boucles type tpl:Entries, et ne sont pas renseignés par défaut.

il faut passer par $core->blog->getPosts(array(),true)->f(0) pour le nombre de billets et $core->blog->getCategoriesCounter() pour le nombre de catégories


Dyslexics have more fnu!

Hors ligne

#5 2011-03-04 14:12:42

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

OK Dsls merci de tes explications, mais là comme je débute complètement en php je ne vois pas quoi remplacer avec tes explications dans la fonction php que j'ai indiquée dans mon premier post et que j'avais d'ailleurs reprise d'ici

merci de ton aide

Hors ligne

#6 2011-03-04 14:19:54

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Pour le nombre de billets, voici ce que j'utilise

public static function entriesNumber()
	{
		$core = &$GLOBALS['core'];
		$p = $core->blog->getPosts(array(),true)->f(0);
		return $p;
	}

et qui pourrait remplacer ta fonction CountPosts, tu devrais ensuite trouver pour les catégories ;)

Hors ligne

#7 2011-03-04 14:42:36

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

OK alors apparemment ça ne fonctionne toujours pas :(

Voilà ce que j'ai mis dans mon _public.php

<?php

$core->tpl->addValue('CountCategories', array('tplMoreTpl', 'CountCategories'));
$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));

class tplMoreTpl {

	public static function CountCategories()
	{
		$core = &$GLOBALS['core'];
		$f = $core->blog->getCategoriesCounter();
		return $f;
	}
	
	public static function CountPosts()
	{
		$core = &$GLOBALS['core'];
		$p = $core->blog->getPosts(array(),true)->f(0);
		return $p;
	
	}
}
?>

et dans mon home.html

<p class="infosblog">Actuellement il y a : {{tpl:CountPosts}} posts classés dans {{tpl:CountCategories}} catégories</p>

je ne vois pas ce qui ne vas pas?

Merci de votre aide

Hors ligne

#8 2011-03-04 15:44:26

Dsls
Modérateur couteau-suisse
Inscription : 2004-11-18
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Nope, il faut retourner le code généré :

<?php

$core->tpl->addValue('CountCategories', array('tplMoreTpl', 'CountCategories'));
$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));

class tplMoreTpl {

	public static function CountCategories()
	{
		$f = '<?php echo $core->blog->getCategoriesCounter() ?>';
		return $f;
	}
	
	public static function CountPosts()
	{
		$p = '<?php $core->blog->getPosts(array(),true)->f(0) ?>';
		return $p;
	
	}
}
?>

Dyslexics have more fnu!

Hors ligne

#9 2011-03-04 15:57:27

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Dsls a écrit :

Nope, il faut retourner le code généré :

Bah pas forcément, lorsqu'on ajoute un billet on fait un triggerBlog et ça se met à jour, non ?

Hors ligne

#10 2011-03-04 16:04:59

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

En tous cas ça ne fonctionne pas. J'ai fait un copié/collé du code de Dsls :(
J'ai oublié de préciser que je suis sur une install multiblogs, je ne sais pas si ça peut avoir un impact ...

Hors ligne

#11 2011-03-04 16:38:38

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Et pourtant ça devrait marcher... Pour info le code que je t'ai donné est en service ici (dans le message de bienvenue)

Tu n'aurais pas un plugin comme staticCache ou memCache ? As-tu vidé le répertoire du cache de templates (bien que ce ne soit pas nécessaire a priori avec le code donné par Dsls) ?

Hors ligne

#12 2011-03-07 10:04:41

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Bon je suis vraiment un naze, je mettais _public.php dans le dossier tpl :(
bon maintenant que je l'ai déplacé à la racine le thème, j'obtiens une belle erreur :

Fatal error: Uncaught exception 'Exception' with message 'No valid callback for CountPosts' in /homez.29/bizetfam/www/blog/inc/clearbricks/template/class.template.php:125 Stack trace: #0 /homez.29/bizetfam/www/fichiers_communs/themes/favorismobile/_public.php(3): template->addValue('CountPosts', Array) #1 /homez.29/bizetfam/www/blog/inc/core/class.dc.modules.php(530): require('/homez.29/bizet...') #2 /homez.29/bizetfam/www/blog/inc/core/class.dc.themes.php(79): dcModules->loadModuleFile('/home/bizetfam/...') #3 /homez.29/bizetfam/www/blog/inc/public/prepend.php(113): dcThemes->loadNsFile('favorismobile', 'public') #4 /homez.29/bizetfam/www/blog_favmob/index.php(22): require('/homez.29/bizet...') #5 {main} thrown in /homez.29/bizetfam/www/blog/inc/clearbricks/template/class.template.php on line 125

je vous rappelle le contenu de ce public.php

<?php

$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));

class tplMoreTpl {
	
	public static function CountPosts()
	{
		$p = '<?php $core->blog->getPosts(array(),true)->f(0) ?>';
		return $p;
	
	}
}
?>

Je vous remercie :)

Hors ligne

#13 2011-03-07 10:10:10

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Je dirais qu'il manque

$core = &$GLOBALS['core'];

avant

$p = '<?php $core->blog->getPosts(array(),true)->f(0) ?>';

Hors ligne

#14 2011-03-07 10:37:54

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Bon apparemment ce n'est toujours pas ça.

j'ai vidé : cache du navigateur et cache templates via eraseCache
mon _public.php est bien à la racine du thème, au même niveau que define.php

avec dans mon _public.php

<?php
$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));
class tplMoreTpl {
	public static function CountPosts()
	{
		$core = &$GLOBALS['core'];
		$p = '<?php $core->blog->getPosts(array(),true)->f(0) ?>';
		return $p;
	}
}
?>

dans mon home.html

<li class="filsuite">Il y a <b>{{tpl:CountPosts}}</b> liens

et j'ai toujours cette jolie erreur que vous pouvez visualiser ici

gremeuleumeleu : qu'est-ce qui se passe :(

Hors ligne

#15 2011-03-07 11:12:17

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Essaie avec ça :

<?php
$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));
class tplMoreTpl {
	public static function CountPosts()
	{
		
		$p = '<?php $core = &$GLOBALS['core'];$core->blog->getPosts(array(),true)->f(0) ?>';
		return $p;
	}
}
?>

ou plus simplement comme suggéré au #6, sans utiliser le cache de templates (cf remarque #9)

Hors ligne

#16 2011-03-07 11:16:18

Tomtom33
Responsable des travaux finis
Lieu : Barcelone
Inscription : 2006-06-13

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

L'erreur signifie qu'il manque l'argument dans la signature de la fonction php. Comme ça, ça marchera beaucoup mieux:

<?php

$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));

class tplMoreTpl {
	
	public static function CountPosts($attr)
	{
		$p = '<?php $core->blog->getPosts(array(),true)->f(0) ?>';
		return $p;
	
	}
}
?>

Le lab => http://lab.dotclear.org
Besoin d'un plugin? => http://plugins.dotaddict.org
Besoin d'un thème? => http://themes.dotaddict.org
Besoin d'une astuce? => http://tips.dotaddict.org

Hors ligne

#17 2011-03-07 11:18:18

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

amalgame a écrit :

Essaie avec ça :

<?php
$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));
class tplMoreTpl {
	public static function CountPosts()
	{
		
		$p = '<?php $core = &$GLOBALS['core'];$core->blog->getPosts(array(),true)->f(0) ?>';
		return $p;
	}
}
?>

Ca va mieux, maintenant il me met un erreur

Parse error: syntax error, unexpected T_STRING in /homez.29/bizetfam/www/fichiers_communs/themes/favorismobile/_public.php on line 7

la ligne 7 étant

$p = '<?php $core = &$GLOBALS['core'];$core->blog->getPosts(array(),true)->f(0) ?>';

Hors ligne

#18 2011-03-07 11:21:49

Tomtom33
Responsable des travaux finis
Lieu : Barcelone
Inscription : 2006-06-13

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Ou plutôt ça si tu veux que ça affiche quelque chose:

<?php

$core->tpl->addValue('CountPosts', array('tplMoreTpl', 'CountPosts'));

class tplMoreTpl
{	
	public static function CountPosts($attr)
	{
		return '<?php echo $core->blog->getPosts(array(),true)->f(0) ?>';
	}
}

?>

Le lab => http://lab.dotclear.org
Besoin d'un plugin? => http://plugins.dotaddict.org
Besoin d'un thème? => http://themes.dotaddict.org
Besoin d'une astuce? => http://tips.dotaddict.org

Hors ligne

#19 2011-03-07 11:22:06

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Ah ouiche, il faut bien sûr échapper les ' ^^

$p = '<?php $core = &$GLOBALS[\'core\'];$core->blog->getPosts(array(),true)->f(0) ?>';

Hors ligne

#20 2011-03-07 11:43:17

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Bon bah ça marche pas j'ai de nouveau le même message d'erreur qu'en #12
j'ai testé vos 2 codes :(

Hors ligne

#21 2011-03-07 12:43:57

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Ton thème est-il un enfant d'un autre ? Si oui, c'est dans le thème parent qu'il faut insérer le _public.php ;)

Hors ligne

#22 2011-03-07 13:38:05

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

j'avais aussi pensé à ça mais non mon thème n'est pas un enfant d'un autre,
Puis-je zipper mon thème avec le public.php et te l'envoyer pour voir si ça passe chez toi par hasard ?

Hors ligne

#23 2011-03-08 11:06:29

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

amalgame : peux -tu me donner ta fonction complète que tu m'as indiqué partiellement en [urm=http://forum.dotclear.net/viewtopic.php?pid=300713#p300713]#6[/url] afin que je la teste chez moi.
Normalement elle devrait passer ...

merci

Hors ligne

#24 2011-03-08 11:23:58

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Voici :

$core->tpl->addValue('entriesNumber',array('clairdeluneTpl','entriesNumber'));
class clairdeluneTpl {
	public static function entriesNumber()
	{
		$core = &$GLOBALS['core'];
		$p = $core->blog->getPosts(array(),true)->f(0);
		return $p;
	}
}

et c'est appelé par {{tpl:entriesNumber}} dans mon home.html

Hors ligne

#25 2011-03-08 11:48:40

Guizbizet
Membre
Lieu : Rambouillet
Inscription : 2005-07-19
Site Web

Re : Plugin MoreTpl : problème ajout de nouveaux tpl

Bon bonne nouvelle CA FONCTIONNE pour le nombre de liens :)
Par contre la fonction pour le nombre de catégories ne me renvoie pas de résultat

J'ai testé

<?php

$core->tpl->addValue('CountPosts',array('FavorisMobileTpl','CountPosts'));
class FavorisMobileTpl {
	public static function CountPosts()
	{
		$core = &$GLOBALS['core'];
		$p = $core->blog->getPosts(array(),true)->f(0);
		return $p;
	}
	
	public static function CountCategories()
	{
		$core = &$GLOBALS['core'];
		$f = $core->blog->getCategoriesCounter();
		return $f;
	}
}
?>

et c'est encore consultable ici

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map