Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2016-05-23 13:40:36

i_love_dc
Membre
Inscription : 2007-07-13

balise pour renseigner la dimension d'une image ??

hello

existe il une balise qui permettrait de renseigner les dimensions widht et height d'une image ?

Afin de renseigner les Mark Up et "structured data" dont voici un exemple:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://google.com/article"
  },
  "headline": "Article headline",
  "image": {
    "@type": "ImageObject",
    "url": "https://google.com/thumbnail1.jpg",
    "height": 800,
    "width": 800
  },
  "datePublished": "2015-02-05T08:00:00+08:00",
  "dateModified": "2015-02-05T09:20:00+08:00",
  "author": {
    "@type": "Person",
    "name": "John Doe"
  },
   "publisher": {
    "@type": "Organization",
    "name": "Google",
    "logo": {
      "@type": "ImageObject",
      "url": "https://google.com/logo.jpg",
      "width": 600,
      "height": 60
    }
  },
  "description": "A most wonderful article"
}
</script>

ce code adapté a dotclear ressemble à :

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "{{tpl:EntryURL}}"
  },
  "headline": "{{tpl:EntryTitle encode_html="1"}}",
  "image": {
    "@type": "ImageObject",
    "url": "NDD.COM{{tpl:EntryFirstImage size="o" no_tag="1"}}",
    "height": 800,
    "width": 800
  },
  "datePublished": "{{tpl:EntryDate creadt="1"}}",
  "dateModified": "{{tpl:EntryDate upddt="1"}}",
  "author": {
    "@type": "Person",
    "name": "{{tpl:EntryAuthorCommonName encode_html="1"}}"
  },
   "publisher": {
    "@type": "Organization",
    "name": "{{tpl:EntryAuthorCommonName encode_html="1"}}",
    "logo": {
      "@type": "ImageObject",
        "url": "{{tpl:BlogURL}}public/MON-LOGO.JPG",
      "width": 600,
      "height": 60
    }
  },
  "description": "{{tpl:EntryContent encode_html="1" remove_html="1" cut_string="120"}}"
}
</script>

il suffirait alors de le coller dans le post.html pour renseigner chaques details pour chaque billets en question.
L e probleme reste le renseignement du champ

 "url": "NDD.COM{{tpl:EntryFirstImage size="o" no_tag="1"}}",
    "height": 800,
    "width": 800

comment est-ce possible de renseigner via {{tpl: ...}} la valeur witdh, puis height ??

.

Dernière modification par i_love_dc (2016-05-23 16:06:09)

Hors ligne

#2 2016-05-23 14:48:56

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

Re : balise pour renseigner la dimension d'une image ??

Il faudra à mon avis créer ta propre balise de template. Tu pourrais prendre exemple sur le plugin iwaha

Hors ligne

#3 2016-05-23 16:10:43

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

le soucis c'est que....

- Je n'ai aucunes idée de "quelle partie prendre du plugin qui permet de renseigner le width + height d'une image"
- je ne sais pas comment créer une balise personnalisé.
- je ne sais pas comment prendre ces deux infos ci-dessus et comment , ni ou les ajouter pour que ce soit pris en compte.

Hors ligne

#4 2016-05-23 16:20:41

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

Re : balise pour renseigner la dimension d'une image ??

Tu pourrais créer un ticket pour demander d'ajouter un paramètre dans la balise EntryFirstImage, ou demander à Franck de l'ajouter au plugin listImages.

Hors ligne

#5 2016-05-23 16:45:26

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

j'ai peut etre une petite avancée...

dans le theme dcBoootstrap de Mathieu.m il semble avoir ajouter une class

# Add new class
$core->addBehavior('publicHeadContent',array('addClassPublic','publicHeadContent'));

class addClassPublic
{
	public static function publicHeadContent($core)
	{
		echo
		
		'<script type="text/javascript">'."\n".
		"//<![CDATA[\n".
		'$(document).ready(function(){'."\n".
		"\t".'$(".post img").addClass("img-responsive");'."\n".
		'});'."\n".
		"//]]>\n".
		"</script>\n";
	}
}

donc si je comprend entre les ligne ce code ajoute une classe "img-responsive" (propre à bootstrap) a toutes les images contenues dans ".post"

c'est bien ca ?

je ne pourrait pas m'inspirer de ca pour ajouter une class ?

Hors ligne

#6 2016-05-23 17:06:45

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

Re : balise pour renseigner la dimension d'une image ??

