Views "Split"

Hej

Er der nogen der kan hjælpe med et lille views "split"...

Jeg har følgende. En content type, der indeholder tekst, dato, billeder og embedded media. og det virker fint. Jeg vil så gerne når jeg præsenterer denne type på min side at alle billeder og embeded media bliver vist i min right sidebar og teksten bliver vist i mit content area. Dog skal der kun vises de billeder og embedded media fra den node man sidder og læser.

Nogen der kan guide lidt i gennem hvordan jeg får det sat op i views?

Beermann

bjaxelsens billede

Det er et meget klassisk problem, du sidder med der.

Du kan angribe det på to måder:

1) Brug modulet Panels til formålet. Det er skabt til lige præcis at håndtere den slags. Så kan du have forskellige views, et i indholdsområdet (hvor du skal se teksten), og et andet view, der viser billeder eller andet i højrespalten for den aktuelle side.

2) Programmér en blok til at vise indholdet i højrespalten. Det er lidt tricky, fordi du da skal have blokken til at hive sidens billeder ind, og som udgangspunkt ved en blok ikke, hvad for en side, den bliver vist på. Det kan du dog få den til ved at hente URL-oplysninger om den aktuelle side, fx med arg(0), arg(1) og arg(2) og bruge det til at indlæse node objektet, hvor du kan få fat i dine billeder/mediefiler.

Løsning 2 er nok det nemmeste, hvis du ikke i forvejen har noget andet at bruge Panels til. Panels er super godt, men det er også meget komplekst.

Vh Bjørn

beermanns billede

Jeg har på nuværende tidspunkt ikke brug for panels har kigget på det men syns det er for meget for så lidt. Kan du evt. uddybe eller henvise til nogen exempler på løsning 2?

Tak

Beermann

bjaxelsens billede

Du laver bare en ny blok. I blokken får du fat i dit node objekt med php-koden:

$node = node_load(arg(1));

Dit node objekt skulle nu indeholde hele indholdet til din side inkl. billeder.

Du skal så samtidig sørge for, at blokken kun bliver aktiveret, når man får vist en node. Det kan du gøre ved at tjekke at arg(0) == 'node', at arg(1) er et tal, og at arg(2) ikke er sat (dermed sikrer du, at blokken fx ikke vises, når man er inde på redigeringen af en side).

Jeg kender ikke lige nogen eksempler på nettet, som jeg kan henvise til.

beermanns billede

Hmm.. Jeg må kigge på det, kan det passe at jeg virkelig selv skal kode en stump block selv, kan det ikke gøres via views og arguments?

Sune

bjaxelsens billede

Ja, det kan godt passe - det er en svaghed ved Drupal. Jo, det virker lidt "noller".

beermanns billede

Jeg prøver dit forslag senere, mange tak for hjælpen.

Beermann

beermanns billede

Sidder og leger lidt med det nu, jeg kommer så til at se at jeg bruger pathauto, så de ting jeg ønsker at "splitter" hedder ikke node/292 men fks. /event/2010/june/"the-name-of-the-event" gir det nogen forskel i denne sammenhæng?

Og så er jeg ikke sikker på hvordan man laver en ny block er det i templateten jeg skal lave det eller skal jeg bruge add block i webinterfacet.

Beermann

bjaxelsens billede

1) Jeg mener at arg() funktionen får fat i den adresse, der ligger omme bag ved den pæne URL, så det burde ikke være noget problem.

2) Du laver den bare i webinterfacet, det er det nemmeste, men du kan også lave den i et modul.

patsbradys billede

Det kan også lave det via et view, hvor du så kalder det view i en blok i højre side af sitet.

  1. Opret et view m. standardindstillinger og row style "Fields"

  2. Tilføj "Argument" Node: NID (så henter den kun ting fra den aktuelle node

  3. Indstillinger i Node:NID skal sættes som "Provide default argument" og "Node ID from URL", Validator skal sættes til Basic validation.

  4. Tilføj de "Fields" du ønsker skal vises i dit view. Jeg har eks. et CCK field med video, så der vises noget video, der hører til den aktuelle node.

Se eventuelt her: http://www.draftday.dk/draft/profiler/eric-berry-s-tennessee

  1. Husk at du skal have en template, hvor du viser content i midten og den block, der skal vise dit view i højre side.
beermanns billede

Hej patsbrady

Jeg kunne heller ikke få det til at passe at man ikke kunne gøre det med views, det virker bare som det skal...

Mange tak for hjælpen.

Beermann