•  » Utilisation
  •  » [Résolu] Code pour dater automatiquement une photo...

#1 2009-05-04 09:57:20

leptitfredy
Membre
2007-11-30
97

[Résolu] Code pour dater automatiquement une photo...

Tout d'abord, bonjour à tous !
Cela faisait longtemps que je n'étais pas venu sur le site, et ôôôh surprise.... magnifique Piwigo, bravo !!!

Toujours dans l'amélioration de mon site de cartes postales anciennes, très connu et très apprécié pour sa navigation (merci ex phpwebgallery ;-)   J'ai pensé à une option qui serait, je pense, fort appréciée par mes visiteurs : dater automatiquement en années chaque carte écrite et ce depuis le jour où elle a été postée.
Pour ce faire, j'aimerai ajouter un bout de code dans la partie "description" de chaque carte (photo) concernée, faisait apparaître une phrase comme par exemple : Cette carte à aujourd'hui (chiffres) ans !
Pensez-vous que cela est réalisable, et surtout comment s'y prendre ???  ( exemple de code, s'iou plaît ? )

Je vous remercie par avance

Dernière modification par leptitfredy (2009-11-30 12:11:12)

Hors ligne

#2 2009-05-04 12:45:45

repie38
Former Piwigo Team
grenoble
2006-05-23
678

Re: [Résolu] Code pour dater automatiquement une photo...

crée un template extension de picture.tpl, dans lequel tu auras ajouter :

Code:

<tr>
    <td class="label">Dispo sur mon super site depuis</td>
    <td class="value">{if isset($INFO_POSTED_DATE)}
{php}
global $picture;
$a=$picture['current']['date_available'];
$b=floor((time()-mktime(0,0,0,substr($a,5,2),substr($a,8,2),substr($a,0,4)) )/(60*60*24*365));
if ($b==1) $c="1 an";elseif ($b==0) $c="moins d'1 an";else $c=$b." ans";
$this->assign('AGE', $c);
{/php}
{$AGE}
{else}{'N/A'|@translate}{/if}</td>
</tr>

(dans la partie legende de la photo, entre un "</tr>" et un "</tr>")

pour l'age depuis la date d'ajout. pour l'age depuis la date de création :

Code:

<tr>
    <td class="label">Dispo sur mon super site depuis</td>
    <td class="value">{if isset($INFO_CREATION_DATE)}
{php}
global $picture;
$a=$picture['current']['date_creation'];
$b=floor((time()-mktime(0,0,0,substr($a,5,2),substr($a,8,2),substr($a,0,4)) )/(60*60*24*365));
if ($b==1) $c="1 an";elseif ($b==0) $c="moins d'1 an";else $c=$b." ans";
$this->assign('AGE', $c);
{/php}
{$AGE}
{else}{'N/A'|@translate}{/if}</td>
</tr>

j'annonce de suite, fonction des année bissextile, ca marechera a + ou - un jour prés ...
et j'ai fait ca vite fait, donc une relecture d'un développeur ne serait pas du luxe.

(j'en profite pour dire au passage que maintenant qu'on a smarty, on devrait passer les dates aux template en timestamp !)

(n'oubli pas d'activer le template 8-) )

Dernière modification par repie38 (2009-05-04 12:49:15)

Hors ligne

#3 2009-05-04 13:10:48

leptitfredy
Membre
2007-11-30
97

Re: [Résolu] Code pour dater automatiquement une photo...

Merci repie38, mais ta réponse me fait comprendre que je me suis mal exprimé...

En fait, le temps "années" que je souhaite afficher est celui de la date à laquelle la carte postale a été réellement écrite (généralement entre 1900 et 1930). Cette date je sais que je dois l'écrire "manuellement" dans un bout de code pour chaque carte concernée, mais je voudrais qu'ensuite le calcul se fasse automatiquement jusqu'à aujourd'hui. Exemple : Cette carte a été écrite il y a 98 ans ! ; ou bien encore : Cette carte à aujourd'hui 98 ans et 125 jours !

C'est possible ça.... ?  :-S

Hors ligne

#4 2009-05-04 13:13:32

repie38
Former Piwigo Team
grenoble
2006-05-23
678

Re: [Résolu] Code pour dater automatiquement une photo...

eric -> et a quoi peut donc bien servir la date de création, editable depuis l'admin ...

