Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2008-01-25 01:10:04

neoramax
Membre
Lieu : Clermont-Ferrand
Inscription : 2007-08-31
Site Web

ne pas prendre un plugin en cache

Bonjour,

J'ai un plugin où j'ajoute une fonction à une nouvelle valeur au template avec
$core->tpl->addValue();
par contre là j'ai une fonction qui me génère un résultat différent en fonction du blog visité, mais avec le cache il me retourne le même résultat pour tous les blogs.

A la rigueur qu'il mette en cache pour ce blog çà me gênerai pas mais là il met en cache la réponse pour tous les blogs.

est ce que vous savez comment je peux faire pour ne pas y prendre en compte dans le cache pour tous les blogs mais seulement pour celui là ?

Hors ligne

#2 2008-01-25 01:13:53

neoramax
Membre
Lieu : Clermont-Ferrand
Inscription : 2007-08-31
Site Web

Re : ne pas prendre un plugin en cache

oups je voulais poster dans DC2 et je me suis tromper, si un admin peut déplacer mon sujet, merci :s

Hors ligne

#3 2008-01-25 01:26:13

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : ne pas prendre un plugin en cache

Il faut que ta fonction renvoie du code entre des tags <?php et ?> en utilisant une condition, un peu comme ça :

return '<?php echo '.sprintf($f,'$_ctx->subscribeToCommentsPosts->post_id').'; ?>';

Regarde comment se passe l'interprétation des templates dans DC 2, c'est un peu complexe mais en recherchant les noms des fonctions dans le code source on arrive à trouver quelle fonction sert à quoi. Regarde /dotclear/inc/public/class.dc.template.php pour voir la correspondance entre un tag entre {{}} et une fonction. Et regarde la documentation de Franck Paul.

Hors ligne

#4 2008-01-25 08:55:25

neoramax
Membre
Lieu : Clermont-Ferrand
Inscription : 2007-08-31
Site Web

Re : ne pas prendre un plugin en cache

merci bcq Moe, jvé regarder dans ce sens :)

Hors ligne

#5 2008-01-25 22:54:27

neoramax
Membre
Lieu : Clermont-Ferrand
Inscription : 2007-08-31
Site Web

Re : ne pas prendre un plugin en cache

bon doit y avoir quelque chose que j'ai pas bien saisie car le cache l'emporte toujours  dans mon exemple que voici.

$core->tpl->addValue('js_func',array('test','func1'));
class test{
	public static function func1(){
		// je récupère le domaine de l'url de la page affiché
		$url_tab = split('\.',$_SERVER['SERVER_NAME']);
		$content = '';
		$site_id = '';
		if(!empty($url_tab[0])){
			$file = 'http://mondomaine.tld/url/'.$url_tab[0];
			$site_id = file_get_contents($file);
			// $site_id contient un identifiant en fonction de l'url fournis
			$content = '
<script type="text/javascript">
var mon_site = %d;
</script>
			';
		}
		return 
		'<?php echo \''.sprintf($content,$site_id).'\'; ?>';
	}
}

Je supprime mon cache, je regarde un blog, puis dès que j'en regarde un autre ben là j'ai toujours le même id qui m'est retourné alors que l'id fournis par l'appel de mon url ($file = 'http://mondomaine.tld/url/'.$url_tab[0];) me fournis bien un id différent en fonction de l'url fournis.
Qu'est ce que j'ai loupé ?

Hors ligne

#6 2008-01-25 23:43:50

adjaya
Membre
Lieu : Provence - Luberon
Inscription : 2006-09-05
Site Web

Re : ne pas prendre un plugin en cache

Bonjour
Tu ne renvoie que le resultat de ta fonction, donc celle-ci n'est évaluée qu'une fois et renvoie le résultat en dur dans le cache.
Il faut renvoyer la fonction pour qu'elle soit active dans le cache.


Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/

Hors ligne

#7 2008-01-26 00:40:00

neoramax
Membre
Lieu : Clermont-Ferrand
Inscription : 2007-08-31
Site Web

Re : ne pas prendre un plugin en cache

oui finallement je venais dire que j'ai trouvé la soluce, oué en faite il faut lui renvoyé l'appel d'une fonction, du coup j'ai écrit une seconde fonction dans ma classe et j'ai remplacer $site_id dans mon return par test::func2() et hop là çà marche.

merci je comprends mieux maintenant :)

Hors ligne

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

Pied de page des forums

Sites map