Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Bonjour,
Il existe une fonction qui renvoie le code html pour la première image, mais est-il possible de récupérer juste l'url?
Merci d'avance.
Patidou
Dernière modification par patidou (2011-10-19 09:39:44)
«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous
Hors ligne
Il n'existe pas de balise de template pour cela, il faut passer par un plugin ou peut-être un ajout au fichier _public.php du thème.
Hors ligne
Oui, c'est à ça que je pensais. J'ai déjà vu comment créer des balises de templtates mais mon souci est la méthode pour récupérer cette url, je fais un regexp sur la balise img renvoyée par la fonction?
Dernière modification par patidou (2011-10-19 11:13:32)
«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous
Hors ligne
Oui, tu peux t'inspirer d'un plugin comme lastImages et de son fichier _public.php, tu trouveras la règle permettant de récupérer la première balise <img /> et son attribut src ;)
Hors ligne
Merci :-)
«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous
Hors ligne
Bonjour, au besoin j'avais fait ca, le code est ici : http://aiguebrun.adjaya.info/post/20090 … -dotclear2
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Je vais essayer ça dès que j'ai un moment de libre, merci. ;-)
«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous
Hors ligne
Plop,
Si tu arrive à un résultat, je serais fort intéressé par le code si tu veux bien le mettre à disposition :)
Hors ligne
Si tu veux bien remonter au message #6, tu verra que j'ai mis un lien vers le code.
Petite précision, je n'ai fait qu'ajouter quelques lignes au code d'origine pour donner un attribut supplémentaire "src_only" à la balise tpl.
J'ai fait ca il y a un moment déjà, et la fonction d'origine a légèrement évoluée depuis, donc prendre le temps de jeter un œil sur la version de dotclear en cours pour mettre à jour, au cas ou ce code répond à ton attente.
Dernière modification par adjaya (2011-10-20 13:20:27)
Photo, Art et Création Numérique : http://benoit-grelier.photo7.fr/
Hors ligne
Juste pour info, en utilisant la méthode d'adjaya pour la version suivante du thème polyvalence :
$core->tpl->addValue('MyEntryFirstImageURL',array('tplPolyvalenceTpl','MyEntryFirstImageURL'));
class tplPolyvalenceTpl
{
public static function MyEntryFirstImageURL($attr)
{
$size = !empty($attr['size']) ? $attr['size'] : '';
$class = !empty($attr['class']) ? $attr['class'] : '';
$with_category = !empty($attr['with_category']) ? 'true' : 'false';
return "<?php echo tplPolyvalenceTpl::MyEntryFirstImageURLHelper('".addslashes($size)."',".$with_category.",'".addslashes($class)."'); ?>";
}
public static function MyEntryFirstImageURLHelper($attr)
{
global $core, $_ctx;
$media = new dcMedia($core);
$sizes = implode('|',array_keys($media->thumb_sizes)).'|o';
if (!preg_match('/^'.$sizes.'$/',$size)) {
$size = 's';
}
$p_url = $core->blog->settings->system->public_url;
$p_site = preg_replace('#^(.+?//.+?)/(.*)$#','$1',$core->blog->url);
$p_root = $core->blog->public_path;
$pattern = '(?:'.preg_quote($p_site,'/').')?'.preg_quote($p_url,'/');
$pattern = sprintf('/<img.+?src="%s(.*?\.(?:jpg|jpeg|gif|png))"[^>]+/msu',$pattern);
$src = '';
$alt = '';
# We first look in post content
if ($_ctx->posts)
{
$subject = $_ctx->posts->post_excerpt_xhtml.$_ctx->posts->post_content_xhtml;
if (preg_match_all($pattern,$subject,$m) > 0)
{
foreach ($m[1] as $i => $img) {
if (($src = self::ContentFirstImageLookup($p_root,$img,$size)) !== false) {
$src = $p_url.(dirname($img) != '/' ? dirname($img) : '').'/'.$src;
if (preg_match('/alt="([^"]+)"/',$m[0][$i],$malt)) {
$alt = $malt[1];
}
break;
}
}
}
}
# No src, look in category description if available
if (!$src && $with_category && $_ctx->categories)
{
if (preg_match_all($pattern,$_ctx->categories->cat_desc,$m) > 0)
{
foreach ($m[1] as $i => $img) {
if (($src = self::ContentFirstImageLookup($p_root,$img,$size)) !== false) {
$src = $p_url.(dirname($img) != '/' ? dirname($img) : '').'/'.$src;
if (preg_match('/alt="([^"]+)"/',$m[0][$i],$malt)) {
$alt = $malt[1];
}
break;
}
}
};
}
if ($src) {
return $src;
}
}
private static function ContentFirstImageLookup($root,$img,$size)
{
global $core;
# Get base name and extension
$info = path::info($img);
$base = $info['base'];
$media = new dcMedia($core);
$sizes = implode('|',array_keys($media->thumb_sizes));
if (preg_match('/^\.(.+)_('.$sizes.')$/',$base,$m)) {
$base = $m[1];
}
$res = false;
if ($size != 'o' && file_exists($root.'/'.$info['dirname'].'/.'.$base.'_'.$size.'.jpg'))
{
$res = '.'.$base.'_'.$size.'.jpg';
}
else
{
$f = $root.'/'.$info['dirname'].'/'.$base;
if (file_exists($f.'.'.$info['extension'])) {
$res = $base.'.'.$info['extension'];
} elseif (file_exists($f.'.jpg')) {
$res = $base.'.jpg';
} elseif (file_exists($f.'.jpeg')) {
$res = $base.'.jpeg';
} elseif (file_exists($f.'.png')) {
$res = $base.'.png';
} elseif (file_exists($f.'.gif')) {
$res = $base.'.gif';
}
}
if ($res) {
return $res;
}
return false;
}
}
«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous
Hors ligne
Vous n'êtes pas identifié(e).