ramsy -> je ne sais guère ...

Hors ligne

#5 2009-05-04 13:21:23

leptitfredy
Membre
2007-11-30
97

Re: [Résolu] Code pour dater automatiquement une photo...

Ok je sors..... ;-)

Effectivement j'avais zappé cette possibilité. Faut dire que depuis le début j'avais choisi de cacher la date d'ajout et autres infos qui apparaissent sous la photo. Je vais maintenant m'activer à mettre en œuvre ton code, merci à toi !!

Hors ligne

#6 2009-05-04 13:24:08

repie38
Former Piwigo Team
grenoble
2006-05-23
678

Re: [Résolu] Code pour dater automatiquement une photo...

tu peux tres bien n'afficher que cette donnée, et la formater comme tu souhaite, et meme ne pas l'afficher si le champ date de création est vide, mais c'est vrai que repartir de la description pour faire un calcul, ca va etre tendu ...

Dernière modification par repie38 (2009-05-04 13:24:40)

Hors ligne

#7 2009-05-05 15:35:53

leptitfredy
Membre
2007-11-30
97

Re: [Résolu] Code pour dater automatiquement une photo...

J'ai trouvé ce script qui afficherait exactement ce que je souhaite, écrire la date de la carte postale en tant que date de naissance et de ce fait, obtenir automatiquement à l'affichage l'âge de la carte.
Mais une fois ce code copier/coller dans la partie "description", ça ne fait rien de plus qu'afficher le même code sous l'image, pourquoi ça veut pas fonctionner ??? 
J'imagine qu'il doit y avoir un problème de formatage html et php, mais j'y connais pas assez pour le régler tout seul.

<?php
//à partir de la date de naissance, retourne l'âge dans la variable $age
// date de naissance (partie à modifier)
$ddn = "07/02/1903";
// enregistrement de la date du jour
$DATEDUJOUR = date("Y-m-d");
$DATEFRAN = date("d/m/Y");
// calcul de mon age d'après la date de naissance $ddn
$annais = substr("$ddn", 6, 4);
$anjour = substr("$DATEFRAN", 6, 4);
$moisnais = substr("$ddn", 3, 2);
$moisjour = substr("$DATEFRAN", 3, 2);
$journais = substr("$ddn", 0, 2);
$jourjour = substr("$DATEFRAN", 0, 2);
$age = $anjour-$annais;
if ($moisjour<$moisnais){$age=$age-1;}
if ($jourjour<$journais && $moisjour==$moisnais){$age=$age-1;}
?>

(dites le moi si je suis lourd...)  :(

Hors ligne

#8 2009-05-05 16:49:21

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16935

Re: [Résolu] Code pour dater automatiquement une photo...

un petit plugin perso


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#9 2009-05-05 18:43:24

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Code pour dater automatiquement une photo...

Pas forcément en plugin perso... on peut faire ca en template extension...
Tu créera donc un template extension de picture.tpl, dans lequel tu insèreras avant <div id="theImage"> ce qui est en gras:

{php}
$desc = $this->get_template_vars('COMMENT_IMG');
if (preg_match('#date=(\d+)/(\d+)/(\d+)#', $desc, $a))
{
  $b=floor((time()-mktime(0,0,0,$a[2],$a[1],$a[3]))/(60*60*24*365));
  if ($b==1) $c="1 an";elseif ($b==0) $c="moins d'1 an";else $c=$b." ans";
  $this->assign('PHOTO_AGE', $c);
  $this->_tpl_vars['COMMENT_IMG'] = preg_replace('#date=(\d+)/(\d+)/(\d+)#', '', $desc);
}
{/php}


<div id="theImage">
{$ELEMENT_CONTENT}

Ensuite, dans la table d'infos (par exemple après auteur), tu mettras:

<tr>
    <td class="label">{'Author'|@translate}</td>
    <td class="value">{if isset($INFO_AUTHOR)}{$INFO_AUTHOR}{else}{'N/A'|@translate}{/if}</td>
  </tr>

  {if isset($PHOTO_AGE)}
  <tr>
    <td class="label">Cette carte a été écrite il y a</td>
    <td class="value">{$PHOTO_AGE}</td>
  </tr>
  {/if}


  <tr>
    <td class="label">{'Created on'|@translate}</td>
    <td class="value">{if isset($INFO_CREATION_DATE)}{$INFO_CREATION_DATE}{else}{'N/A'|@translate}{/if}</td>
  </tr>

Enfin, pour mettre une date (directement dans la description de l'image), il faudra utiliser le format suivant:

date=31/12/1950

Dernière modification par P@t (2009-05-05 18:45:02)


P@t

Hors ligne

#10 2009-05-05 19:26:01

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16935

Re: [Résolu] Code pour dater automatiquement une photo...

P@t a écrit:

Pas forcément en plugin perso... on peut faire ca en template extension...

Non on ne peut pas regarde le tag de la version ;-)


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#11 2009-05-05 20:45:56

leptitfredy
Membre
2007-11-30
97

Re: [Résolu] Code pour dater automatiquement une photo...

Oui justement, depuis hier je me demandais comment je peux bien réaliser un Template extension malgré l'aide dans le wiki, me suis douté que ma version ne me le permettait pas, de là à mettre ma version à jour...
Donc en gros j'en suis toujours au même point, et moi qui croyait que cela allait être facile :-S
En tout cas je vous remercie pour vos posts, peut-être allez-vous trouver mon bonheur tôt ou tard ;-)

Amitiés

Hors ligne

#12 2009-05-05 21:29:02

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Code pour dater automatiquement une photo...

Hum... en effet, j'avais pas vu le tag de version!
Mais pourquoi ne pas passer à la 2.0.0???

Je pourrais te donner l'équivalent en plugin perso (donc faisable en 1.7.3) mais ce serait tellement plus confortable pour toi de passer en 2.0.0... qu'est-ce qui t'en empeche?


P@t

Hors ligne

#13 2009-05-05 23:39:59

leptitfredy
Membre
2007-11-30
97

Re: [Résolu] Code pour dater automatiquement une photo...

Ben disons que j'ai apporter tellement de modifications, minimes ou importantes, depuis bientôt deux ans pour que mon site ait enfin son apparence définitive... que j'ai peur de tout perdre. Je serai totalement incapable de retrouver et d'isoler tous les fichiers retouchés, sans compter près de 1200 descriptions ajoutées "manuellement" pour chaque carte, donc mise à jour quasi impossible.

Par contre je dois mettre sur pied prochainement un site identique au mien pour une autre collection de cartes postales. Du coup j'aurai grand plaisir à installer et découvrir piwigo, suis impatient !

Néanmoins mon cher p@t, je veux bien avoir la soluce en plugin perso pour ma 1.7.3, là tu m'intéresses vraiment !!!

Hors ligne

#14 2009-05-06 12:58:59

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] Code pour dater automatiquement une photo...

leptitfredy a écrit:

Ben disons que j'ai apporter tellement de modifications, minimes ou importantes, depuis bientôt deux ans pour que mon site ait enfin son apparence définitive... que j'ai peur de tout perdre. Je serai totalement incapable de retrouver et d'isoler tous les fichiers retouchés, sans compter près de 1200 descriptions ajoutées "manuellement" pour chaque carte, donc mise à jour quasi impossible.

Salut.

Bah, tu peux déjà te rendre compte des réels problèmes qui se présenteraient en faisant un clone local de ta galerie (avec Easyphp ou Wampserver par exemple).

Pour les modifications que tu aurais apporté aux fichiers originaux de PWG, tu peux aussi utiliser Winmerge qui te permettra de comparer tes fichiers avec une release 1.7.3 non retouchée. Il faudra bien sur adapter ces modifs pour Piwigo 2.x et, cette fois, sans forcément modifier les fichiers d'origine (plugin, template-extension,...).

Je ne dis pas çà pour te forcer la main mais il faut bien que tu sois conscient que, tôt ou tard, il ne nous sera plus possible de faire du support pour les versions passées. Et puis n'est ce pas reculer pour mieux sauter ?

Hors ligne

#15 2009-08-19 02:58:51

bradcapo112
Membre
2009-08-19
1

Re: [Résolu] Code pour dater automatiquement une photo...

Merci pour le partage. Il est grand



comparatif simulation taux pret auto - taux pret auto differe selon la prise en compte ... calculent automatiquement le taux pour un prêt automobile donne.comparatif simulation taux pret auto

Hors ligne

  •  » Utilisation
  •  » [Résolu] Code pour dater automatiquement une photo...

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact