Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
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.
Jean-Marie h2o
--
http://www.levertpays.be - http://www.broucheterre.be
Hors ligne
Désolé pour la "up", pas très correcte.
Il n'y aurait donc pas de solution(s) à mon problème ?
Jean-Marie h2o
--
http://www.levertpays.be - http://www.broucheterre.be
Hors ligne
peut-être pourrait tu utiliser firstimage
Mes fautes font saigner mes propre yeux.
Hors ligne
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
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
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
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.
Jean-Marie h2o
--
http://www.levertpays.be - http://www.broucheterre.be
Hors ligne
Vous n'êtes pas identifié(e).