#1 2006-08-24 10:07:28

phgiraud
Membre
2006-08-23
37

Trier les photos et catégories par date de prise de vue

Une fois que vous avez fait en sorte que le champ "date_creation" des image soit bien alimenté par la donnée EXIF "DateTimeOriginal" qui correspond à la date de prise de vue (voir mon précédent post), il peut être intéressant de trier par défaut les images par rapport à ce champ:

include/config_local.inc.php

Code:

$conf['order_by'] = ' ORDER BY date_creation'; // par défaut, tri par date de prise de vue

Lors de l'affichage d'une image individuelle, on peut faire en sorte de voir cette date avec l'heure de la photo:

picture.php, ligne 629

Code:

if (!empty($picture['current']['date_creation']))
{
  $val = format_date($picture['current']['date_creation'], 'mysql_datetime', true);
  $infos['INFO_CREATION_DATE'] = $val;
}

D'autre part, les catégories (contenant des images) pouvant être associées à une image représentative, j'ai trouvé intéressant de pouvoir trier les catégories par rapport à la date de prise de vue de leur image représentative. Cela permet de trier automatiquement les catégories de manière chronologique.
Pour cela, pour aller au plus vite, j'ai modifié l'action du bouton "Trier alphanum":

admin/cat_list.php, ligne 117

Code:

else if (isset($_POST['submitOrderAlphaNum']))
{
  // MODIF requete : jointure cat/images pour obtenir les dates de creation des images représentatives
  $query = 'SELECT '.CATEGORIES_TABLE.'.id, '.CATEGORIES_TABLE.'.name, '.
                   IMAGES_TABLE.'.date_creation FROM '.CATEGORIES_TABLE.', '.IMAGES_TABLE.
         ' WHERE '.CATEGORIES_TABLE.'.id_uppercat '.
         (!isset($_GET['parent_id']) ? 'IS NULL' : '= '.$_GET['parent_id']).' AND '.
         CATEGORIES_TABLE.'.representative_picture_id = '.IMAGES_TABLE.'.id;';
  // MODIF pour info, afficher la requête dans les infos
  array_push(
    $page['infos'],
    $query."\n"
    );      

  $result = pwg_query($query);  
  while ($row = mysql_fetch_assoc($result))
  {
    // MODIF: [id, date_creation] + visu
    $categories[ $row['id'] ] = $row['date_creation'];    
    array_push(
      $page['infos'],
      $row['name'].", ".$row['date_creation']);      
  }
  // thiw will now sort by creation date
  asort($categories, SORT_REGULAR);
  save_categories_order(array_keys($categories));
  array_push(
    $page['infos'],
    "Categories ordonnées par date d'image représentante"
    );      
}

J'ai modifié la liste des tris possibles (combo sur la droite nommée "Ordre de tri"):

include/functions_category.inc.php

Code:

function get_category_preferred_image_orders()
{
  return array(
    array(l10n('default_sort'), '', true),
    array(l10n('most_visited_cat'), 'hit ASC', true),
    array(l10n('Creation date'), 'date_creation ASC', true),
    array(l10n('Post date'), 'date_available ASC', true),
  );
}

Dans l'écran des catégories, pour:
- afficher la date de creation de l'image représentative
- trier par défaut avec les catégories les plus récentes en premier

include/category_subcats.inc.php

Code:

ligne  40 : ORDER BY rank DESC // les + récentes en premier
ligne 123 : $date_creation_src_of = array(); // pour stocker dates de création des images de la categorie
ligne 127 : SELECT id, path, tn_ext, date_creation // pour récupérer les dates de création
ligne 136 :     $date_creation_src_of[$row['id']] = $row['date_creation'] ; // stockage
ligne 169 : 'DATE' => format_date($date_creation_src_of[ $category['picture'] ], 'mysql_datetime') // donne au TPL la date formattée

et pour ajouter la ligne avec la date au dessus du nom de la categorie, et modifier la présentation descripton/nb d'images:

template/yoga/mainpage_categories.tpl

Code:

* sous <div class="description"> ajouter : <p>{categories.category.DATE}</p>
* puis modifier : d'abord la description, une ligne vide, et le nombre d'images
        <p>{categories.category.DESCRIPTION}</p>
        <br>
        <p>{categories.category.CAPTION_NB_IMAGES}</p>

