Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2008-04-21 06:45:18

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Cherche à ajouter description catégorie dans affichage des billets

Bonjour,

Je cherche comment ajouter la description de la catégorie dans l'affichage du contenu d'un billet, comme le template {{tpl:EntryCategory}} sait le faire... En d'autres termes, quoi mettre dans un template genre {{tpl:EntryCategoryDescription}} que j'ajouterais volontiers dans mon "myMoreTpl" (construit à partir de ça).

J'ai fait deux ou trois essais pas du tout concluants, c'est peu de le dire.

Peut-être que quelqu'un pourrait me proposer le code qui va bien. Ca mériterait également de faire l'objet d'un ticket pour enrichir la liste des tags Billets ou d'enrichir wiki.kozlika.org/geekeries:moretpl.

Merci d'avance de votre aide.

Hors ligne

#2 2008-04-21 08:41:38

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

Re : Cherche à ajouter description catégorie dans affichage des billets

la fonction getCategory($params['cat_id']) de la class dcBlog récupère toute les infos d'une catégorie
tu peux faire un nouveau addValue qui verifie l'existence d'une catégorie dans la boucle du billet,
if ($_ctx->exists("categories")) {
$params['cat_id'] = $_ctx->categories->cat_id; }
$_ctx->categories = $core->blog->getCategory($params);
while ($_ctx->categories->fetch()) { $catDesc = $_ctx->categories->cat_desc; }

Bon , faut mètre le code en forme avec la bonne syntaxe, mais c'est l'idée.


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

Hors ligne

#3 2008-04-21 08:51:50

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

Re : Cherche à ajouter description catégorie dans affichage des billets

Oui, enfin c'est plutôt $params['cat_id'] = $_ctx->posts->cat_id; dans le context d'un billet !


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

Hors ligne

#4 2008-04-21 10:51:17

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Cherche à ajouter description catégorie dans affichage des billets

Je suis en pleine opération de sauvegarde de mon PC. Je testerai dès qu'il sera disponible...

Merci de ta proposition qui, outre apporte une réponse à ma question, va m'aider à comprendre un peu plus le fonctionnement de DC2 et, surtout, la syntaxe du PHP orienté objet pour laquelle je présente insuffisances et difficultés de compréhension (c'est pas faute d'avoir trempé en autodidacte dans le pascal orienté objet... mais je fais un blocage au niveau C et C++).

J'avoue que je suis largement largué... Mais têtu et intéressé.

D'autant que DC2 continue à m'apporter beaucoup de satisfactions, tant dans son utilisation et sa souplesse d'adaptation à mes souhaits que dans les trésors d'inventivité, la modularité et la qualité du code pondu (pour autant que j'en sois bon juge... évidemment).

Hors ligne

#5 2008-04-21 12:37:37

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

Re : Cherche à ajouter description catégorie dans affichage des billets

> Mirovenben : Attention toutefois à prendre ma réponse comme un brouillon d'idées, fait de tête et sans vérification ni test. Je pense toutefois que les grande ligne y sont sur le principe.
Je suis comme toi autodidacte en php, ce qui ne m'empêche pas avec de la persévérance d'arriver à des résultats concrets.


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

Hors ligne

#6 2008-05-06 12:46:56

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

Re : Cherche à ajouter description catégorie dans affichage des billets

Bonjour

Je cherche moi aussi à mettre en place la description de la catégorie dans le contexte d'un billet, et je viens voir si par hasard tu aurais solutionné le problème ?

J'ai essayé pas mal de choses à partir des indications d'adjaya, mais sans succès, mon dernier essai donne ça :

public static function EntryCategoryDescription($attr)
	{
		$f = $GLOBALS['core']->tpl->getFilters($attr);
		$cat_id = $_ctx->posts->cat_id;
		$_ctx->categories = $GLOBALS['core']->blog->getCategory($cat_id);
		
		return
		'<?php echo '.sprintf($f,'$_ctx->categories->cat_desc').'; ?>';
	}

Ce qui ne provoque pas d'erreurs, mais n'affiche strictement rien...

Hors ligne

#7 2008-05-06 13:10:00

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

Re : Cherche à ajouter description catégorie dans affichage des billets

Il manque peut-être le :
while ($_ctx->categories->fetch()) { $catDesc = $_ctx->categories->cat_desc; }
Et puis il faut peut-être renvoyer tout le code dans le return en php pour les histoire de cache.


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

Hors ligne

#8 2008-05-06 13:37:00

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

Re : Cherche à ajouter description catégorie dans affichage des billets

Je viens d'essayer sans plus de résultats. Si je mets la boucle while dans le return, j'ai une erreur à cause de fetch().

Hors ligne

#9 2008-05-06 15:57:27

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

Re : Cherche à ajouter description catégorie dans affichage des billets

adjaya a écrit :

Et puis il faut peut-être renvoyer tout le code dans le return en php pour les histoire de cache.

Merci pour la piste, j'ai finalement opté pour la solution suivante

ajout de

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

et de

public static function EntryCategoryDescription($attr)
	{
		return
		'<?php $cat_id = $_ctx->posts->cat_id;
		$_ctx->categories = $GLOBALS[\'core\']->blog->getCategory($cat_id);
		echo $_ctx->categories->cat_desc; ?>';
	}

dans le plugin MoreTpl, et ça marche

Il faudrait peaufiner un peu et notamment tester si le billet est bien affecté à une catégorie...

Hors ligne

#10 2008-05-06 16:10:30

osku
Membre
Lieu : 28
Inscription : 2005-06-15

Re : Cherche à ajouter description catégorie dans affichage des billets

Dîtes voir,

Pourquoi on ne peut pas utiliser le

 {{tpl:CategoryDescription}}

Dans le contexte du billet ?

(J'ai pas révisé les classiques)

Hors ligne

#11 2008-05-06 16:18:29

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

Re : Cherche à ajouter description catégorie dans affichage des billets

Parce que ça ne marche pas :D

Hors ligne

#12 2008-05-07 05:21:27

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Cherche à ajouter description catégorie dans affichage des billets

amalgame a écrit :

Je cherche moi aussi à mettre en place la description de la catégorie dans le contexte d'un billet, et je viens voir si par hasard tu aurais solutionné le problème ?

Heu, non, je n'ai pas solutionné le pb car j'avais d'autres truc à voir et je l'ai rangé en bas de la pile.

Du coup, j'ai bien fait car les choses ont avancé en mon absence. ;-)
Je vais raccrocher mon wagon au train dès possible.

Hors ligne

#13 2008-05-08 07:13:20

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Cherche à ajouter description catégorie dans affichage des billets

J'ai réactivé en remettant ce pb et la solution d'amalgame en haut de la pile.

J'ai rajouté le test "si catégorie non vide" et l'ai utilisée dans home.html :

  public static function EntryCategoryDescription($attr)
  {
    return
    '<?php 
      $cat_id = $_ctx->posts->cat_id;
      if (!empty($cat_id)) {
      $_ctx->categories = $GLOBALS[\'core\']->blog->getCategory($cat_id);
      echo $_ctx->categories->cat_desc;
      } 
    ?>';
  }

Ca fonctionne très bien si et seulement si je n'ai qu'une boucle des billets. Or j'ai deux boucles de la forme

        <div id="content">
          <!-- # category Chapo -->
          <tpl:Entries category="Chapo" lastn="1">
            ...  
          </tpl:Entries>
          
          <tpl:Entries category="!Chapo">
            ...  
          </tpl:Entries>

Où la catégorie Chapô est une catégorie accueillant un billet récent qui reste tout en haut de la pile des billets le temps jugé nécessaire. En principe texte court, message important ou méritant une attention toute particulière.

Si je mets {{tpl:EntryCategoryDescription}} quelque part dans <tpl:Entries category="Chapo" lastn="1"> la boucle classique <tpl:Entries category="!Chapo"> n'est pas exécutée et je me retrouve avec un seul billet en page d'accueil !...

Effet intéressant mais pas souhaité.

Je soupçonne que, dans cette configuration, la récup des données de la catéorie (dont la description) casse la boucle. Si un sorcier passe par là et confirme/infirme cette impression... voir me propose une solution, je serais très beaucoup ravi.

Hors ligne

#14 2008-05-08 11:55:08

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

Re : Cherche à ajouter description catégorie dans affichage des billets

> Mirovinben
Sans filet :

public static function EntryCategoryDescription($attr)
  {
    return
    '<?php
      $params['cat_id'] = $_ctx->posts->cat_id;
      if (!empty($params['cat_id'])) {
      $_ctx->categories = $GLOBALS[\'core\']->blog->getCategory($params);
      unset($params);
      echo $_ctx->categories->cat_desc;
      }
    ?>';
  }


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

Hors ligne

#15 2008-05-08 13:28:04

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Cherche à ajouter description catégorie dans affichage des billets

Merci adjaya pour ton aide. J'ai modifié ta proposition "sans filet" au niveau des ['] et déplacé le unset pour qu'il soit traité quelque soit le résultat du test, (ais-je eu raison ?) ça donnerait ça :

'<?php
      $params[\'cat_id\'] = $_ctx->posts->cat_id;
      if (!empty($params[\'cat_id\'])) {
      $_ctx->categories = $GLOBALS[\'core\']->blog->getCategory($params);
      echo $_ctx->categories->cat_desc;
      }
      unset($params);
    ?>';

mais ne fonctionne pas. Plus exactement, la boucle fonctionne mais je n'affiche pas la description de la catégorie. Qui existe pourtant.

Est-ce que $_ctx->categories->cat_desc existe ?

Je continue à chercher.

Hors ligne

#16 2008-05-08 17:05:22

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

Re : Cherche à ajouter description catégorie dans affichage des billets

Je me fourvoie peut-être pour le $params, dans le sens ou ce n'est pas ce qu'attend la fonction getCategory().
Mais ton problème de boucle qui ne s'affiche pas est, ( je cherche aussi :) ) peut-être lié à une surcharge de $params['cat_id'] = \$_ctx->categories->cat_id; qui est utilisé dans la fonction public function Entries($attr,$content) de inc/class.dc.template.php.
Je suis pas du tout sûr de ce que j'avance mais peut-être en renommant dans la fonction d'amalgame $cat_id par autre chose .. ou juste avec un unset ?, bref , j'ai pas trop le temps de tester de mon coté, mais c'est curieux quand même ta deuxième boucle qui ne s'affiche pas.


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

Hors ligne

#17 2016-02-13 00:32:54

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

Re : Cherche à ajouter description catégorie dans affichage des billets

Désolé de déterrer un très vieux fil, mais si quelqu'un a, comme mirovinben et moi, recherché la solution, il arrivera peut-être ici

Ce qui marche chez moi :

public static function EntryCategoryDescription($attr)
	{
	return
	'<?php $cat_id = $_ctx->posts->cat_id;
	$category = $GLOBALS[\'core\']->blog->getCategory($cat_id);
	echo html::clean($category->cat_desc); ?>';
       }

Comme on le voit, il suffisait de ne pas tripoter $_ctx->categories ^^

Hors ligne

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

Pied de page des forums

Sites map