Uppdelning av nod på flera webbsidor "the Drupal way"?

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

Av alla de sajter jag sett så verkar ingen ha "delat upp" en nod på flera webbsidor, utan en nod presenteras alltid i sin helhet. Jag har verkligen letat dokumentation, moduler, tips, exempel, grupper etc i en vecka nu, utan att hitta någon som helst ledtråd. Det här är enkelt att lösa "utanför" Drupal så att säga, men det är inget konstigt behov så det borde finnas en standardlösning, eller?

Tänk er följande:
- En databas med akvariefiskar.
- En speciell content type för akvariefisk.
- Olika delar (typ flikar):
o Allmän info + bild (startsida för en akvariefisk)
o Skötselråd
o Fler bilder
o Kommentarer
o etc..
- En meny att välja vad man vill se.

Poängen är att bara ladda det innehåll som ska visas för att hålla trafiken nere. Annars skulle jag kunna ladda hela noden och gömma det som inte ska synas.

En del fält ligger i noden, en del i databasen och det fungerar fint att blanda både i moduler och templates. Så det är lugnt.

Men vad är standardlösningen, the Drupal Way?
1. Ladda hela noden och gömma det som inte ska synas?
2. Skapa en content type för varje delmängd? (akvariefisk-info, akvariefisk-advice, akvariefisk-images, akvariefisk-comments, ...)
3. Använda Taxonomy med någon modul på ett finurligt sätt?
4. Använda någon eller att par moduler i kombination?
5. Skriva något helt eget, vilket jag är inne på nu. Det blir en hybridlösning som går ut på att en page-akvariefisk-template laddar en div-tagg med innehåll dynamiskt, med hjälp av ajax och php-funktioner, en funktion för varje del om en akvariefisk. Då får jag automatisk noden inläst på sidan och kommentarer kopplade till akvariefisken (noden).
6. Något annat?

Kanske är nr 2 enklast, men kommentarena blir då kopplade till "akvariefisk-comments2, och antalet noder 8 gånger fler. Fast det kanske inte gör något egentligen.

Tacksam för tips!

Comments

Jag tror att problemet

tobiassjosten's picture

Jag tror att problemet delvis ligger i definitionen av 'nod'. En nod kan vara vad som helst, beroende på hur du segmenterar din presentation. Det kan vara hela sidan, inklusive bilder, presentation, kommentarer, etc. Det kan också vara endast presentationen, eller rent av bara begynnelsebokstaven i presentationen.

Du har nog redan hittat "the Drupal Way" i din lösning. :) Dock skulle jag separera informationen mer - iallafall plocka ut 'Fler bilder' och relatera dem individuellt till noden i databasen.

Normalt sett laddas en nods all metadata in när du "startar upp" den. Moduler hookar in i nodens 'load'-stadie och lägger till sin respektive information i objektet. Själva trafiken mellan server och webbläsare styr du sedan över med teman, som du är inne på. Där väljer du vilken data som faktiskt ska skickas och följdaktigen vad som "har laddats i onödan".

Om du dessutom vill effektivisera minneshanteringen ytterligare (utöver separationen jag nämnde ovan) och inte slösa RAM-bytes i onödan kan du självklart skriva dina egna moduler för att ladda in information i nodobjektet endast när du vet att den kommer att användas.


Tobias Sjösten - imBridge

Re

bjhag's picture

Tack för ditt svar!

Förstår jag rätt, att det kunde vara bra att spara varje bild i en egen node (exempelvis content type akvariefisk-image) med en referens till akvariefisk-noden? Det låter bra i så fall, då skulle jag kunna använda Views för att läsa upp bilderna, eller skriva en egen funktion som gör det.

Sitter och klurar på hur jag kan kombinera jQuery med Drupal core (page templates och path module):
1. Användaren klickar på länken /fisk/ciklid (som pekar på /node/68)
2. /node/68 (t ex) laddas med page-fisk.tpl.php
3. I $(document).ready() laddas en div med resultatet från sidan /fisksida1/ciklid (som också pekar på /node/68)
4. Då kommer Drupal ladda /node/68 (igen) men med page-fisksida1.tpl.php

Då behövs i mitt fall en template för varje fisksida (1-8) plus en för fisken, sen är det upp till varje temlplate att fixa till det som ska visas. Avarten är möjligtvis att sidmallarna inte används som sidmallar, utan bara för att generera xml eller html!

Hur låter det?

Hälsningar,
Björn

Hälsningar,
Björn

Modulen Paging tror jag gör

frjo's picture

Modulen Paging tror jag gör det du är ute efter. Ingen release för Drupal 6 ännu men det ser ut som om HEAD mer eller mindre fungerar i 6:an.

Re

bjhag's picture

Tack för tipset!

Ja, det var i princip det jag var ute efter. Jag har läst modul-koden, intressant funktion, den kan bli användbar i framtiden!

Men dock inte till det här såklart. Dels har jag en design att följa, dels är varje sida väldigt stor så jag måste ladda dem var för sig.

Hälsningar,
Björn

Hälsningar,
Björn

Hej! En mycket snygg

solipsist's picture

Hej!

En mycket snygg lösning är att med JavaScript (t ex jQuery) skapa flikar dynamiskt och på så sätt gömma saker, som du skriver. Då ligger allting i presentationslagret (temat) och du slipper joxa med icke-ortodoxa lösningar. Användare utan JS-stöd i webbläsare ser all information och de med funktionssnedsättning tvingas inte att utföra extra steg.

Jag tror inte du skulle göra några märkbara prestandavinster genom att bara ladda delar av en nod. Vad för slags innehåll har noden som är så dyrt att rendera? De ändringar i Drupal core det skulle kräva och problem vid uppgraderingar i framtiden gör det till en lösning som är dyr att underhålla mellan både mindre och större versionsskiften. Du löser prestandaproblem enklast genom cachning. Att hacka Drupal core för att öka prestandan är i de flesta fall ingen bra idé. Att använda en egen cache-lösning är en mycket bättre väg att gå.


Jakob Persson
imBridge - www.imbridge.com

CCK FieldGroup Tabs?

ztyx's picture

En mycket snygg lösning är att med JavaScript (t ex jQuery) skapa flikar dynamiskt och på så sätt gömma saker, som du skriver. Då ligger allting i presentationslagret (temat) och du slipper joxa med icke-ortodoxa lösningar. Användare utan JS-stöd i webbläsare ser all information och de med funktionssnedsättning tvingas inte att utföra extra steg.

Kanske något i stil med modulen CCK FieldGroup Tabs (finns också på drupalmodules)?

Precis vad jag tänkte

solipsist's picture

Precis vad jag tänkte på.


Jakob Persson
imBridge - www.imbridge.com

Stort tack!

bjhag's picture

Jag har labbat lite med JQuery och att gömma och visa flikar enligt era förslag, och det fungerar fint.

Det blir en enkel rak lösning, lätt att utveckla och för andra att förstå sig på. Jag jobbar vidare med det, så tack för de fina råden!

Hälsningar,
Björn

Hälsningar,
Björn

Ett alternativ som inte

blackdog's picture

Ett alternativ som inte nämnts än är www.drupal.org/project/quicktabs som fungerar på samma sätt som Field Group Tabs men använder block och eller views i tabbarna. På så sätt kan du skapa egna block och plocka ut de delar du vill och presentera i olika tabbar.

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

Sweden

Group notifications

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

Hot content this week