Non, ce n'est pas simplement un attribut à ajouter dans une règle CSS : tu veux récupérer les dimensions de l'image, qui ne sont pas stockées par Dotclear (seules les largeurs voulues pour les miniatures sont en base).

La seule solution est d'aller chercher la dimension de l'image en PHP, ce que fait le plugin iwaha.

À moins de respecter une contrainte simple : donner à toutes les images originales la même taille, je ne vois pas d'autre solution

Hors ligne

#7 2016-05-23 17:13:50

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

Mince...bon pour la solution bidouille c'est cuit alors.

En espérant que Frank accepte de créer une fonction supplémentaire a EntryFirstImage comme par exemple :

{{tpl:EntryFirstImage witdh="1"}}
{{tpl:EntryFirstImage height="1"}}

ou encore

{{tpl:EntryFirstImage width="1" height="1"}}

Hors ligne

#8 2016-05-23 17:19:34

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

Re : balise pour renseigner la dimension d'une image ??

Tout à fait ;)

Hors ligne

#9 2016-05-23 17:42:49

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

Re : balise pour renseigner la dimension d'une image ??

Apparemment je disais une bêtise au sujet des dimensions qui ne sont pas en base : la taille de l'image est bien affichée dans la médiathèque. Reste toutefois à la récupérer ;)

Edit : Pff... Les dimensions ne sont pas stockées. La page de détails d'une image calcule les dimensions.

Dernière modification par Philippe (2016-05-23 17:47:47)

Hors ligne

#10 2016-05-23 18:04:53

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

Donc si les dimensions ne sont pas stockés, Franck n'y pourra pas grand chose en ce qui concernerait les potentiels ajouts width="1",  height="1" ou width="1" height="1" ?


.

Dernière modification par i_love_dc (2016-05-23 18:05:11)

Hors ligne

#11 2016-05-24 06:25:26

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

Re : balise pour renseigner la dimension d'une image ??

Ce n'est peut-être pas dans la balise EntryFirstImage qu'il faut le faire, mais il n'y a pas de difficulté particulière à mon humble avis ;) Wait and see.

Hors ligne

#12 2016-05-24 07:06:04

Mathieu M.
Membre
Lieu : Rhône-Alpes
Inscription : 2009-09-14

Re : balise pour renseigner la dimension d'une image ??

Il n'existerait pas un plugin pour CKEditor à cet effet ?

http://ckeditor.com/addons/plugins/all

Hors ligne

#13 2016-05-24 09:49:57

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

Mathieu.M un plugin CKEditor qui créé une balise ?

Telle que EntryFirstImage mais avec des renseignements complémentaires (witdh+height) qui permettrait d’être utilisé dans la construction d'un thème?

Hors ligne

#14 2016-05-24 11:46:17

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

Re : balise pour renseigner la dimension d'une image ??

@i_love_dc : j'ai peut-être une solution à te proposer avec deux balises de template à ajouter dans le fichier _public.php de ton thème :

$core->tpl->addValue('EntryFirstImageWidth',array('testTpl','EntryFirstImageWidth'));
$core->tpl->addValue('EntryFirstImageHeight',array('testTpl','EntryFirstImageHeight'));

class testTpl {
	
	public static function EntryFirstImageWidth($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$src = context::EntryFirstImageHelper($size,$with_category,$class,$no_tag,$content_only,$cat_only);
		$file_name = preg_replace('/^'.preg_quote($core->blog->settings->system->public_url,'/').'(\/?)/','',$src);
		
		$public_path = $core->blog->public_path;
		
		$dim = getimagesize($public_path.'/'.$file_name);
		$width = $dim[0];
		
		return $width;
		
		
	}
	public static function EntryFirstImageHeight($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$src = context::EntryFirstImageHelper($size,$with_category,$class,$no_tag,$content_only,$cat_only);
		$file_name = preg_replace('/^'.preg_quote($core->blog->settings->system->public_url,'/').'(\/?)/','',$src);
		
		$public_path = $core->blog->public_path;
		
		$dim = getimagesize($public_path.'/'.$file_name);
		$width = $dim[1];
		
		return $width;
		
		
	}
}

Que tu peux appeler dans _post.html avec

{{tpl:EntryFirstImageWidth size="o"}} et {{tpl:EntryFirstImageHeight size="o"}}

