Azt hogy lehet megcsinálni, hogy egy tartalom típushoz egy előre definiált css alapján generálja a tartalmat kinézetileg? Tartalom sminkelésre nincs szükségem.
alapértelmezésben a különböző tartalomtípusokhoz tartozó nodeok nem kapnak egyedi osztályokat, mindenki a 'node' osztályt kapja és kész. vannak sminkek amik nyomnak extra osztályokat is a kódba, ebben császár a zen.
legegyszerűbb, ha csinálsz a típusodnak saját tpl.php -t, amiben saját classt pakolsz a div class="node" mellé még. (persze ez template butchering, legokosabb, ha az előfeldolgozóval extra változóként nyomod a sminkbe a saját classaidat és azt rakod a node class helyére a node.tpl.php -ban)
tehát ez lesz:
<div class="node my-type">..</div>
és akkor tudod célozni csak az olyan típusokat így:
/* my-type tipusokban a h2 */.node.my-type h2 {
color: red;}
"persze ez template butchering, legokosabb, ha az előfeldolgozóval extra változóként nyomod a sminkbe a saját classaidat és azt rakod a node class helyére a node.tpl.php -ban"
Ez a mondatot nemigazán értem. Kicsit részleteznéd?
arról van szó, hogy lehet ugyebár minden tartalomtípusodnak saját tpl.php -ja. ez azt jelenti, hogy például a node-story.tpl.php az csak 'story' típusú tartalmakra vonatkozik, azok előállításához használja majd a drupal, a node-mytype.tpl.php -t mondjuk pedig 'mytype' típusúakhoz.
ez eddig rendben is van. ha valamelyik tartalomtípusnak akarsz egyedi megjelenést, lemásolod a node.tpl.php -t, átnevezed a másolatot node-.tpl.php -ra és kedvedre módosítod.
igenám, de ez a megoldás már viszonylag kis számú egyedi .tpl.php megléte mellett is nagyon idegesítő tud lenni, ha valami olyat akarsz változtatni, ami minden típusra vonatkozik, akkor az összes tpl.php -ba bele kell túrnod. van olyan, hogy 'preprocessor function' nevezetesen a template_preprocess_node. ez állítja elő a változókat amik a node.tpl.php -ban jelen lesznek. rugalmasabb lesz a rendszered, ha ezekben az előfeldolgozókban módosítod/addsz hozzá új változókat és az egyedi tpl.php -k számát minimálisra próbálod szorítani, mert akkor csak egy helyen kell a dolgokat karbantartani. (az előfeldolgozóban)..
jelen esetben pl:
alap node.tpl.php -ban (ami a /modules/node alatt van) szerepel egy ilyen sor:
ide kéne neked még egyedi class az alapján, hogy milyen típusú az adott node.
akkor írjunk még hozzá a template.php -hoz egy ilyen függvényt:
function SMINKNEVE_preprocess_node(&$vars){$vars['extranodeclass']='type-'.$vars['node']->type.' nid-'.$vars['nid];
}
ennek hatására _minden_ node-TYPE.tpl.php -ban elérhető lesz egy $extranodeclass változó ami egy sztring és a típust meg a nodeID -t tartalmazza, csak bele kell íratni a forrásba, az eredeti részhez hozzáírva kicsit, így:
nem gyalog hozzuk létre a node-story.tpl.php -t és abba gyalog írjuk bele azt hogy class="story" hanem beletoljuk minden nodetípusba egy mozdulattal. ha változtatni akarunk egy helyen kell majd, nem 20 külön tpl fileban.
"a node.tpl.php fajlt a sajat smink konyvtarunkban hozzuk letre es ne az eredetit (/modules/node/node.tpl.php) modositsuk."
A smink könyvtárban is van eredetileg egy node.tpl.php, és a modules/node/ helyen is.
Most akkor a modules/node/ helyen lévő tpl.php-t be kell másolni a smink tpl.php-ba?
Utána ezt a node.tpl.php-t kell módosítani, hozzá írni a preprocess függvényt?
1. Mindig a sites/all/themes/sminknev konyvtarban kell a node vagy egyeb templatet modositani. (Sot ha egy contrib sminket hasznalsz, akkor igazan ennek egy alsminkjeben lenne illo).
Szoval minden modositas csakis sajat fajlokban a /sites konyvtaron belul tortenik. A Drupal core es contrib fajlokat nem modositjuk..
2. a smink template.php fajlba kell a preprocess fuggvenyt irni..
Köszi a válaszokat! Sikerült megoldani a sima node-TYPE.tpl.php létrehozásával, majd a div class="node my-type" megoldással, majd erre hivatkozva css-ből. A másik variációt még emésztgetem :-)
hát pedig ez maga a tartalom sminkelése :)
alapértelmezésben a különböző tartalomtípusokhoz tartozó nodeok nem kapnak egyedi osztályokat, mindenki a 'node' osztályt kapja és kész. vannak sminkek amik nyomnak extra osztályokat is a kódba, ebben császár a zen.
legegyszerűbb, ha csinálsz a típusodnak saját tpl.php -t, amiben saját classt pakolsz a div class="node" mellé még. (persze ez template butchering, legokosabb, ha az előfeldolgozóval extra változóként nyomod a sminkbe a saját classaidat és azt rakod a node class helyére a node.tpl.php -ban)
tehát ez lesz:
és akkor tudod célozni csak az olyan típusokat így:
-
clear: both;
tartalmat sminkelnék :)
Köszi a gyors reagálást!
"persze ez template butchering, legokosabb, ha az előfeldolgozóval extra változóként nyomod a sminkbe a saját classaidat és azt rakod a node class helyére a node.tpl.php -ban"
Ez a mondatot nemigazán értem. Kicsit részleteznéd?
hát, megpróbálhatom
arról van szó, hogy lehet ugyebár minden tartalomtípusodnak saját tpl.php -ja. ez azt jelenti, hogy például a node-story.tpl.php az csak 'story' típusú tartalmakra vonatkozik, azok előállításához használja majd a drupal, a node-mytype.tpl.php -t mondjuk pedig 'mytype' típusúakhoz.
ez eddig rendben is van. ha valamelyik tartalomtípusnak akarsz egyedi megjelenést, lemásolod a node.tpl.php -t, átnevezed a másolatot node-.tpl.php -ra és kedvedre módosítod.
igenám, de ez a megoldás már viszonylag kis számú egyedi .tpl.php megléte mellett is nagyon idegesítő tud lenni, ha valami olyat akarsz változtatni, ami minden típusra vonatkozik, akkor az összes tpl.php -ba bele kell túrnod. van olyan, hogy 'preprocessor function' nevezetesen a template_preprocess_node. ez állítja elő a változókat amik a node.tpl.php -ban jelen lesznek. rugalmasabb lesz a rendszered, ha ezekben az előfeldolgozókban módosítod/addsz hozzá új változókat és az egyedi tpl.php -k számát minimálisra próbálod szorítani, mert akkor csak egy helyen kell a dolgokat karbantartani. (az előfeldolgozóban)..
jelen esetben pl:
alap node.tpl.php -ban (ami a /modules/node alatt van) szerepel egy ilyen sor:
ide kéne neked még egyedi class az alapján, hogy milyen típusú az adott node.
akkor írjunk még hozzá a template.php -hoz egy ilyen függvényt:
ennek hatására _minden_ node-TYPE.tpl.php -ban elérhető lesz egy $extranodeclass változó ami egy sztring és a típust meg a nodeID -t tartalmazza, csak bele kell íratni a forrásba, az eredeti részhez hozzáírva kicsit, így:
nem gyalog hozzuk létre a node-story.tpl.php -t és abba gyalog írjuk bele azt hogy class="story" hanem beletoljuk minden nodetípusba egy mozdulattal. ha változtatni akarunk egy helyen kell majd, nem 20 külön tpl fileban.
-
clear: both;
megjegyzesek
a node tipusa elerheto a node.tpl.php-ban tehat arra nem kell kulon preprocess fuggveny, de mint pelda arra hogyan kell preprocess-t irni arra jo..
a node.tpl.php fajlt a sajat smink konyvtarunkban hozzuk letre es ne az eredetit (/modules/node/node.tpl.php) modositsuk.
ezt nem igazán értem
"a node.tpl.php fajlt a sajat smink konyvtarunkban hozzuk letre es ne az eredetit (/modules/node/node.tpl.php) modositsuk."
A smink könyvtárban is van eredetileg egy node.tpl.php, és a modules/node/ helyen is.
Most akkor a modules/node/ helyen lévő tpl.php-t be kell másolni a smink tpl.php-ba?
Utána ezt a node.tpl.php-t kell módosítani, hozzá írni a preprocess függvényt?
thx, Jocó
preprocess hova
1. Mindig a sites/all/themes/sminknev konyvtarban kell a node vagy egyeb templatet modositani. (Sot ha egy contrib sminket hasznalsz, akkor igazan ennek egy alsminkjeben lenne illo).
Szoval minden modositas csakis sajat fajlokban a /sites konyvtaron belul tortenik. A Drupal core es contrib fajlokat nem modositjuk..
2. a smink template.php fajlba kell a preprocess fuggvenyt irni..
Köszönöm
Már értem.
Még egyszer köszönöm a gyors választ.
thx, Jocó
sikerült
Köszi a válaszokat! Sikerült megoldani a sima node-TYPE.tpl.php létrehozásával, majd a div class="node my-type" megoldással, majd erre hivatkozva css-ből. A másik variációt még emésztgetem :-)