Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2011-10-03 11:56:18

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

Afficher dynamiquement les métadonnés dans le contenu d'un billet

Bonjour,

Suite à ma demande de longue date sur ce topic qui consistera à afficher de façon dynamique le titre et la métadonnée Copyright. J'ai essayé de m'y pencher ce matin (rien de précis, rien de certain).

Je me suis souvenu que annso m'avait suggérer dans un ancien topic, un _public.php (inséré dans un thème pour le moment) développé par Kozlika qui consiste à rajouter une class selon le format de miniature d'image :

<?php
$core->addBehavior('publicHeadContent',array('addClassPublic','publicHeadContent'));

class addClassPublic
{
	public static function publicHeadContent(&$core)
	{
		echo
		
		'<script type="text/javascript">'."\n".
		"//<![CDATA[\n".
		'$(function() {'."\n".
		"\t".'$("div.post").each(function() {'."\n".
		"\t\t".'$(this).find("img[src$=_t.jpg]").addClass("thumbnail-img");'."\n".
		"\t\t".'$(this).find("img[src$=_sq.jpg]").addClass("square-img");'."\n".
		"\t\t".'$(this).find("img[src$=_s.jpg]").addClass("small-img");'."\n".
		"\t\t".'$(this).find("img[src$=_m.jpg]").addClass("medium-img");'."\n".
		"\t".'});'."\n".
		"\n".
		"\t".'$("div.post img").each(function() {'."\n".
		"\t\t".'if ($(this).css("float") == "left") { $(this).addClass("left-img"); }'."\n".
		"\t\t".'else if ($(this).css("float") == "right") { $(this).addClass("right-img"); }'."\n".
		"\t\t".'else if ($(this).css("margin") == "0pt auto") { $(this).addClass("center-img"); }'."\n".
		"\t\t".'else { $(this).addClass("normal-img"); { $(this).addClass("center-img"); }'."\n".
		"\t".'});'."\n".
		'});'."\n".
		"//]]>\n".
		"</script>\n";
	}
}
?>

En lisant cette page, je me dis que cette exemple pourrait être insérer pour englober l'image et sa ligne de légende :

$("img").wrapAll("<div class="legende"></div>");

Puis ensuite insérer avant le </div>, un <p>[Titre] - [Copyright]</p>

Avis & conseils sont les bienvenues…

Hors ligne

#2 2011-10-04 10:20:00

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

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

C'est pas encore tout à fait ça mais quand même.

Le forum d'Alsacréations m'a aidé et j'ai pu englober une <div> et à rajouter un <p> à la suite de l'image avec ce code :

jQuery(function($){
$("img").wrapAll('<div class="ma-classe-pour-les-div"/>');
$("img").after('<p class="ma-classe-pour-les-p">Test</p>');
});

Dernière modification par Jean-Michel (2011-10-04 11:12:26)

Hors ligne

#3 2011-10-04 15:57:13

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

Je ne fournis que des idées car :
1. Ta requête manque de précision : dynamique via PHP ou via javascript ? Comment sont insérées les images ? via une balise à la galerie insert [[img:meta_id XXX]] ou bien via son url (que ce soit en wiki ou en html) ?
2. Je ne sais pas comment sont lues les méta données côté admin (stockées en base ? recalculées à chaque fois a partir de l'id de l'image ?)


En fonction de ça, on peut imaginer un traitement PHP qui récupère les infos que tu souhaite pour les rajouter au texte de l'article (mais retrouver les infos est probablement plus facile à partir de l'id d'un media plutôt que via son url). Ou bien peut être qu'il existe une librairie javascript qui lirait les exifs et qui pourrait donc les afficher à la suite de l'image.

Hors ligne

#4 2011-10-05 08:31:45

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

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

Désolé annso, j'ai tellement la tête dedans que j'ai oublié involontairement les détails qui vont bien autour. Pardon d'avance si j'utilise pas le langage adéquat.

- Cela serait activable ou désactivable via un plugin.
- Dans l'édition du billet, on fait une insertion classique (que ce soit en wiki ou en html).
- C'est du javascript qui ferait le rajout sur un certain type de miniature d'image (small, medium, original)

Hors ligne

#5 2011-10-07 09:03:26

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

J'ai regardé, il existe bien des scripts jquery qui lisent les exifs. Techniquement, c'est donc faisable.

Côté administration du plugin, que demande-tu ?
- qu'il soit activable
- qu'on puisse choisir sur quel type de miniature on l'affiche
- et j'imagine quels infos afficher ?

Hors ligne

#6 2011-10-07 20:15:46

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

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

annso a écrit :

Côté administration du plugin, que demande-tu ?
- qu'il soit activable
- qu'on puisse choisir sur quel type de miniature on l'affiche
- et j'imagine quels infos afficher ?

Exactement. Cela pourrait se traduire par de balises %t = titre, %c = copyright, … (et prévoir la possibilité d'insérer des <span class="meta-titlte">,…)

Dernière modification par Jean-Michel (2011-10-08 10:15:51)

Hors ligne

#7 2011-10-21 20:12:30

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

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

On ne pourrait pas adapter ce que fait le pluigin EfiMetadatas ?

Hors ligne

#8 2011-10-24 14:41:27

Flagada15
Membre
Inscription : 2011-09-08

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

Histoire de rester en tout javascript on pourrait envisager d'utiliser cela :
www.nihilogic.dk/labs/exifjquery/
si je ne me trompe pas cela ferait traiter les exif côté client et non pas côté serveur ?
J'ai commencé à bricoler un peu mais j'ai du mal à faire afficher les données APRES le chargement des données exif.

Par exemple si l'on fait dans le publicFooterContent

$("div.post img").load(function() {
	$(this).exifLoad();
	$(this).after("<p class=\'image-exif-p\'>$$" + $(this).exif("Make") + "$$</p>");
}

La chaîne affichée après l'image est vide.
Alors que si l'on rajoute

$("div.post img").click(function() {
	alert($(this).exif("Model"));
});

Le message affiché est bon lorsque l'on clique sur l'image.
C'est comme si pour le premier exemple le paragraphe était rajouté avant que les données exif ne soient encore lues...

Hors ligne

#9 2011-10-24 14:52:04

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

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

Peut-être que load() n'est appelée nulle part ?

Avec jQuery, utilise plutôt

$(document).ready( function () {

Hors ligne

#10 2011-10-24 15:01:17

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

J'ai vu 2 pistes dans les commentaires (http://blog.nihilogic.dk/2008/05/jquery … lugin.html)

1. Inclure le JS avant les images. Est-ce le cas chez toi ? (ie pas dans le Footer mais plutôt dans le header du coup)

2. Faire plutôt quelque chose dans ce sens

$("div.post img").load(function() {
  $(this).exifLoad(function() {
    $(this).after("<p class=\'image-exif-p\'>$$" + $(this).exif("Make") + "$$</p>");
  });
}); // end load 

Hors ligne

#11 2011-10-24 16:06:56

Flagada15
Membre
Inscription : 2011-09-08

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

bon j'ai réussi à faire un truc qui marche en bidouillant un peu le js, mais à bien y réfléchir je ne suis pas sûr que cela soit une bonne idée :
- les exif ne sont présentes que dans l'image originale, le script ne peut donc être si simple car il ne marche pas si c'est une miniature qui est affichée.
- le javascript doit nécessiter que l'originale soit téléchargée pour pouvoir accéder au données exif (à confirmer). On aurait donc une page lourde à charger car tout devrait être chargé pour pouvoir afficher les légendes.
Il faudrait faire des tests mais peut-être que le mieux sera de faire tout en php, quitte a générer les datas dans le xhtml comme pour le plugin galleryinsert ?

Hors ligne

#12 2011-10-24 16:35:24

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

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

Bonsoir à toutes et à tous,

Merci de vous y être pencher ;-)

Flagada15 a écrit :

bon j'ai réussi à faire un truc qui marche en bidouillant un peu le js, mais à bien y réfléchir je ne suis pas sûr que cela soit une bonne idée :
- les exif ne sont présentes que dans l'image originale, le script ne peut donc être si simple car il ne marche pas si c'est une miniature qui est affichée.
- le javascript doit nécessiter que l'originale soit téléchargée pour pouvoir accéder au données exif (à confirmer). On aurait donc une page lourde à charger car tout devrait être chargé pour pouvoir afficher les légendes.
Il faudrait faire des tests mais peut-être que le mieux sera de faire tout en php, quitte a générer les datas dans le xhtml comme pour le plugin galleryinsert ?

En fait, j'ai des réflexes de mon métier, maquettiste print donc en usage perso sur mon blog, j'insère quasi-tout-le-temps des images en format original. J’insère assez rarement des miniatures, au pire je les exploite hors "billet". Notez que je sais que d'autres n'ont pas ces bonnes pratiques ;-(

J'avais pas pensé que les miniatures n'emportaient pas avec elles les métadonnées du parent "original". Visiblement d'après ce que je constate, c'est le cas.

Si j'ai envie que les métadonnées ne soient pas inclus dans le billet, c'est purement car je veux éviter si tu mets à jour le média avec de nouvelles métadonnées, tu n'as besoin de te farcir tous les billets pour mettre à jour l'insertion. Et pareil, le jour, où j'ai plus envie de voir ces métadonnées (remarque, je pourrai les masquer via CSS).

Hors ligne

#13 2011-10-24 16:44:18

Flagada15
Membre
Inscription : 2011-09-08

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

Jean-Michel a écrit :

En fait, j'ai des réflexes de mon métier, maquettiste print donc en usage perso sur mon blog, j'insère quasi-tout-le-temps des images en format original. J’insère assez rarement des miniatures, au pire je les exploite hors "billet". Notez que je sais que d'autres n'ont pas ces bonnes pratiques ;-(

Je ne vois pas en quoi ce n'est pas une bonne pratique d'insérer des miniatures cliquables ?

Jean-Michel a écrit :

Si j'ai envie que les métadonnées ne soient pas inclus dans le billet, c'est purement car je veux éviter si tu mets à jour le média avec de nouvelles métadonnées, tu n'as besoin de te farcir tous les billets pour mettre à jour l'insertion. Et pareil, le jour, où j'ai plus envie de voir ces métadonnées (remarque, je pourrai les masquer via CSS).

C'est là que l'on rejoint cette question :
http://forum.dotclear.org/viewtopic.php?id=45515
Où une moulinette permettrait de mettre à jour tous les billets.

Hors ligne

#14 2011-10-24 17:14:23

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

Re : Afficher dynamiquement les métadonnés dans le contenu d'un billet

Flagada15 a écrit :

Je ne vois pas en quoi ce n'est pas une bonne pratique d'insérer des miniatures cliquables ?

Pour moi, c'est répulsif (les miniatures cliquables).

Je parlais seulement des images surdimensionnés (exemple : fichier d'APN natif) et du coup, on utilise les miniatures. C'est tellement plus simple d'adapter auparavant son image à l'usage que l'on fait. Cela évite de gaspiller de l'espace d'hébergement et/ou de faire calculer le serveur pour rien.

Hors ligne

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

Pied de page des forums

Sites map