Ces balises utilisent la fonction EntryFirstImageHelper de la balise EntryFirstImage et ont un inconvénient : il faut spécifier la taille voulue, sinon ce sont les dimensions de la taille s qui sont renvoyées. Trouver la vraie image (celle effectivement insérée dans le billet, soit o, s, t, m ou sq) serait plus compliqué. Les paramètres with_category, content_only ou cat_only devraient aussi fonctionner.

Hors ligne

#15 2016-05-24 13:47:45

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

Hello Philippe


1 - Code à inclure dans le _public.php :

$core->tpl->addValue('EntryFirstImageWidth',array('testTpl','EntryFirstImageWidth'));
$core->tpl->addValue('EntryFirstImageHeight',array('testTpl','EntryFirstImageHeight'));

class testTpl {
	
	public static function EntryFirstImageWidth($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$src = context::EntryFirstImageHelper($size,$with_category,$class,$no_tag,$content_only,$cat_only);
		$file_name = preg_replace('/^'.preg_quote($core->blog->settings->system->public_url,'/').'(\/?)/','',$src);
		
		$public_path = $core->blog->public_path;
		
		$dim = getimagesize($public_path.'/'.$file_name);
		$width = $dim[0];
		
		return $width;
		
		
	}
	public static function EntryFirstImageHeight($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$src = context::EntryFirstImageHelper($size,$with_category,$class,$no_tag,$content_only,$cat_only);
		$file_name = preg_replace('/^'.preg_quote($core->blog->settings->system->public_url,'/').'(\/?)/','',$src);
		
		$public_path = $core->blog->public_path;
		
		$dim = getimagesize($public_path.'/'.$file_name);
		$width = $dim[1];
		
		return $width;
		
		
	}
}

2 - Code à copier-coller dans le post.html :

 <script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "{{tpl:EntryURL}}"
  },
  "headline": "{{tpl:EntryTitle encode_html="1"}}",
  "image": {
    "@type": "ImageObject",
    "url": "{{tpl:BlogURL}}{{tpl:EntryFirstImage size="o" no_tag="1"}}",
    "height": {{tpl:EntryFirstImageHeight size="o"}},
    "width": {{tpl:EntryFirstImageWidth size="o"}}
  },
  "datePublished": "{{tpl:EntryDate creadt="1" iso8601="1"}}",
  "dateModified": "{{tpl:EntryDate upddt="1" iso8601="1"}}",
  "author": {
    "@type": "Person",
    "name": "{{tpl:EntryAuthorCommonName encode_html="1"}}"
  },
   "publisher": {
    "@type": "Organization",
    "name": "{{tpl:EntryAuthorCommonName encode_html="1"}}",
    "logo": {
      "@type": "ImageObject",
        "url": "{{tpl:BlogURL}}public/logo.jpg",
      "width": 600,
      "height": 60
    }
  },
  "description": "{{tpl:EntryContent encode_html="1" remove_html="1" cut_string="120"}}"
}
</script>

Ça semble fonctionner.

Ça renseigne bien tous les champs requis pour les MarkUp et données structurées des Rich Snippet de Google.
( pour tester le résultat c'est sur l'outil de test des données structurées "testings tools" de Google )

PS - seul petit "hic", si le billet en cour ne comporte pas d'image, le champs image n'est pas renseigné, même si l'on remplis le champs image avec {{tpl:EntryFirstImage size=o" no_tag="1" with_category="1"}} et que la catégorie contienne bien une image.

Bizarres d'ailleurs qu'il ne donne pas l'image de la catégorie lorsqu'elle en possède une ?
Je ne sais d’ailleurs pas comment remédier à ce dernier soucis ?


.

Dernière modification par i_love_dc (2016-05-24 13:53:59)

Hors ligne

#16 2016-05-24 14:17:26

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

un autre soucis (??) semble-t'il ...


Le code source ta balise semble afficher toujours la même taille soit

"height": 450,
 "width": 675

Pourtant le billet contient bien une image de sur un billet de 734×410

Comment ça se fait ?

Hors ligne

#17 2016-05-24 14:23:19

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

Re : balise pour renseigner la dimension d'une image ??

Dans ton {{tpl:EntryFirstImage size=o" no_tag="1" with_category="1"}} il manque un " devant le o !

Et il ne faut pas utiliser no_tag qui est implicitement déclaré à 1 dans la balise ;)

Je poste bientôt une version plus propre qui supprime l'avertissement php dans le cas où aucune image n'est trouvée, et je teste l'inclusion de l'image de la catégorie s'il n'y en a pas dans le billet.

Hors ligne

#18 2016-05-24 14:40:43

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

Re : balise pour renseigner la dimension d'une image ??

Correction du code :

1) prise en compte du cache de template
2) plus de warning PHP si aucune image n'est trouvée

