Jag har påbörjat en sida där jag ska presentera en mängd geografisk information.
Lite som CIA world facts book men mer specifika platser än länder.
Jag har med hjälp av CCK skapat en "plats" content type där jag lagt in en massa fakta om platsen.
Det jag nu försöker mig på är att få till lite snyggare struktur på de platsnoder som jag skapar. Gruperna fälten i kolumner och få dem att lägga sig brevid varandra osv. Jag har listat ut att jag kan skapa en node-plats.tpl.php fil för att kunna ändra layout och fält för just plats noderna. Det jag inte riktigt greppat är hur får med de fält som ingår i den content type jag skapat. Alltså så att jag kan placera fälten i div-taggar.
Jag gissar att det finns massor av information om detta. Jag har sökt men inte riktigt förstått det hela.
Är det någon som kan berätta hur man gör eller tipsa om någon bra beskrivning om hur man gör?
Vill passa på och tacka för guiderna som finns på den här sidan. Speciellt Johan Falks Screencasts som fick mig att intressera mig för Drupal.
Comments
Devel-modulen är en god
Devel-modulen är en god hjälp, om du aktiverar den får du länkar du kan klicka på för varje sida där du kan se variablerna du kan skriva ut. Att komma på exakt hur variablerna skall anropas är ofta knepigt tycker jag, men det blir lättare när man ser dem :)
Med Devel-modulen kommer även theme developer, den hjälper dig ta reda på vad som genererat ett objekt och tipsar om vilken fil (motsvarande node-plats.tpl.php) som du skall kopiera och vad du skall kalla den för att kunna ändra vad som visas.
Fråga igen om du behöver mer hjälp!
Bra tips
Tack för ett bra tips. Kikade på devel screencasten och nu börjar det klarna lite iallafall.
Som du säger så är det knepigt hur variablerna ska anropas. Jag får fortsätta läsa alla guider och tidigare frågor. Ska försöka hitta en screencast eller ett exempel på hur en node.tpl.php fil kan se ut efter den modifierats för att försöka få en överblick över hur jag ska göra.
En lösning på det hela
Kom gärna med kritik om ni tycker att jag borde ha gjort på något annat sätt, men jag tycker att lösning blev smidig.
Eftersom jag ska ha med alla fält som jag skapat genom CCK och egentligen bara ville åt CSS biten så struntade jag helt i tlp.php filen.
Jag kikade istället med hjälp av firebug vad de olika fälten hade fått för class-namn. Till dessa classer fanns det ingen CSS så jag skapade lite CSS som fixade till placeringarna av fältgrupperna och fälten.
Låter som en bra lösning
Att styra placering av fälten genom CSS istället för att ändra tpl-filer låter som en bra idé, om du kan åstadkomma det du vill med CSS.
De variabler man hittar i vanlig node.tpl är ganska få, men det finns fler att använda. Det finns också sätt att ändra vilka element som är med i exempelvis $content, och vilken ordning de kommer. Men klarar man sig med bara CSS har man mindre att krångla med senare, och det är ju bara bra.
(Nu är jag ingen ninja när det gäller att tema Drupal, men det ska ju inte hindra mig eller andra att säga saker...)
Hej!
//Johan Falk, Solna
PS: Tack för det uppmuntrande orden om mina screencasts. Ser fram emot att leverera fler guider!
Min idé föll
Idén med att bara ändra med css föll pga att alla fält inte får unika classer. T ex så får body ingen unik class (iallafall inte för mig) .
De fält som finns från början i en node, t ex title och själva textfältet (heter det fältet body?) får ingen unik class så om jag ändrar css för dem så kommer det ändras på alla typer av noder.
Så jag tror jag är tillbaka till ruta 1 och måste lära mig att göra en egen node.tpl.php fil.
Jag har lyckats skriva ut ett par fält men har problem med t ex ett countryfält som är av typen node reference. Där få jag bara fram en siffra och inte själva länken som leder till information om landet som ligger i en annan node.
Jag får dyka in i dokumentationen igen och försöka lära mig.
$field_mitt_falt_rendered
CCK-fält skriver du bäst ut med hjälp av variabler som
$field_mitt_falt_rendereddär "mitt_falt" är namnet på fältet. Annars är det en bra idé att försöka klara sig med CSS. Tänk på att du kan slopa body-fältet helt och istället använda ett CCK-fält om det gör saken lättare./ Hannes Lilljequist – SthlmConnection
CSS vore bäst
Tack för tipsen.
Problemet med att bara köra CSS var ju att standardfältet body skrivs ut i en paragraf utan någon unik class om jag använde den vanliga node.tpl.php.
Om jag istället gör ett CCK fält som ersätter vad jag hade tänkt använda det vanliga bodyfältet till så får den en unik class och vips så blev det lätt att ändra i CSS. Det var så du menade va? Det är ju ett riktigt smart tips. Det ända som jag inte kan ändra då är titeln men troligtvis så kommer titleln att se ut lika ut för varje content type så den behöver jag inte ha unik.
Jag ska testa detta sätt ikväll.
Jag hade fått ordning på content template (det fungerade inte i min första testinstallation) och hade nog kunnat lösa det med hälp av det ikväll men ingen blir mer nöjd än mig om jag bara behöver fixa med CSS.
Tack än en gång för tipsen.
en fortsättning på detta
Jag har efter ett par veckors inläggning av information kommit tillbaka till det här problemet och får det inte att fungera.
Har sökt, kikat i manualer och på screencasts och andra trådar men är troligtvis jag som är dum.
En diskussion sa att man skriver
<?phpprint($node->content['field_my_field']['#value']);
?>
Tipset om $field_mitt_falt_rendered får jag inte heller att fungera (men kanske skriver det fel).
Jag har ett vanligt textfält med städer field_stader och har valt att visa labeln. Hur gör jag på enklaste sätt för att skriva ut det fältet?
Har lyckats skriva ut både label och fältet men då skrivs det ut oavsett om fältet är tomt och det vill jag inte.
Har du provat så
Har du provat så här?
<?php print $field_my_field_rendered ?>Om du skriver ut label och text separat behöver du lägga hela den delen i en if-sats som kollar om det finns data i variabeln.
Helt otroligt !!
Det funkar. Tack tack.
Lösningen har ju stått här sen 20/3 men jag har misslyckats med att veta hur jag ska skriva ut det.
Ha en bra helg / Martin