Tartalom típus smink

fgabor képe

Sziasztok!

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.

Drupal verzió: 
Fórum: 
aboros képe

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;
}
0
0

-
clear: both;

fgabor képe

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?

0
0
aboros képe

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:

<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block">

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:

<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block <?php print $extranodeclass; ?>">

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.

0
0

-
clear: both;

Pasqualle képe

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.

0
0
joco38jp képe

"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?

0
0

thx, Jocó

Pasqualle képe

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..

0
0
joco38jp képe

Már értem.
Még egyszer köszönöm a gyors választ.

0
0

thx, Jocó

fgabor képe

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 :-)

0
0