class testTpl {
	
	public static function EntryFirstImageWidth($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$width = $dim[0];
			echo $width;
		}
		?>';
		
		return $ret;
		
		
	}
	public static function EntryFirstImageHeight($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$height = $dim[1];
			echo $height;
		}
		?>';
		
		return $ret;
		
		
	}
}

à utiliser ainsi :

{{tpl:EntryFirstImageWidth size="o" with_category="1"}}

Paramètres acceptés : size, with_category, cat_only et content_only

Hors ligne

#19 2016-05-24 14:58:46

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

Philippe a écrit :

Dans ton {{tpl:EntryFirstImage size=o" no_tag="1" with_category="1"}} il manque un " devant le o !

Tu as du lire et répondre le temps que j’édite le message, car elle n'y est plus ;-) )


Philippe a écrit :

Et il ne faut pas utiliser no_tag qui est implicitement déclaré à 1 dans la balise ;)

Justement si car lorsque je ne renseigne pas no_tag="1, au lieu de me donner

"url": "http://www.NDD.com/dotclear/public/mon-image.jpg",

Il me donne

"url": "http://www.NDD.com<img alt="Texte alternatif" src="/dotclear/public/mon-image.jpg" class="" />",

(avec une class vide...bizarre)


Philippe a écrit :

Correction du code :

1) prise en compte du cache de template

J’étais entrain de rédiger un message pour t'en faire part..
Je vais sur le champs tester ton nouveau bout de code "plus propre".


Par contre, je me rend compte d'une petite "coquille !"

Par exemple

{{tpl:BlogURL}}{{tpl:EntryFirstImage size="o" no_tag="1"}}

Devrait donner "-www.NDD.com/dotclear/public/mon-image.jpg",
mais ça donne "-www.NDD.com//dotclear/public/mon-image.jpg" (avec 2 slash)

du coup obligé de faire "www.NDD.com{{tpl:EntryFirstImage size="o" no_tag="1"}}"

Tu confirme qu'il n'y a pas d'autres solutions ?

Hors ligne

#20 2016-05-24 15:02:08

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

Re : balise pour renseigner la dimension d'une image ??

Ne mélangeons pas tout : teste d'abord le code que je t'ai donné en #18.

Hors ligne

#21 2016-05-24 15:09:39

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

Re : balise pour renseigner la dimension d'une image ??

i_love_dc a écrit :
Philippe a écrit :

Et il ne faut pas utiliser no_tag qui est implicitement déclaré à 1 dans la balise ;)

Justement si car lorsque je ne renseigne pas no_tag="1, au lieu de me donner ...

Je ne parlais pas de EntryFirstImage mais des balises pour récupérer les dimensions...

Hors ligne

#22 2016-05-24 15:14:53

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

voici mon "post.html"

  <script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "{{tpl:EntryURL}}"
  },
  "headline": "{{tpl:EntryTitle encode_html="1"}}",
  "image": {
    "@type": "ImageObject",
    "url": "http://NDD.com{{tpl:EntryFirstImage size="o" no_tag="1"}}",
    "height": {{tpl:EntryFirstImageHeight size="o"}},
    "width": {{tpl:EntryFirstImageWidth size="o"}}
  },
  "datePublished": "{{tpl:EntryDate creadt="1" iso8601="1"}}",
  "dateModified": "{{tpl:EntryDate upddt="1" iso8601="1"}}",
  "author": {
    "@type": "Person",
    "name": "{{tpl:EntryAuthorCommonName encode_html="1"}}"
  },
   "publisher": {
    "@type": "Organization",
    "name": "{{tpl:EntryAuthorCommonName encode_html="1"}}",
    "logo": {
      "@type": "ImageObject",
        "url": "{{tpl:BlogURL}}public/logo.jpg",
      "width": 600,
      "height": 60
    }
  },
  "description": "{{tpl:EntryContent encode_html="1" remove_html="1" cut_string="120"}}"
}
</script>

Mon "_public.php"

<?php
# -- BEGIN LICENSE BLOCK ---------------------------------------
#
# This file is part of Dotclear 2.
#
# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
# Licensed under the GPL version 2.0 license.
# See LICENSE file or
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- END LICENSE BLOCK -----------------------------------------
if (!defined('DC_RC_PATH')) { return; }

# Add more translations
l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/public');

