Konkrét tartalomtípus linkeinek színváltoztatása

Astutus képe

Üdv!

Azt szeretném megkérdezni, hogy van-e mód arra, hogy egy konkrét tartalomtípus hivatkozásainak színét megtudjam változtatni css szinten?

Eddig annyit sikerült elérnem, hogy minden tartalomtípus hivatkozás színét megváltoztattam:
.node .content a{
font-family: Candara;
color: #1C441C;
}

Lehet ezt egy konrétumra szűkíteni?

Pl. a story tartalomtípus minden tartalmánál zöld színű legyen a hivatkozás, egy másiknál meg az alapszín legyen.

A segítséget előre is köszönöm!

Fórum: 
dyra képe

letöltöd a Skinr modult http://drupal.org/project/skinr majd a CCK -nál külön CSS osztályt határozol meg a tartalomhoz, majd a CSS -ben beállítod hozzá a kívánt beállításokat. Sajnos nem minden thema -val jó a skinr nekem eddig általában működött.

A másik megoldás ahogy én nézem minden oldaltípusnak van külön CSS osztálya

node-type-blog
node-type-page

A CSS -ben ezeket külön konfigurálhatod.

0
0

honlapom http://dyra.eu/

nevergone képe

Csak ezért feltenni modult, amikor a megfelelő CSS kiválasztóval elérhető...
Ha pedig nincs meg a CSS kiválasztani, egy minimális PHP kóddal a template.php -be, és már meg is lesz az, ha szükséges, holnap teszek ki példakódot.

0
0
Astutus képe

Annak örülnék, mert amíg van más megoldás én se szeretnék külön modult felrakni miatta. Próbáltam a dyra által javasolt második megoldást, a node-type-page-el variálni, de nem vagyok túl jártas a css-ben és nem sikerült.

0
0
nevergone képe

Akkor valószínűleg ott a baj, érdemes lenne ezirányú ismereteidet frissíteni. Sokat segítene, ha adnál linket az oldaladhoz, mivel lehetséges, hogy a sminked már tartalmazza a megoldást.

0
0
zschopper képe

Teljesen jogos a felvetés, lehet hogy már az oldalad belerakja a node osztályát a kimenetbe, akkor meg csak a css-t kell piszkáld. :)

0
0
zschopper képe

Én se szívesen hekkelek idegen modulba.

Egyszerűen azért, mert a köv. frissítés garantáltan felülvágja a módosításomat.
Attól is be bírok fordulni, ha elfelejtem a .htaccess-t kivenni a frissítésből mielőtt felrakom és felülvágja a módosításaimat.

Viszont, hogy ontopic is legyek: én csinálnék egy altémát, bemásolni a mappájába szépen a template.tpl.php-t és node.tpl.php-t (akár node-story.tpl.php néven is), és az első div osztályába belerakni a node típusát.

template.tpl.php-be:

function <smink_neve>_preprocess_node(&$variables) {
    $variables['nodetype'] = $node->type;
}

A node.tpl.php-ben nagyjából ez lesz az első div sor:

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

A $status-hoz hasonlóan hozzá lehet adni a $nodetype változót (amit a template.tpl-ben hoztunk létre).

Mondjuk így:

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

(A két kódblokk között a változás a lényeg, ezt kell neked is beleírni a témádba.)

Nekem ez a legtisztább.

0
0
nevergone képe

Miért kell ehhez altéma? A template.php mehet a jelenlegibe is, a node.tpl.php-t sem kell változtatni.

0
0
zschopper képe

Mert ha nem saját a téma, akkor a köv frissítés felülvágja amit csinált.
Ha szerencsés, akkor emlékszik rá, hogy mit hol javított.

Nálam pont ez volt a baj régebben, hogy volt egy oldalam, ami nem volt publikus, csak homokozónak használtam tesztelni ezt-azt. Aztán az egyik drupal frissítés felülvágta a .htaccess-t, és keresgéltem mindenfelé, mire rájöttem, hogy hol a hiba.

A .htaccess is bátorítja a módosítást, de ugyanakkor mindegyik verzióval érkezik új.

0
0
Jenő képe

Elég a node-tartalomtipus.tpl.php létrehozása és egy div class-ba beletenni a szükséges azonosítót. Mivel úgyis tudja, hogy milyen tartalomtípushoz hozza létre a sminkfájlt, így azt is tudja mit kell oda beírni, nem kell a preprocess-t piszkálnia.
Utána gyorstár ürítése és CSS-el lehet célozni a linkeket.

0
0
zschopper képe

Tulajdonképp én is erre akartam elmenni (vagy preprocess és általános node.tpl, vagy node-story.tpl), aztán valahogy lemaradt.

0
0
Astutus képe

Annyira sikerült jutnom, hogy a tartalomtípus egy konkrét oldalán megtudtam változtatni a linkek színét, betűtípusát az alábbi css kóddal:
#node-type-allatok_a117 a{
font-family: Comic Sans MS;
color: #000;
}

(a 117 az alább említett elefant.html azonosítója (gondolom))
A baj ott van hogy hiába törlöm ki a 117-et a tartalomtípus azonosító után, mert akkor marad minden a régiben. Ezt igazából nem nagyon értem.

A tartalomtípus gépi neve: allatok_a. A smink amit használok: Newsflash. Az oldal címe pedig: http://www.allattar.hu, ahol a példa található http://www.allattar.hu/allatok/elefant.html legalja.

Most létrehoztam egy allatok_a.tpl.php-t, amit a smink mappájába raktam. Jelenleg ez van benne:

 print $picture
A többi a szokásos

Igazság szerint kicsit megzavarodtam. Hálás lennék ha valaki ezt a sok okos választ összefoglalná és leírná mint ha egy dedóshoz beszélne. :-)

A segítséget hálásan köszönöm!

0
0
Astutus képe

"Most létrehoztam egy allatok_a.tpl.php-t, amit a smink mappájába raktam. Jelenleg ez van benne:"

Valamiért kiszedte, szóval azt tettem bele amit zschopper leírt.

0
0
aboros képe

nem tudom, hogy közvetlen a newsflasht használod e vagy rendesen csináltál egy saját alsminket ami a newsflash gyereke és azt masszírozod (ezt kéne).. ha közvetlen a newsflasht használod, annak a node.tpl.php -ját, ha saját sminked van, akkor másold oda a newsflashből a node.tpl.php -t és azt szerkeszd. az első sort cseréld erre:

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

ettől szépen lesz a típusának meg az idjének is megfelelő osztály a divben. ha mondjuk a tartalom típusod neve 'allatok' (amit machine namenek megadtál az kell ugye) akkor cssből így csinálod pirosra abban az összes linket:

.node-type-allatok a {
color: red;
}

ha mondjuk az elefánt node összes linkjét akarod variálni, akkor megnézed szépen, hogy mi a nidje, mondjuk legyen 42 és akkor így:

.node-42 a {
color: red;
}

emiatt felesleges két helyre belepiszkálni. ha összetettebb lenne a helyzet, mondjuk több node-TYPE.tpl.php -t használsz valamiért (nem ezért..) akkor lenne érdemes az egész osztálybetolást inkább a preprocess_node -ban egy változóba rakni, hogy egy helyen legyen...
0
0

-
clear: both;

Astutus képe

Köszönöm a segítséget, sikerült megcsinálni. Bár miután beírtam és másoltam mindent, a szín maradt a régi (a többit már lehetett változtatni), de miután a smink több css-t tartalmaz, arra már én is rátudtam jönni mit és hol kell módosítani. Szóval minden oké, hála mindenkinek.

Köszönöm a segítőkészséget!

0
0