Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2010-08-24 14:19:34

bgin
Membre
Lieu : Cugnaux (Grand Toulouse)
Inscription : 2009-07-08
Site Web

Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Je bute sur cette question :
Récupérer le résultat d'un tpl:tag dans une variable PHP.

Autre question connexe :
Comment passer des arguments non pas en dur mais sous forme de variable.
Exemple :
$select = "1"
<tpl:entryIf selected=".$select.">
Je sais que cette syntaxe n'est pas bonne, mais je n'en ai pas trouvé de correcte.

On pourrait aussi passer comme arguments des tags utilisateurs ou système.
Comme ceci :
<tpl;entries category={{tpl:categoryID}}>
Cet exemple est farfelu mais il illustre ce que je souhaite faire.

J'ai fait beaucoup de recherches infructueuses, y compris sur ce forum.

Je pense que mes questions sont triviales pour un connaisseur Dotclear.

Merci d'avance.

Hors ligne

#2 2010-08-24 15:32:23

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Bonjour,

As-tu regardé dans la documentation, les informations des pages Entries et EntryIf ?

J'ai l'impression que ça ne repondra qu'à la deuxième partie de ton message mais c'est déjà un début… ;-)

Hors ligne

#3 2010-08-24 19:45:46

bgin
Membre
Lieu : Cugnaux (Grand Toulouse)
Inscription : 2009-07-08
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Ton site "We love..." est très réussi...

Merci pour ta réponse. Elle ne répond malheureusement pas à mes questions. J'avais du reste déjà lu ces pages.

La formulation de ma question est ambigüe mais je n'y peux rien : c'est la terminologie de Dotclear qui prête à confusion.
En effet, dans le langage courant du monde internet, un tag est un mot clé, et dans la page que tu me recommandes il y a un argument 'tag' pour la balise Entries.

Je voulais parler de l'autre signification de tag dans Dotclear, celle qui désigne une fonction native ou utilisateur telle que {{tpl:EntryId}} ou {{tpl:EntryCategory}}.

Par ailleurs, personne n'évoque cette possibilité - ou impossibilité - de mixter du PHP et du Dotclear.

J'espère que c'est le bon endroit pour poser la question...

Hors ligne

#4 2010-08-24 19:58:58

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Merci du compliment ^^ pour WLD.

Je suis loin d'être un sorcier (les developpeurs de core et autres plugins) de Dotclear mais il me semble que tes questions ont déjà leur réponses dans la documentation. Peux-tu être concret avec des exemples avec le contexte qui l'accompagne ? Cela me permettra (ou à un(e) autre) de ne pas être vage dans ma/sa réponse.

Hors ligne

#5 2010-08-24 21:30:18

bgin
Membre
Lieu : Cugnaux (Grand Toulouse)
Inscription : 2009-07-08
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Le problème que j'ai essayé de résoudre est le suivant :
j'ai créé une balise <tpl:EntryIdIsNotIf> avec 2 arguments (id1, id2) pour exécuter conditionnellement un bloc HTML.
- id1 est l'EntryId du billet courant (je le connais par la formule : $id_courant = context::global_filter($_ctx->posts->post_id,0,0,0,0,0,'EntryID'); ou par {{tpl:EntryId}})
- id2 est l'EntryId d'un article de référence (qui est déjà affiché sur ma page et que je ne veux pas ré-afficher). Je l'ai stocké dans une variable $id_ref grâce à la formule précédente au moment où il s'affiche.

Le problème est de passer les paramètres à ma balise :
<tpl:EntryIdIsNotIf id1="<?php echo $id_courant; ?>" id2="<?php echo $id_ref; ?>">

Evidemment, cette écriture n'est pas admise. J'en ai essayé beaucoup d'autres sans succès.
Mais peut-être est-ce tout simplement impossible ?

J'ai réalisé une manip similaire sur wordpress pour un autre blog sans difficultés.

Hors ligne

#6 2010-08-25 00:40:51

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

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

As-tu essayé d'écrire ta propre balise template ? En t'inspirant des balises définies par Dotclear, tu arriveras peut-être à tes fins.

Hors ligne

#7 2010-08-25 05:34:34

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Je suis curieuse (et je me pose des questions sur l'approche), c'est destiné à quoi tout ça ?


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#8 2010-08-25 05:44:53

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

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

bgin a écrit :

Par ailleurs, personne n'évoque cette possibilité - ou impossibilité - de mixter du PHP et du Dotclear.

Il n'est pas possible de mixer PHP et langage template dotclear, ou plutôt c'est possible, dans certaines limites, mais désactivé par défaut et fortement déconseillé pour des raisons de sécurité. Il faut voir ça comme un niveau d'abstraction, type MVC.

Autoriser le PHP dans les templates passe par le positionnement de tpl_allow_php à 1 dans about:config, mais même en l'autorisant, tu n'arriveras pas à tes fins, dans la mesure ou le code php (écrit proprepemt, ie <?php echo "Hello World"; ?>) sera copié tel quel dans le template compilé.

Dans l'approche doclear, si code php spécifique il y a, cela passe par la déclaration de balises via le _public.php du thème ou du plugin.


Pour répondre à ton problème particulier, je verrais la déclaration de 2 balises : la première, par exemple : {{tpl:StoreCurrentEntryId}} génère le code qui va stocker dans une variable temporaire l'ID du billet courant. Il ne restera plus qu'à ajouter le code qui va bien dans le code généré par ton tpl:EntryIdIsNotIf.


Dyslexics have more fnu!

Hors ligne

#9 2010-08-25 08:07:31

bgin
Membre
Lieu : Cugnaux (Grand Toulouse)
Inscription : 2009-07-08
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

@ Dsls
Merci pour ta réponse très claire sur la prise en charge de PHP par Dotclear (qui est moins permissif que WordPress sur ce point).
Je sais maintenant qu'il faut abandonner l'idée de passer des variables comme arguments de template.

Je tenterai donc de créer des variables par template (je suppose qu'elles doivent être déclarées -statiques - au sein de la classe qui contient les balises).

@ Kozlika
Si tu vas voir le site http://collectif-francazal.org/, tu comprendras :
Je l'ai réalisé à partir du thème Zeitung.
J'ai une page d'accueil sur laquelle j'affiche le dernier éditorial puis les 4 derniers billets "selected".
De plus, je viens de créer un blog classique associé (je n'ai pas utilisé la technique du multiblog car je ne voulais pas casser les références google sur mes articles anciens repris dans le blog).
Le problème que je voulais résoudre :  éviter d'afficher l'article Editorial dans le blog (donc éviter d'afficher l'article qui a l'Id de l'éditorial).

Autre but poursuivi, qui passe par la résolution de ce problème : sur le blog, le premier article de la page est complétement développé alors que les articles suivants ne présentent que l'excerpt (chapeau). Je voudrais que cela soit réservé à la première page (pour montrer in extenso le dernier article publié) et sur les autres pages je ne voudrais voir que les chapeaux.

Je ne ferme pas cette discussion car vous aurez peut-être des réactions à cette dernière réponse, et puis, si je parviens à un résultat, je le communiquerai. Mais ce n'est pas pour tout de suite car le temps me manque.

Bien cordialement

Hors ligne

#10 2010-08-25 08:39:02

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Il me semble qu'il n'est pas nécessaire de créer des balises et que tu as tout le matériel nécessaire dans ce qui existe déjà. Comment est déterminé l'article en édito ? C'est le "selected" le plus récent ?

Ce que tu veux faire est très éloigné de ça ? http://kozlika.free.fr/

(Pas compris non plus en quoi le référencement Google de ton ancien blog empêche l'utilisation du multiblog ?)


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#11 2010-08-25 09:32:11

bgin
Membre
Lieu : Cugnaux (Grand Toulouse)
Inscription : 2009-07-08
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Merci Kozlika de t'intéresser à mon problème.

L'article en Edito est de dernier article de la catégorie Editorial.
Je n'utilise pas selected car ce serait le dernier selected. Or un édito peut être moins récent que le dernier selected.

La question du multiblog est aujourd'hui résolue.
J'ai fait un test de multiblog : j'avais fait migrer un article déjà référencé par Google dans le nouveau blog et lorsque je cliquais sur la référence Google, je tombais sur l'erreur "page introuvable". J'ai vu depuis qu'il y avait des parades (par .htacces ou plugin),
Une autre - mauvaise - raison qui m'a fait écarter le multiblog, c'est la recherche qui dans mon cas doit être étendue au site et au blog (pages et billets confondus). Je crois que pour cela aussi il y a un plugin...

J'ai beaucoup galéré pour arriver à cette dualité Site-Blog (avec deux homepages). J'utilise le behavior urlHandlerBeforeGetData pour arriver à mes fins. J'ai lu depuis qu'il y aurait une solution plus simple...

Voilà...

Hors ligne

#12 2010-08-25 09:45:07

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

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Peut-être que le plugin muppet pourrait t'aider dans la construction de ton site ? (autres informations)

Hors ligne

#13 2010-08-25 10:56:52

bgin
Membre
Lieu : Cugnaux (Grand Toulouse)
Inscription : 2009-07-08
Site Web

Re : Affecter un tpl:tag à une variable : $id = {{tpl:EntryId}}. Possible?

Oui, Osku, ton plugin muppet pourrait apporter une solution, en créant un post-type particulier pour le dernier l'Edito.
Mais il faudrait pouvoir le remettre dans le circuit, lorsqu'il est remplacé par un nouvel édito. On peut toujours modifier le post-type dans la base de données mais ce n'est pas propre. Mais cet aspect-là est peut-être réglé par les options d'intégration (à suivre...)

Hors ligne

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

Pied de page des forums

Sites map