# Add new class
$core->addBehavior('publicHeadContent',array('addClassPublic','publicHeadContent'));

class addClassPublic
{
	public static function publicHeadContent($core)
	{
		echo
		
		'<script type="text/javascript">'."\n".
		"//<![CDATA[\n".
		'$(document).ready(function(){'."\n".
		"\t".'$(".post img").addClass("img-responsive");'."\n".
		'});'."\n".
		"//]]>\n".
		"</script>\n";
	}
}

# Add new pagination
$core->tpl->addValue('PaginationLinks', array('tplMyPagination', 'PaginationLinks'));
class tplMyPagination {
	public static function PaginationLinks($attr)
	{
		$p = '<?php
		
		function makePageLink($pageNumber, $linkText) {
			if (isset($GLOBALS["_page_number"])) {
				$current = $GLOBALS["_page_number"];
			} else {
				$current = 1;
			}
			if ($pageNumber != $current) {
				$args = $_SERVER["URL_REQUEST_PART"];
				$args = preg_replace("#(^|/)page/([0-9]+)$#","",$args);
				$url = $GLOBALS["core"]->blog->url.$args;
				if ($pageNumber > 1) {
					$url = preg_replace("#/$#","",$url);
					$url .= "/page/".$pageNumber;
				}
				if (!empty($_GET["q"])) {
					$s = strpos($url,"?") !== false ? "&amp;" : "?";
					$url .= $s."q=".$_GET["q"];
				}
				$linkDesc = "Page &nbsp;".$linkText;
				return "<li><a href=\"".$url."\" title=\"".$linkDesc."\">".$linkText."</a></li>";
			} else {
				return "<li class=\"active\"><a>".$linkText."</a></li>";
			}
		}
		
		if (isset($GLOBALS["_page_number"])) {
			$current = $GLOBALS["_page_number"];
		} else {
			$current = 1;
		}
		if ($_ctx->exists("pagination")) {
			$nb_posts = $_ctx->pagination->f(0);
		}
		
		/* Variables to tweak the pagination system */
		$nb_per_page = $_ctx->post_params["limit"][1];
		$nb_pages = ceil($nb_posts/$nb_per_page);
		$nb_sequence = 2 * 3 + 1;
		
		?>';
		
		if (!isset($attr['max'])) { $p .= '<?php $nb_page_max = 0; ?>'; } else { $p .= '<?php $nb_page_max = '.$attr['max'].'; ?>'; }
		$p .= '<?php
		
		if ($nb_page_max == 0 || $nb_pages <= $nb_page_max) {
			for ($i = 1; $i <= $nb_pages; $i++) {
				echo makePageLink($i,$i);
			}
		} else {
			echo makePageLink(1,1);
			$min_page = max($current - ($nb_sequence - 1) / 2, 2);
			$max_page = min($current + ($nb_sequence - 1) / 2, $nb_pages - 1);
			if ($min_page > 2) { echo "<li class=\"disabled\"><a>...</a></li>"; }
			for ($i = $min_page; $i <= $max_page ; $i++) {
				echo makePageLink($i,$i);
			}
			if ($max_page < $nb_pages - 1) { echo "<li class=\"disabled\"><a>...</a></li>"; }
			echo makePageLink($nb_pages,$nb_pages);
		}
		
		?>';
		
		return $p;
	}
}
$core->addBehavior('templateBeforeBlock',array('behaviorsExcludeCurrentPost','templateBeforeBlock'));

class behaviorsExcludeCurrentPost 
{
	public static function templateBeforeBlock($core,$b,$attr)
	{
	       if ($b == 'Entries' && isset($attr['exclude_current']) && $attr['exclude_current'] == 1)
	       {
		       return
		       "<?php\n".
		       '$params["sql"] = "AND P.post_url != \'".$_ctx->posts->post_url."\' ";'."\n".
		       "?>\n";
	       }
	}
}
class testTpl {
	
	public static function EntryFirstImageWidth($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$width = $dim[0];
			echo $width;
		}
		?>';
		
		return $ret;
		
		
	}
	public static function EntryFirstImageHeight($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$height = $dim[1];
			echo $height;
		}
		?>';
		
		return $ret;
		
		
	}
}
?>

Premier test de ton second code...

les valeurs "width" et "height" ne sont plus renseignés

testé {{tpl:EntryFirstImageWidth}},{{tpl:EntryFirstImageHeight}} :

- simple
- size="o"
- with_category="1"
- size="o" with_category="1"

