Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#26 2010-01-22 18:18:32

JcDenis
Membre
Lieu : Lyon, France
Inscription : 2007-08-31
Site Web

Re : extend dans coreBlogGetPosts

AkhThoT a écrit :

Par contre cela ne change rien au fait que la troncature des flux fait sauter les balises html du content dans le fichier xml du feed ! Il n'y a que moi qui y voit un inconvénient ?

Je suis un peu comme toi je commence juste un plugin utilisant un autre rsExtPosts coté publique et je découvre au fur et à mesure les limites!


Cordialement,
_JC | Intérimaire | En mode invisible

Hors ligne

#27 2010-01-22 21:02:42

AkhThoT
Membre
Lieu : Mâcon
Inscription : 2009-07-20

Re : extend dans coreBlogGetPosts

JcDenis a écrit :

Je suis un peu comme toi je commence juste un plugin utilisant un autre rsExtPosts coté publique et je découvre au fur et à mesure les limites!

Au départ je n'avais vu que l'écrasement comme problème, maintenant je découvre le tronquage des flux, mais j'ai la solution pour ce deuxième problème, il faut juste implémenter sa propre routine de tronquage ... ou plus simplement interdire ponctuellement le tronquage des billets devinette (pour mon plug)


Passez à l'occasion si vous n'avez pas peur de vous faire mal aux yeux http://akhthot.free.fr

Hors ligne

#28 2010-01-25 15:29:55

JcDenis
Membre
Lieu : Lyon, France
Inscription : 2007-08-31
Site Web

Re : extend dans coreBlogGetPosts

Tadaaaaaaaaaa je crois que j'ai trouvé une solution "bizarre" pour empiler des behaviors sur "coreBlogGetPosts".
Ici on part du principe que tout se passe coté public, on va donc mettre tout ça dans le fichier "_public.php" et étendre la class "rsExtPostPublic".

$core->addBehavior('coreBlogGetPosts',array('monPlougPublicBehaviors','coreBlogGetPosts'));

class monPlougPublicBehaviors
{
	// Fonction appelé depuis le behavior coreBlogGetPost
	public static function coreBlogGetPosts(&$rs)
	{
		// J'ajoute ici une mémoire du précédent appelle à "rs->extend()"
		$GLOBALS['beforeMonPlougRsExt'] = $rs->extensions();

		//  On étend les résultats de $core->blog->getPosts()
		$rs->extend('rsExtMonPlougPosts');
	}
}

class rsExtMonPlougPosts extends rsExtPostPublic
{

	// Cette fonction recherche si une précédente fonction existe et l'appelle
	public static function monPlougBrother($type,$args)
	{
		$func =  isset($GLOBALS['beforeMonPlougRsExt'][$type]) ?
			$GLOBALS['beforeMonPlougRsExt'][$type] :
			array('rsExtPostPublic',$type);

		return call_user_func_array($func,$args);
	}

	// Je fais ma sauce normalement (ici sur le contenu du billet)
	public static function getContent(&$rs,$absolute_urls=false)
	{
		// Si c'est ce que je cherche, je modifie le contenu
		if ($rs->post_title == 'ce que je veux') 
		{
			return 'youpiii';
		}
		// Si ma sauce ne me plaid pas, je vais cherche l'appelle précèdent 
		else
		{
			return self::monPlougBrother('getContent',array(&$rs,$absolute_urls));
		}
	}
}

Il faut que le deuxième paramètre passé à "monPlougBrother" soit toujours un tableau car suivant les fonctions ils y a plusieurs paramètres.
Il faut aussi que chaque plugin qui utilise ce hack est un nom diffèrent pour la fonction "monPlougBrother".

J'ai testé avec deux plugin faisant apelle à cette méthode, le tout mélangé avec des billets normaux.
Pour voir un résultat je test un plugin de planet de blogs combiné avec un plugin de planet de flux sur un blog normale ici: http://zoneclear.org ( Faites pas gaffe c'est des essais! )


Cordialement,
_JC | Intérimaire | En mode invisible

Hors ligne

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

Pied de page des forums

Sites map