Relationer mellan noder

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

Hej,
Jag håller på och utvecklar en skivbolagssajt med Drupal 6.9. Detta är första gången jag håller på med Drupal och jag har stött på lite problem som någon av er kanske kan hjälpa till med lite tips om hur man kan lösa det på.

För att förenkla:

Jag har 2 Content-typer, Artister & Skivor. Sidorna för Artister/Skivor byggs med Views som listar alla med all info (utan detaljvyer).
Sidan för Artister så listar jag alla artister som sagt med följande info: Image, title, body. Jag vill även få in, per artist, alla skivor som har släppts. Försöker jag i Artister's View sida (Display: Page) skapa ett relationship mot Skivor så listar den alla artister lika många gånger som en skiva har släppts med den artisten. Så det verkar jag inte kunna få till på något sätt.

Någon som har något tips gällande ovanstånde variant?

Senare kom jag på att jag kanske kan lösa problemet med att skapa en Attachment-display som hämtar alla skivor baserat på argumentet Artistens node-id. Men där vet jag inte alls hur jag kan få denna Attachment-display att ta emot Artistens node-id.

Något tips?

Finns det något bättre sätt att få till det jag försöker få ihop?

Huvudstrukturen på en Artist-sida:


Image    Title
            Body

            Lista med skivor

Image    Title
            Body

            Lista med skivor

osv.

Skulle uppskatta lite hjälp enormt mycket!

Comments

Kolla efter inställningen

zoo33's picture

Kolla efter inställningen Distinct. Om jag förstår dig rätt så är det den du behöver.

Att få in argument i en attachment-view är nåt som jag tror har buggat fram till precis nyligen. Såg en notering om det i en av de senare utgåvorna av Views.

Nåt man kan göra för att styra vad argumenten är för en view, oavsett om det är en attachment eller nåt annat, är att använda funktionerna för default-värde och/eller validering för ett visst argument. Där har man möjlighet att skriva egen PHP-kod som sätter argumentets värde utifrån saker som sökväg osv – eller vad man vill egentligen.

/ Hannes Lilljequist – SthlmConnection

Låter som en grupperad tabell

itangalo's picture

Det låter som att du skulle kunna lösa ditt problem genom att bara lista skivorna, men gruppera listan på artister.
Kolla in min guide för Views för en beskrivning för hur det kan funka. (Börja på screenshot 57 om du inte är sugen på att bläddra igenom hela.)

Hej!
//Johan Falk, Solna

Jag gjorde om lite och tog

skeletonfriend's picture

Jag gjorde om lite och tog bort attachment-displayen som jag hade skapat. Nu har jag bara en Page-display som listar alla artister med en relation till Skiv-noden. Jag försöker hämta titel-fältet ifrån skiv-noden men det blir tomt, vilket jag inte begriper.

Jag bifogar en bild på mitt views-upplägg så kanske nån kan förklara varför det inte fungerar.

Om du istället listar alla

blackdog's picture

Om du istället listar alla skivnoder, och lägger till nodreferensfältet Artist, och visar det som en (länkad) titel, och sedan grupperar på det får du ut en lista med alla artister och deras skivor.

Problemet blir, som du sa i första inlägget, att visa mer info om artisten i Vyn, och inte få ut den infon för varje skiva.

Ett sätt att lösa det är att göra en field-template för referensfältet. I den templaten skrivs en variabel, $output, ut. Views är smart nog att veta att du inte vill ha ut artist-titeln varje gång, så $output kommer vara tom alla gånger den inte ska visas. Därför kan du i templaten ropa på en funktion, och skicka med $row-objektet (som innehåller node-id't till din artist, bland annat), och hämat ut den övriga infon du behöver.

Hoppas det hjälper!

// Hans Nilsson, Kodamera AB
www.kodamera.se

// Hans Nilsson, Kodamera AB
www.kodamera.se

Jag har verkligen kört

skeletonfriend's picture

Jag har verkligen kört fast...tröttsamt. Min oerfarenhet med drupal som ställer till det.

Jag blir så frustrerad när jag vet precis vad jag vill göra men inte kan lyckas göra det. Jag testade din variant med att välja skivnoden men precis som du skriver så får jag problem om jag vill hämta mer info från artist-noden (vilket jag vill).

Jag förstår verkligen inte varför inte ett relationship inte fungerar. Om jag har en artist och relaterar den till en skiva, så borde jag få ut info?
Skriven sql-satsen själv så är det en simpel join, sen göra en multi-array för att få med sig flertalet skivor till varje artist i en snygg och prydlig lista...

Finns det inget sätt att få till detta med om jag vill ha en relation? Går det på nåt sätt att köra som jag var inne på tidigare, med en attachment-display som hämtar alla skivor mot argumentet artist-nod? Det var min ursprungliga idé...men isåfall hur får jag inte artist-nodens id för varje varv till attachment-displayen?

Ps. Jag hade ju mailkontakt med dig..nästan..via Bobby.

Varför ett relationship

blackdog's picture

Varför ett relationship inte fungerar vet jag inte, det skulle nog vara en bra fråga att ställa i View issue kö. Känns ju absolut som att det borde göra tricket.

Om du gör som jag beskrev ovan får du inte hämta fler artistfält i din View än reference-fältet, och inga relationer. Då bör du bara få en lista artister och deras skivor. Resten av infon om artisten får du hämta i template-filen.

Vet inte hur det skulle funka med attachments, eftersom, såvitt jag vet, man inte kan få en lista med alla artister och dess skivor på en sida och hantera detta med attachments, det skulle isåfall behöva bli en sida per artist.

Ps. just det :)