Dernière modification par i_love_dc (2016-05-24 15:17:53)

Hors ligne

#23 2016-05-24 15:25:20

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

Re : balise pour renseigner la dimension d'une image ??

Tu n'aurais pas oublié

$core->tpl->addValue('EntryFirstImageWidth',array('testTpl','EntryFirstImageWidth'));
$core->tpl->addValue('EntryFirstImageHeight',array('testTpl','EntryFirstImageHeight'));

dans _public.php ?

Hors ligne

#24 2016-05-24 15:33:43

i_love_dc
Membre
Inscription : 2007-07-13

Re : balise pour renseigner la dimension d'une image ??

Tu avait oublié ...

$core->tpl->addValue('EntryFirstImageWidth',array('testTpl','EntryFirstImageWidth'));
$core->tpl->addValue('EntryFirstImageHeight',array('testTpl','EntryFirstImageHeight'));

dans ton 2eme code et moi j'ai juste copié-collé comme un mouton.

c'est bon le code _public.php

<?php
# -- BEGIN LICENSE BLOCK ---------------------------------------
#
# This file is part of Dotclear 2.
#
# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
# Licensed under the GPL version 2.0 license.
# See LICENSE file or
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- END LICENSE BLOCK -----------------------------------------
if (!defined('DC_RC_PATH')) { return; }

$core->tpl->addValue('EntryFirstImageWidth',array('testTpl','EntryFirstImageWidth'));
$core->tpl->addValue('EntryFirstImageHeight',array('testTpl','EntryFirstImageHeight'));
class testTpl {
	
	public static function EntryFirstImageWidth($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$width = $dim[0];
			echo $width;
		}
		?>';
		
		return $ret;
		
		
	}
	public static function EntryFirstImageHeight($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$height = $dim[1];
			echo $height;
		}
		?>';
		
		return $ret;
		
		
	}
}

# Add more translations
l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/public');

# Add new class ...... etc .....etc.....etc .....

Ca semble nickel...ca va bien chercher les dimensions de limage et également celle de la catégorie si le billet n'en contient pas et ce sans probleme de cache.

;-)

Bravo Philippe  !!

Dernière modification par i_love_dc (2016-05-24 15:46:57)

Hors ligne

#25 2016-05-24 15:45:05

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

Re : balise pour renseigner la dimension d'une image ??

Je n'avais mis en #18 que la partie modifiée (par rapport à #14) du code nécessaire ^^

Le voici en entier :

$core->tpl->addValue('EntryFirstImageWidth',array('testTpl','EntryFirstImageWidth'));
$core->tpl->addValue('EntryFirstImageHeight',array('testTpl','EntryFirstImageHeight'));
$core->tpl->addValue('EntryFirstImageURL',array('testTpl','EntryFirstImageURL'));

class testTpl {
	
	public static function EntryFirstImageWidth($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$width = $dim[0];
			echo $width;
		}
		?>';
		
		return $ret;
		
		
	}
	public static function EntryFirstImageHeight($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_path = $core->blog->public_path;
			
			$dim = getimagesize($public_path."/".$file_name);
			$height = $dim[1];
			echo $height;
		}
		?>';
		
		return $ret;
		
		
	}
	public static function EntryFirstImageURL($attr)
	{
		global $core;
		
		
		$size = !empty($attr['size']) ? $attr['size'] : '';
		$class = '""';
		$with_category = !empty($attr['with_category']) ? 1 : 0;
		$no_tag = 1;
		$content_only = !empty($attr['content_only']) ? 1 : 0;
		$cat_only = !empty($attr['cat_only']) ? 1 : 0;
		
		$ret = '<?php 
		$src = context::EntryFirstImageHelper("'.$size.'",'.$with_category.',"",'.$no_tag.','.$content_only.','.$cat_only.');
		$file_name = preg_replace("/^".preg_quote($core->blog->settings->system->public_url,"/")."(\/?)/","",$src);
		if (!$file_name == "") {
			$public_url = substr_replace($core->blog->url ,"",-1).$core->blog->settings->system->public_url;
			echo $public_url."/".$file_name;
		}
		?>';
		
		return $ret;
		
		
	}
}

Tu remarqueras que j'ai ajouté une balise EntryFirstImageURL. À utiliser avec les mêmes paramètres que les deux autres pour récupérer l'URL de l'image dont tu as besoin dans _post.html :

{{tpl:EntryFirstImageURL size="o" with_category="1"}}

Hors ligne

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

Pied de page des forums

Sites map