A minap futottam bele egy olyan megoldásra váró feladatba, mely enyhén szólva feladta a leckét:
A megrendelő úgy szeretné, hogy a tavalyi év bejegyzései csak ‘Y‘ paraméterrel, míg az ideiek ‘M d‘ paraméterrel jelennének meg, mert a dizájn megkívánja ezt a kis hack-et.
Írtam is egy primitív szkriptet, ami természetesen nem működött a loopban, pedig elméletben jó. Aztán addig kínlódtam, míg rájöttem: az adatbázisból kell lekérdeznem a dolgokat, különben hiába is fáradok.
Íme a megoldás, melyet a loopban a <?php the_time('M d') ?> helyére kell tenni:
1 2 3 4 5 6 7 8 | <?php $year = date('Y'); if (mysql2date("Y", $post->post_date) != $year) { the_time('Y'); } else { the_time('M d'); } ?> |
Az első sorban beállítjuk az évet. Ebben az esetben mindig az aktuális év lesz a viszonyítási alap. Ha az első sort lecseréljük erre: $year = '2005'; akkor csak a 2005-ös esztendő bejegyzésének dátumformátumát érinti a változás.
A második sorban kivesszük az adattáblából a bejegyzéshez tartozó évszámot. Ha ez megegyezik a $year-ben beállított értékkel, akkor az egyik, ha nem, akkor a másik dátumformátumot kapjuk eredményként.
Ügyesebb php-guruk még turbózhatják ezt a kis szösszenetet, nekem csak ennyire futotta, a célnak viszont tökéletesen megfelel.