// Hans Nilsson, Kodamera AB
www.kodamera.se

// Hans Nilsson, Kodamera AB
www.kodamera.se

Okej...jag ska testa det med

skeletonfriend's picture

Okej...jag ska testa det med en template för referens-fältet. Se om jag lyckas skaka fram mer info om varje artist på det sättet.

Syntaxen för att ropa på annan artist-info är den som står i templaten va? $row->{$field->mitt_fält}

Yes, i $row-objektet finns

blackdog's picture

Yes, i $row-objektet finns artistnodens nid som du kan använda i en node_load t.ex.

// Hans Nilsson, Kodamera AB
www.kodamera.se

// Hans Nilsson, Kodamera AB
www.kodamera.se

Hallå. Jag testade nu att

skeletonfriend's picture

Hallå.
Jag testade nu att göra som du sa...jag listar alla skivor, skapade en relation med artist-fältet som förekommer i skivtypen och grupperar på det. Mycket riktigt får jag alla artister med dess skivor. Något irriterande märkte jag att den du skriver ut en titel på sidan (

<

h3>) med artistens namn.

Innan jag gjorde detta hade jag manipulerat Display-Output template-filen för att generera den html jag vill ha, grupperingen per artist kommer du innan all min egna html (se ovan, titel). Så, jag tittade runt lite och såg att får antagligen gå in i som du sa, i mitt referensfält's template fil och leka lite. Men då dök det upp lite problem....

Jag har ett litet speciellt upplägg på hur sidan ska genereras....sidan är uppdelad i en 2-kolumners layout...varannan rad så ska layouten variera mellan vänster och höger, dvs.

[Rad ojämn]

Kolumn 1

Artist-bild

Kolumn 2

Artist-titel
Artist-body
Lista med relaterade skivsläpp

[Rad jämn]

Kolumn 1

Artist-titel
Artist-body
Lista med relaterade skivsläpp

Kolumn 2

Artist-bild

Jag kom åt efter lite trix artistens nodid i node-referens fältets template-fil via node_load(), och kan skriva ut i artistens titel och body. Vet dock inte riktigt hur jag ska göra för att generera bilden...samt hur jag ska dela upp koden i Display-Output Template / Referens-fält Template för att få layouten att funka. Tidigare som sagt, hade jag gjort allt i Display-Output Template-filen...kanske lite snurrig beskrivning men är lite snurrigt för mig hur detta funkar!

Möjligt fulhack...

itangalo's picture

Jag är ute på rätt tunn is här, men tänkte ändå lämna ett förslag.
För vissa teman (så som det fantastiska Zen) får du CSS-klasser som berättar om en rad är udda eller jämn i listor/tabeller. Ett fulhack som kanske löser ditt problem är att bilden både i kolumn 1 och 3, och ha annan data i kolumn 2. Sedan använder du CSS för att dölja alla tabellceller till höger eller vänster, beroende på om det är udda eller jämn rad.

Jag är övertygad om att det finns mer rättläriga sätt att lösa det på, men kanske funkar detta.

Lycka till!
//Johan Falk, Solna

Jag har tagit beslutet att

skeletonfriend's picture

Jag har tagit beslutet att jag inte fortsätter med Drupal som system för sajten jag utvecklar...jag känner att jag fastnar i småsaker hela tiden, som i sig är enkla att lösa om jag skriver koden själv. Tiden finns inte riktigt till för att jag ska traggla med sådana saker. Får ge Drupal ett nytt försök en annan gång när det finns mer tid över.

Jag påbörjade applikationen med CodeIgniter (http://codeigniter.com) som framework och förmodligen fortsätter jag med det...upptäckte även Kohana (http://kohanaphp.com) som är en portning av CodeIgniter, skriven i PHP5 helt och hållet istället för CodeIgniter som stödjer PHP4 och PHP5. Att lyfta över min CodeIgniter-applikation till Kohana är inga problem då upplägget i det stora är nästan identiskt...bara lite småförändringar så kommer allt lira fint. Får se om det blir CodeIgniter eller Kohana.

Jag blev lite missnöjd över att man tappar kontrollen över saker och ting när man använder Drupal...självklart har jag inte erfarenhet av Drupal...det kanske är klockrent när man väl kommer in i det men för mig får det bli att göra det själv!

Tack för alla försök till hjälp iaf.

Lycka till!

itangalo's picture

Välkommen tillbaka till Drupal den dag du har tid för det!
//Johan Falk, Solna

Sweden

Group notifications

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

Hot content this week