Views för menyer

Events happening in the community are now at Drupal community events on www.drupal.org.
heeke's picture

Hur fixar man till Views för menyer?
Jag har skapat ett eget tema och skulle vilja ha olika utseende på olika menyer.
Vist, det går att fixa med CSS men jag skulle vilja göra det med Views istället av den anledningen att jag annars måste skriva samma CSS för alla menyer som ska ha samma utseende.
Jag antar att det är något enkelt jag missat.

Jag har bara Views modulen installerad, inga undermoduler.

Tack på förhand
/Henrik

Comments

Precisera dig!

TBarregren's picture

Det verkar som att du friskt blandar äpplen och päron. :-)

Du skriver att du vill ha olika utseenden på olika menyer. Vad menar du med utseeden? Menar du färg, form och annat som man normalt åstadkommer med CSS? Eller menar du struktur, ordning och annat som man normalt åstadkommer med HTML?

Du skriver att du vill ge menyerna olika utseenden med hjälp av Views modulen. Jag förstår inte hur du tänker dig att Views modulen skulle kunna användas för att styra renderingen av menyer. Är det verkligen menyer du avser? Eller tänker du på block som genereras av Views?

Försök att beskriva problemet i så exakta ordalag och så detaljerat som möjligt. Jag hjälper dig gärna, men först måste jag förstå vad du vill ha hjälp med. :-)


Thomas BarregrenWebbredaktören

Ok, jag kanske är fel ute

heeke's picture

Ok, jag kanske är fel ute men jag ska försöka förklara.

Jo, det handlar om utseende i frågan om CSS.

Menyerna skapar jag ju som vanligt, men sen skulle jag enkelt vilja välja hur menyerna ska formateras utifrån en färdig mall (CSS)

När jag använde Views för en lista med "Nyheter" så fick jag ju på köpet färdiga "class-namn" att använda mig av för formatering.
Denna View gjorde jag som en Block-view.

Det jag önskar åstadkomma är att på något sätt kunna styra att vissa menyer formateras enligt en mall och andra efter en annan.

Med "bara" CSS som hjälp så blir jag tvungen att ändra CSS-filen varje gång jag skapar en ny meny. Jag skulle vilja ha en färdig mall som jag istället kan tilldela till repektive meny inifrån admin-gränssnittet i drupal.

Menyerna ger ju automatiskt ett block så det är väl egentligen blocken man ska tilldela olika mallar, men vad jag kan hitta så är inte detta möjligt med bara Views modulen.

Hoppas det blev tydligare. :)

En view (utan tillägg och i

solipsist's picture

En view (utan tillägg och i grundutförande) listar noder utifrån villkor, det är vad den gör, inget annat. Som sådan kan den användas för att visa länkar till noder, något som kan ingå i en meny men eftersom Views inte är till för att göra navigationsmenyer finns ingen menyeditor som till menu.module.

Om du installerar Firebug i Firefox och kollar på ett block kommer du se att det har ett ID. Detta ID är unikt för blocket och ändras inte. Du kan använda det för att anpassa utseendet på menyn som det blocket innehåller. Jag har gjort på detta sätt många gånger för att ge olika menyer olika utseende.

Exempel:

/***********vv--- Unikt. Antagligen ett annat nummer på din sida. /
#block-menu-75 ul.menu {
/
CSS för din meny */
}

Jakob Persson
Webbredaktören - www.webbredaktoren.se

Mycket tydligare fråga

TBarregren's picture

Tack för att du tog dig tid att precisera din fråga. Nu förstår jag vad du är ute efter, och kan förhoppningsvis ge ett bra svar.

Du kan inte använda Views modulen för att åstadkomma det du är ute efter. Views-modulen är i grund och botten ett verktyg för att bygga SQL-frågor ("query builder") och presentera resultatet i form av block och sidor. Views har alltså ingenting att göra med menyer, och kan inte användas för att åstadkomma det du önskar.

På en punkt är din fråga fortfarande något oklar. Du skriver att "vissa menyer formateras enligt en mall och andra efter en annan". Jag förmodar att du med detta menar att en i Meny-modulen uppsatt meny, t.ex. Navigation, alltid skall få en och samma CSS klass i HTML-koden, medan en annan i Meny-modulen uppsatt meny, t.ex. Primary links, alltid skall få en annan fix CSS klass. Detta kan du åstadkomma genom att i template.php "överrida" theme_menu_tree().

Men om du kan tänka dig att redigera din CSS så kan du istället modifiera selektorerna på så sätt att stilen appliceras på en meny som ligger i ett angivet block. Varje block får nämligen ett unikt id-attribut som aldrig ändrar sig. För att ta reda på detta id kan du gå in och titta i den genererade HTML-koden. Ett annat sätt att ta reda på id:et är att gå till admin/build/block och hovra över länken configure för blocket med menyn. I din webbläsares statusfält kan du nu se en URL, t.ex. http://www.example.com/admin/build/block/configure/menu/107. Blockets id-attribut bildas genom att lägga ihop block med URL:ens sista två elementen med - mellan, t.ex. block-menu-107.

Jag hoppas mitt svar kan vara till någon hjälp.


Thomas BarregrenWebbredaktören

Tack för svaren.

heeke's picture

Jag inser att jag snärjde in mig lite på fel spår och att views inte är lösningen.

I mitt fall handlar det om att meny-block placerade i en viss region (tex sidhuvud osv) ska ha ett visst utseende, men om samma meny placeras i en annan region så ska den ha ett annat utseende.

Jag fick ändra lite i min grundläggande struktur (page.tpl.php) och stil-mall (styles.css) för hela sidan för att få till det.

Istället för att använda menyblockets id-attribut för att bestämma utseendet så använder jag nu id-attributet för regionens omslutande div-tag för att styra det hela.

Då behöver jag aldrig tänka på att redigera css-mallen om jag vill lägga till eller flytta ett meny-block.
Bara genom att placera meny-blocket i en region gör då att rätt stil appliceras.

/Henrik

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: