Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2011-01-29 22:40:11

jmh2o
Membre
Lieu : Charleroi
Inscription : 2009-01-05
Site Web

Mymeta et image correspondante à {{tpl:MyMetaValue}}

Bonjour,

Sur mon site, j'utilise le plugin Mymeta pour afficher des listes (liste des interventions de conseillers municipaux).
Cela fonctionne très bien : voir www.levertpays.be/index.php?meta/Conseil/Anne.

Mais j'aimerais également afficher le portrait du conseiller en question. Et j'ai donc bricolé le code suivant :

<img src="/public/portraits/.{{tpl:MyMetaValue}}_s.jpg" alt="{{tpl:MyMetaValue}}.jpg" />

Qui fonctionnerai très bien s'il n'y avait pas un espace entre le prénom et le nom. Et dans les images l'espace est remplacé par un "_". Ce qui est logique et pratique. Sauf que l'image ne s'affiche pas. Car le template  {{tpl:MyMetaValue}}, lui, garde un espace entre le prénom et le nom, et c'est bien ainsi que je veux l'afficher.

L'endroit où je veux afficher l'image affiche donc "prénom nom.jpg" (voir l'exemple en lien ci-dessus).

Y a-t-il un solution pour remplacer l'espace entre le prénom et le nom dans {{tpl:MyMetaValue}} par le caractère "_" ?

Merci.

Hors ligne

#2 2011-02-11 13:13:46

jmh2o
Membre
Lieu : Charleroi
Inscription : 2009-01-05
Site Web

Re : Mymeta et image correspondante à {{tpl:MyMetaValue}}

Désolé pour la "up", pas très correcte.

Il n'y aurait donc pas de solution(s) à mon problème ?

Hors ligne

#3 2011-02-11 13:29:23

lipki
Membre
Inscription : 2008-11-10

Re : Mymeta et image correspondante à {{tpl:MyMetaValue}}

peut-être pourrait tu utiliser firstimage


Mes fautes font saigner mes propre yeux.

Hors ligne

#4 2011-02-11 13:31:21

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

Re : Mymeta et image correspondante à {{tpl:MyMetaValue}}

Tu peux écrire une méthode qui répond à ton besoin, dans le _public.php de ton thème :

<?php
$core->tpl->addValue('MyMetaValueNoSpace',array('tplMyMetaSpecific','MyMetaValueNoSpace'));


class tplMyMetaSpecific {
	public static function MyMetaValueNoSpace($attr) {
		$f = tplMyMeta::getCommonMyMeta($attr);
		
		$res =
		'<?php if ($_ctx->mymeta != null && $_ctx->mymeta->enabled) {'."\n".
		'echo str_replace(" ","_",$_ctx->mymeta->getValue($_ctx->meta->meta_id,'.tplMyMeta::attr2str($attr).')); '."\n".
		"} ?>";
		return sprintf($f,$res);
	}
}
?>

Dyslexics have more fnu!

Hors ligne

#5 2011-02-11 13:35:16

lipki
Membre
Inscription : 2008-11-10

Re : Mymeta et image correspondante à {{tpl:MyMetaValue}}

ou bien tu enregistre deux méta différente
une méta avec l'espace, et une avec un tiret.


Mes fautes font saigner mes propre yeux.

Hors ligne

#6 2011-02-11 13:47:34

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

Re : Mymeta et image correspondante à {{tpl:MyMetaValue}}

J'ai peut-être un truc, c'est une fonction qui permet d'urliser un tag pour nommer une image. On ajoute une balise imgtagUrl dans le fichier de template et on affiche l'image à la place du texte du tag :

<tpl:EntryTags>
    <tpl:TagsHeader><ul class="post-tags"></tpl:TagsHeader>
    <li><a href="{{tpl:TagURL}}" title="{{tpl:TagID}}"><img src="{{tpl:BlogThemeURL}}/icons/{{tpl:imgTagUrl}}.png" alt="{{tpl:TagID}}" height="24" width="24" /></a></li>
    <tpl:TagsFooter></ul></tpl:TagsFooter>
</tpl:EntryTags>

et ce code dans le fichier _public.php de ton thème :

$core->tpl->addValue('imgTagUrl',array('mythemeTpl','imgTagUrl'));

class mythemeTpl {
	
	public static function imgTagUrl()
		{
		$f = $GLOBALS['core']->tpl->getFilters($attr);
		return '<?php echo '.sprintf($f,'strtolower(text::str2URL($_ctx->meta->meta_id))').'; ?>';
		
	}
}

Ensuite, il faut avoir, dans le répertoire du thème, un dossier réservé à ces images, dans mon exemple /icons/ et y ranger les images qui auront comme nom de fichier le titre urlisé du tag. Tu peux bien entendu modifier cela pour que ce soit rangé dans /public/ ;)

Hors ligne

#7 2011-02-11 15:29:26

jmh2o
Membre
Lieu : Charleroi
Inscription : 2009-01-05
Site Web

Re : Mymeta et image correspondante à {{tpl:MyMetaValue}}

Merci pour les réponses… auxquelles je ne comprends pas grand chose. Désolé.

J'ai commencé par la méthode de Dsls qui me semble avoir comme avantage de ne toucher qu'au thème.

Mais ensuite, comment faire

Mon but était de transformer {{tpl:MyMetaValue}} qui donnait comme résultat "Prénom Nom" en quelques chose qui donne comme résultat "Prénom_Nom", afin de pouvoir, en ajoutant .jpg, une image de nom "Prénom_Nom.jpg".
{{tpl:MyMetaValue}} affiche "Prénom Nom" (et c'est de que je veux)

Quel template utiliser pour afficher "Prénom_Nom"

<img src="/public/portraits/.{{tpl:MyMetaValue}}_s.jpg" alt="{{tpl:MyMetaValue}}" />

est mon code inititial

Remplacer MyMetaValue par MyMetaValueNoSpace ou MyMetaValueNoSpace donne un erreur affichage blanc.

Pourriez-vous donner la méthode pas à pas, si ce n'est pas trop demandé ? Merci.

Hors ligne

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

Pied de page des forums

Sites map