Pages: 1
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
$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
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
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
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
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
* 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:
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
(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".
Hors ligne
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
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-)
Hors ligne
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+
Hors ligne
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-)
Hors ligne
Pages: 1