Un petit aperçu de la présentation obtenue:
http://img138.imageshack.us/img138/7048/appercucategoriesws2.jpg
On constate que les categories les + récentes sont affichées en premier, avec la date de l'image représentative, le titre, la description et le nombre d'images.

Hors ligne

#2 2006-10-22 23:07:03

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12671

Re: Trier les photos et catégories par date de prise de vue

(topic très intéressant, j'aurai dû répondre bien plus tôt)

Il y a une autre date que tu aurais pu utiliser pour le tri des catégories : #categories.date_last qui correspond à la plus grande date parmi les #images.date_available des images contenues dans la catégorie.

Pour l'affichage de la date, au niveau de template/yoga/mainpage_categories.tpl je trouve assez spécifique d'afficher la date de la photo représentative. Il est clair qu'utiliser une date de création est plus pertinent qu'une date de mise à disposition. Seulement voilà, les catégories ne suivent pas forcément une structure évenementielle, la structure peut-être thématique, ou alors des évênements plus longs qu'une journée (un festival, un salon, ...). Une option intéressante serait d'afficher non pas une date unique, mais la date la plus petite et la plus grande. Ainsi la catégorie "2006/septembre/Salon de l'automobile" aurait pour plage : du 30 septembre 2006 au 15 octobre 2006.

Je ne fais que suivre ton idée, en allant un peu plus loin. Personnellement, j'ai une arborescence année/mois/évênement et dans le titre de l'évênement, j'ajoute souvent les numéros de jours dans le mois. Par exemple "2006/janvier/visite à Chatou (le 5)", ce qui signifie le 5 janvier 2006. C'est un peu nul, et donc ta solution serait super. Merci de l'avoir proposée.

Je me permet de déplacer ton topic dans la section "discussion" car on a largement dépassé le cadre de l'utilisation "standard".


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#3 2006-10-22 23:22:29

phgiraud
Membre
2006-08-23
37

Re: Trier les photos et catégories par date de prise de vue

Je ne connaissais pas le last_date, cela pourait être en effet plus judicieux. En ce qui concerne plage de date, cela fait un petit moment que j'ai exactement la même idée. Malheureusement je n'ai pas trouvé le temps pour essayer de l'implémenter. Il faudrait afficher en effet la date de la plus ancienne à la plus récente, avec certaines conditions:
- Il faudrait pouvoir ne pas afficher de date du tout (par exemple, un best-of de photos serait dans ce cas), ou pouvoir préférer la date de mise à disposition
- Si les deux dates sont identiques, on affiche une date unique, par exemple "15 octobre 2006"
- Si les deux dates ont seulement 1 jour d'écart, cela donnerait par exempe "15 et 16 octobre 2006"
- Si on est dans le même mois, à plus d'un jour d'écart, "du 10 au 16 octobre 2006"
- Si dans la même année, "du 30 septembre au 16 octobres 2006"
- Autres cas, on indique les deux années "du 22 décembre 2005 au 5 janvier 2006"

(merci d'avoir déplacé la discussion dans le forum qui va bien ;-)

Hors ligne

#4 2006-10-23 07:19:35

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: Trier les photos et catégories par date de prise de vue

phgiraud a écrit:

- Il faudrait pouvoir ne pas afficher de date du tout

Oui, un #_category.fromto ferait l'affaire. Avec un $conf['display_fromto'] = false; en standard.
Là on vise la perfection...
8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#5 2006-10-23 20:59:25

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: Trier les photos et catégories par date de prise de vue

ok et puisque vous y est refaire un bouton pour l admin aussi comme ca lorsque je veux trier une categories j ai le choix entre AlphaNum et la date ;o)

en gros juste ce poste pour dire merci car j en ai recupere un bout pour chez moi et c est nickel a+


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

#6 2006-10-23 21:07:55

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: Trier les photos et catégories par date de prise de vue

Nicco,

(Je vais t'écrire personnellement "by mail").
A part ça, je crois que z0rglub a déjà cette idée sur les tablettes.

8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

Pied de page des forums

Propulsé par FluxBB

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