Dans le cadre d’une refonte d’un site auquel je participe nous essayons de développer une fonction de navigation « suivant » / « précédent » un peu particulière.
Je vais essayer d’être clair et concis
Nous avons une homepage qui affiche les articles & brèves des 2 derniers jours où il y a des publications. Ce qui donne ça en test >> http://blogotheque.hback.net
Le site est en cours de développe donc le header, le player (où BOoz devrait nous donner un coup de main) ne fonctionne pas pour le moment
Le principe des boutons est « simple »
En fonction de la date du dernier ou du premier article de la page, on place leur date respective en variable dans le lien « précédent » ou « suivant »
Cette variable est récupérée au début de la page de destination via #ENV
Le bouton « précédent » doit afficher les articles des 2 jours précédents ceux affichés sur notre page où il y a eu des publications : il fonctionne
Le bouton « suivant » doit afficher les artilces des 2 jours suivants ceux affichés sur notre page où il y a eu des publications et c’est de là que viens mon pb.
Si vous vous rendez sur cette page : http://blogotheque.hback.net/spip.php?page=jour_suiv&varjour_suiv=2007-11-18 et que vous cliquez sur le bouton « jours suivants » vous vous rendrez compte que l’on affiche les 2 derniers jours où il y a eu des publications et non les 2 jours suivants le 18 novembre. Après cherché dans tous les sens j’ai du mal à comprendre d’où pourrait venir mon souci :x
Pour éviter de faire un mail de 3 kilomètres voici où vous pourrez trouver les squelettes
page « jours suivants » : http://blogotheque.hback.net/squelettes/jour_suiv.html
J’ai le sentiment que le soucis se trouve au niveau de mon squelette « jours suivants » sur ma première boucle <BOUCLE_jour1(ARTICLES){0,1}{!par date}{DATE(date)>#ENV{varjour_suiv}}>
Quelqu’un peut il me mettre sur une piste pour que j’arrive à gérer ce petit réglage ?
Si tu passes la date dans l'url, alors tu peux utiliser le critere
{jour_relatif=0} les articles du meme jour que la dtae de l'url, et
{age_relatif < 3} les articles de moins de trois jours avant la date
dans l'url.
Si tu passes la date dans l’url, alors tu peux utiliser le critere
{jour_relatif=0} les articles du meme jour que la dtae de l’url, et
{age_relatif < 3} les articles de moins de trois jours avant la date
dans l’url.
Quelqu'un peut il me mettre sur une piste pour que j'arrive à gérer ce petit réglage ?
Salut, je n'ai pas regardé ce que tu as fait, mais les flèches sur cette page Lectures bibliques quotidiennes - Taizé font ce que je pense tu veux faire (seulement ils avancent/regressent une semaine - dimanche à dimanche à la fois).
Mathieu Genelle wrote:
> Pourrais tu m'envoyer ton fichier "mes fonctions" afin que je puisse
> checker tout cela et faire les adaptations nécessaires ?
Comme ça t'intéresse, voici toutes les données nécessaires pour voir comment ça marche (stp répondre à la liste - sinon d'autres qui sont éventuellement intéressés perdent le fil !).
function last_sunday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("last Sunday", $mydate);
return date('Y-m-d', $mydate);
}
function next_sunday($mydate) {
$mydate = strtotime($mydate);
$mydate = strtotime("next Sunday", $mydate);
// In older versions (PHP 4) use this instead,
// "next Sunday" jumps/ed more than a week ahead:
// $mydate = strtotime($mydate) + (86400);
// $mydate = strtotime("this Sunday", $mydate);
return date('Y-m-d', $mydate);
}
function diffdays($mydate) {
// gives difference in days from present time
// positive result means date in future & vice-versa
return datediff('d', date('Y-m-d'), $mydate);
}
(Mais il y a un bug mentionné par Comment #1 lié au changement d'heure deux fois par an. J'aimerais chercher autre chose. Quelqu'un connaît une fonction PHP qui donne correctement la différence entre deux dates ?)
En fait la partie qui utilise le filtre |diffdays ne sert qu'à limiter la plage de dates consultables (éviter l'explosion du cache entre autres) à 30 jours dans le passé, 40 jours à l'avenir. Si tu n'as pas besoin de ceci, tu peux laisser tomber.