Sziasztok!
Van egy "ember" nodetípusom aminek egy date fielddel meg lehet adni a születési dátumát.
Mellé egy computed field mező kiszámolja a kort.
A computed fieldnek 2 működési módja van:
1., a computed fieldben levő php kód futásának eredményét a node beküldésekor eltárolja az adatbázisban
2., a php kódot minden node megtekintékor lefuttatja és az eredményét megjeleníti
Látszik, hogy mivel a kor függ az aktuális adátumtól, ezért nem jó az adatbázisban tárolós verzió csak az "on the fly" phpkódfuttatásos megoldás.
De ekkor viszont a views modul nem látja a computed filedet mert nincs tárolva cck mezőként az adatbázisban. Viszont nekem nagyon kellene, hogy a cck is lássa.
Azt találtam ki, hogy az 1., azaz az eltárolós megoldást kellene választani, de minden nap mondjuk hajnali 0 óra 1 perckor le kellene futtatni a computed field kódokat és eltárolni az értékeket. Ezt vajon hogyan lehet megoldani, mennyire rázós ezt leprogramozni? Van erre kész megoldás? Van valami globális node szerkesztésre megnyitó majd a nodeot változatlanul elmentő (tehát computed field kód lefuttató) modul? :S
Egy tipp
Nem lehet, hogy a views is tud számolni? Tehát a szűrési feltételnél is tudsz ilyet betenni?
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Nem
Megnéztem, csak akkor jelenik meg a mezők közt a viewsben, ha a computed fieldre beállítom, hogy tárolja. Amint kiveszem onnan a pipát, a views már nem kínálja fel a fieldet a megjeleníthető fieldek közt.
mező sminkelésével
Nincs, neked kell megírni. node_load() és node_save() függvényekre keress rá, ezeket kell meghívnod a modulodneve_cron() függvénnyel.
De szerintem ez mehet sminkbe is. Ez itt nem egy "valódi" adat, csak a date meződben tárolt információ egy másfajta megjelenítése, nem sok értelme van emiatt az adatbázist kétszer dolgoztatni.
Hmm
Még nem írtam modult, tán itt az ideje, ha tényleg nincs más lehetőség :)
köszönöm a tippet!
nem is kell a computed field
minek az???
kell egy date típusú cck mező. ott állíthatja be vivien, hogy mikor született.
ezt a mezőt sminkeled egy előfeldolgozóval vagy egy saját .tpl.php -val, amiben a mai dátum és a mező eredeti értéke alapján írsz ki egy értéket.
a (sites/all/modules/)cck/theme könyvtárban találsz egy csomó .tpl.php filet, neked a content-field.tpl.php fog kelleni, azt másold át a sminked mappájába, nevezd át content-field-field_TEMEZŐDNEVE.tpl.php -ra és kedvedre módosítsad a tartalmát.
a nézeteidben (views generálta oldalak, blokkok, akármik) nem fogja használni a drupal ezt a sablont, ezért egy ugyanilyet kellene még készítened views-view-field-TEMEZODNEVE.tpl.php néven is. (lehet, hogy ennek kicsit más lesz a tartalma, de az elv ugyan az)
ahhoz, hogy lássa és használja is a drupal ezeket a sablonokat, miután létrehoztad őket, ürítened kell a smink regisztrációs tárat az ismert módszerek valamelyikével.
én először computed field nélkül próbálnám ezt megoldani, nem lehetetlen, sőt talán még jobb is lesz így az egész szisztéma.
-
clear: both;
Már majdnem
neki is álltam a leírásod alapján, aztán rájöttem, hogy azért nem lesz jó, mert azon kívül, hogy a view-ben a táblázatban ott kell lennie a kornak, azon kívül ugyanitt egy felfedett szűrővel szűrnöm kellene rá. Tehát: listázza azokat, akiknek a kora x és y közt van. Ha viszont tárolni valójában csak date-ként tároljuk, akkor arra date from és date to módon tudok felfedetten szűrni, tehát akkor a usernek kell fejben kikalkulálnia, hogy milyen dátumtól milyen dátumig kell szűrnie, hogy pont azokat a korúakat kapja, ez pedig nem olyan ergonómikus.
from to
semmi akadálya, hogy a felfedett szűrőben felülírjad a megjelenő értékeket ám.
és akkor lehet from 42 éves to 43 éves.. a szűrőben "adatként" attól még a dátum szerepel, hogy x years ago.
de egy cron típusú modul megírása még nulla modulírási ismerettel (php azért kelleni fog) se tart tovább egy fél napnál szerintem. ;)
-
clear: both;