Haszprus

Application logic vs megjelenítési réteg

©   Haszprus   |   fejlesztés

A főoldalon mindig annyi napon írt bejegyzés jelenik meg, ahányat kiválasztasz. Például március 21 van, 4 napot akarsz látni, de 19-20-án nem volt bejegyzés, akkor ezeket a dátumokat fogja megjeleníteni a blog: március 21, 18, 17, 16. Ez azért van, hogy ne kaphass üres főoldalt, mert az kurva hülyén néz ki.
(Ennek a megvalósítása egyébként annyiból áll hogy picit tágabb dátumhatárral hajtom végre a lekérdezést, és abbahagyom a megjelenítést ha már elértem a kellő napszámot. Szvsz nem különösebben erőforrásigényes, hiszen csak néhány plusz row sql-ből, amiknek nagyrésze nem jut el még egy mysql_fetch_array-ig sem.)

Namost ott tartok hogy smartyban már megvan a postok template-je, zsír ugyanúgy néz ki mint az onlyphp megoldás (leszámítva hogy pillanatnyilag elvetettem a kapcsolódó bejegyzések feature-t), de kezdjem a template-ben számolgatni hogy hány napi postot jelenítettem meg eddig? Ez nem a megjelenítési réteg feladata lenne szerintem…

Egyébként nem érzem a Smarty által nyújtott tiszta kódot. Pl. a bejegyzések tpl-je 50 sor, mert tele van mindenféle if-else-ekkel annak megfelelően hogy hány komment érkezett, trustedonly-e a bejegyzés, trusted-e a júzer, adminisztrátor-e a júzer, kategóriák ciklusa, van-e címe a bejegyzésnek, ki kell-e írni a dátumot (vagy már egyszer kiírtuk, amit ráadásul a megjelenítési rétegben kell assignolnom!)… És mindemellett a php-ben kőkeményen megvannak a háttérmunkálatok, smiley-konvertálás, magyar dátumformátum előállítása… Igen, a Smartyban is van valami dátumformátum stuff, de asszem az nem támogatja a hónapnevek szabad alakítását. Vagy igen? Ennek egyrészt utánanézek ha hazajöttem, másrészt ha valaki vágja akkor belökheti, ezzel időt spórolva nekem

Szóval nem érzem azt a tisztább szárazabb érzést amit egy template rendszer elvileg ígér. Túl sokat reméltem a külön megjelenítési rétegtől, vagy valami egyéb okozza a problémát?

A posts.tpl-t el lehet kérni tőlem tanulmányozásra, véleményezésre.

RSS: hozzászólások ehhez a bejegyzéshez 11 hozzászólás

Szólj hozzá Te is!


de kezdjem a template-ben számolgatni hogy hány napi postot jelenítettem meg eddig? mihez kell tudnod, hogy hány napi posztot jeleniccs meg?

dátum megjelnitéshez nemkell hackelni szerintem phpból, smarty modifier tuti tud, vagy ha nem, irsz hozzá egy plugint (smartyhoz, amit bárhol feltudsz a késöbbiekben használni)
smile szintúgy, összedobsz egy egyszerü plugint, és örülés van.
de persze belegányolhatod a php-ba is mind, és akkor majd ha valamelyik más projected kapcsán esetleg smilet akarsz konvertálni, akkor guberálhatod a php-ből a kodot

ha meg nemérzed a smarty tisztább szárazabb érzését, akkor nézz meg valami hardcre php frameworkot

mihez kell tudnod, hogy hány napi posztot jeleniccs meg?

Én azt gondoltam egyértelműen leírtam a bejegyzés elején Ha a user 4 napnyi bejegyzést kér, akkor nem kivonok a dátumból 4 napot és azt kapja (esetleg a nagy semmit), hanem 4 olyan napot kap, amin volt bejegyzés. Ez nem számítható anélkül, hogy adatbázisban körülnézek a helyzetet illetően.

1. Namost akkor vagy csinálok egy külön előkészítő queryt, és annak a resultjaiban kezdek turkálni (ami azért szerintem elég nagy overhead),
2. vagy menet közben számlálom hogy megvolt-e a 4 nap, abbahagyhatom-e már a bejegyzések listázását.
3. Persze azt is csinálhatnám hogy számolok napi 1 bejegyzéssel és amennyiben a query nem tér vissza minimum 1*napokszáma db rekorddal, akkor intézek egy újabb queryt, ezúttal időlimit helyett sorlimittel.

Az első megoldás nem nyújtja azt a sebességet, a második megoldás a template miatt zűrös, a harmadik pedig nem nyújtja azt a funkcionalitást.

Ezeknek a plugineknek majd utánanézek, teljesen jó ötlet írni (vagy beszerezni) egyet-kettőt, feltételezem nem is nehéz.

Hármas megoldásra szavazok.


előrelépés, subquery
SELECT * FROM tabla WHERE idopont > (SELECT idopont FROM tabla GROUP BY idopont ORDER BY idopont DESC LIMIT 3,1)

nem vártál sokat, egyszerűen még nem ismered és nem tudsz vele együtt gondolkodni, ne hagyd abba, tapasztald ki és meglátod a szépségeit... először én is anyáztam miatta, később amikor hozzá kell majd nyúlnod az oldalhoz, hogy megváltoztass a megjelenésben valamit áldani fogod a sorsot amiért a Smarty-t választottad...

nrg Subquery, gecc!!!
Ez nem jutott eszembe.
(a blog első 2,5 évében nem volt rá lehetőségem)

Thx nrg, szép megoldás.

Hedge Hedge igen én is merem remélni hogy még csak nem állt rá az agyam De rajta vagyok Mondjuk utólag problémás áttervezni egy site-ot, nyilván könnyebb helyzet lenne from scratch építeni valamit.

opcionálisan a limit offsetjével, illetve a relációjellel, illetve a megfelelő formátummal játszadozni
(off, ezért jó topbloggernek lenni, nemtucc valami fasságot, kiposztolod, és jönnek is a megoldások )

Tudom, a napokban kőkeményen használtam erre a blogot De tényleg fasza!

Közben implementáltam is a cuccot date_formatra meg nem volt szükség mert szerencsére kapásból van dátum mezőm a db-ben

Ez viszont lehet hogy azt jelenti hogy betolhatom a template-et máris?

Hát from scratch biztosabb a dolog, mert eleve smartyra készíted fel a rendszert. De én már nyomtam be php-nuke-os oldal alá is smarty-t Az sem volt semmi. Sajnos új motorra ott nem volt idő és egy elég nagy dizájnváltást kellett végrehajtani. Kompromisszum kellett... De működött!
Hozzászólásod:


Nem vagy bejelentkezve, de...

A)
hozzászólhatsz regisztrálatlanul...

B)
ha regisztrálva vagy, bejelentkezhetsz...