Det här kan bli ganska jobbigt att förklara men jag ska göra ett försök.
Jag utvecklar för tillfället en sida vars syfte är att lista priser på alkoholhaltiga drycker på olika krogar i sverige. Sidan ska kort och gott innehålla följande saker:
- Vokabulär med drycker
- Recensioner av drycker
- Information om resturanger
- Relationer till vokabulär för drycker som beskriver vilka drycker som finns på resturangen samt vilket pris de har
- Recensioner av resturanger
Tanken är att man ska kunna söka efter resturanger genom att specifiera lägsta ölpris, ciderpris och så vidare. Man ska också kunna leta efter ställen som säljer specifika drycker. Väl inne på resturangnoden ska man kunna få information om öppettider, resturangens plats och så vidare.
För tillfället har jag implementerat följande:
- Ett vokabulär med alla städer som de olika resturangerna ligger.
- En egen content type (resturanger) med egna fält tillagda med hjälp av cck-modulen.
- En egen content type för drycker med information om drycker, även här med fält definierade med cck-modulen.
- Ett vokabulär för drycker byggt som ett träd där man kan sortera in dryckerna i olika typer (öl, vin, cider, sprit...). Resturangnoderna läggs till under drycktermerna.
Problemet ligger nu i att limma ihop det här.
Min approach är följande:
- Vokabuläret städer och vokabuläret drycker är kopplat till resturangnoderna
- Dryckesinformationen kopplas till respektive dryck i vokabuläret.
Dryckerna kommer då att visas i en lista när man redigerar eller skapar en ny resturangnod.
Jag hade därefter tänkt mig att skapa en specialdesignad modul som ger en möjlighet att göra följande:
- Specifiera pris för de drycker man har valt i listan
- Om en dryck saknas ska man kunna lägga till den termen på direkt från redigera/skapa-formuläret och därefter specifiera pris för den.
Jag kommer att använda views för att skapa trevliga filtreringsmöjligheter.
Detta är alltså min idé. Min bekantskap med drupal är relativt ung så därför frågar jag er vad ni tycker om det här. Det vore trevligt att höra några tips från några riktiga drupalveteraner ;)
Comments
Ett publiceringssystem är inte en databas
Det är möjligt att du har en fungerande modell här, men jag lyckades inte riktigt hänga med genom hela, så jag kan inte uttala mig om det (vad menas t.ex. med "Resturangnoderna läggs till under drycktermerna.")
Men generellt tror jag man skall akta sig för att betrakta Drupal som en databas. Det du beskriver är enkelt att bygga en riktig, fristående databas för, och då slipper du bekrymra dig över den (ur databassynvinkel) artificella uppdelningen mellan vokabulär och noder.
När databasen finns, kan det möjligen vara dags att plocka in Drupal för att koppla till den och bygga själva användargränssnittet - det kan ha sina fördelar om siten också skall ha annat innehåll (t.ex. restaurangrecensionerna), om inte så tror jag man kommer enklare undan på andra sätt. Undrar om inte Google Apps skulle vara intressant för dig.
Och, när jag nu ändå är i färd med att vara negativ är det en sak i din plan jag undrar över:
"beskriver vilka drycker som finns på resturangen samt vilket pris de har"
Det låter som ett mycket stort jobb, både att lägga in det första gången, och att hålla uppdaterat. Har du någon plan för vem som skall göra det?
Drupal är inte ett webbpubliceringssytem (det är mer än så ;)
Det är klart jag skulle kunna lägga till egna tabeller och skapa moduler som hanterade dem och sedan helt låta bli att använda nod- och vokabulär-systemet, men det skulle ta mycket längre tid än att bara använda cck och skriva en widget för den funktionalitet jag behöver, dessutom blir det mycket enklare att modifiera nuvvarande funktionalitet.
Drupal vill faktiskt inte rubricera sig som ett webbpubliceringssystem, utan snarare som en webbpubliceringsplattform, om jag förstått det rätt ;)
Taxonomy-modulen är till för att just organisera data efter termer och det är precis det som jag hade tänkt använda den till. Fördelen med att använda sig av taxonomy är att jag kan använda mig av en uppsjö av moduler som kan hjälpa mig att organisera innehållet, skapa sökformulär och så vidare utan att själv behöva göra en modifikation i varje modul jag vill använda för att de ska använda mina egna tabeller. Varför uppfinna hjulet en gång till?
Just informationen om resturangerna kommer att kunna läggas till och redigeras av alla registrerade användare, i äkta wikistyle. Övrig information, alltså recensioner av drycker och resturanger kommer att skrivas av en särskild grupp som jag har förtroende för. Jag är medveten om att detta antagligen kommer leda till att folk kommer att posta skit, men jag har satt på revisionssystemet så det borde inte vara så svårt att gå tillbaka. Sedan finns ju också system för att skydda mot spam och annat som mollom och akismet.
//Fabian Sörqvist
Helt korrekt, man kan
Helt korrekt, man kan betraka Drupal som ett publiceringsverktyg men för den tekniskt bevandrade är det betydligt mer än så. Drupal bygger på ett väldigt kraftfullt ramverk med god abstraktion vilket innebär att vad Fabian försöker göra här är en "typisk Drupal-grej".
Vad som bör vara taxonomitermer och vad som bör vara noder är ofta en filosofisk men även praktisk fråga. Att låta varje dryck vara en egen nod-typ och sedan klassificera in dem i kategorier (vin, vodka, likör, läsk) med termer låter som en bra väg att gå.
Du skriver också om att skapa en geografisk vokabulär och sådant har jag mixtrar med en del. Ett problem jag sett i detta är att termer kan inte associeras till termer, varje term i det geografiska trädet är av samma slag. Om man kan associera termer till termer kan man göra sökningar av typ "hitta alla städer i Uppland". Skälet till att detta är ett problem är att geografiska indelningar ofta innehåller begrepp som saknar geopolitisk motsvarighet men som folk använder i dagligt tal, exempel: brittiska öarna, nordeuropa, baleariska öarna (Ibiza mfl), västkusten. Hur dessa ska passa in i en taxonomi som ska vara hierarkiskt korrekt (land -> län -> landskap -> stad) kan vara lite knepigt. :)
Jakob Persson
Webbredaktören - www.webbredaktoren.se
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog
Location
Jag har inte testat Location-modulen själv, men det låter som att den skulle kunna göra ett hyggligt jobb för att hålla redan på platser i landet. Den utgår från postnummer och kan (vad jag förstår) presentera områden som ligger i närheten av varandra.
Som modulen ser ut nu verkar det vara lite lagom instabilt (men också under utveckling). Äldre versioner har funkat vettigt, så jag gissar att de håller på att bygga om modulen för att funka bättre med CCK. Nån som har mer erfarenhet av den och kan berätta hur den funkar i svenska förhållanden?
//Johan Falk, Uppsala
Det här kan kanske vara
Det här kan kanske vara lite inspiration: http://www.sushikartan.se/
Man får ju bara tacka och
Man får ju bara tacka och bocka för tipset! ;) Den där sidan hade en del av det min sida ska ha (även om min ska kunna ge plats för mer information), och hade ett hyffsat bra upplägg dessutom!
//Fabian Sörqvist
lite liknande projekt
Hej! Intressant tråd och öppnade lite tankar för mig kring hur man kan tänkt kring drupal som är helt nytt för mig. Jag har funderingar på att försöka göra lite program baserat på livsmedelsverkets livsmedelsdatabas. Jag har importerat databastabellen till samma db som min drupalinstallation. Nu vet jag inte riktigt hur jag ska hantera den, dels är livsmedlen kategoriserade på olika sätt: råvaror, halvfabrikat etc... baljväxter, kött etc.
Sen vill jag i framtiden kunna hämta livsmedel med näringsvärden för att kunna lägga upp recept. t.ex. 5dl mjölk, 2msk vetemjöl etc.. och utifrån detta vill jag kunna implimentera olika algoritmer för visning av näringsvärden t.ex. mg järn per recept jämfört med dagliga rekommendationer (som på mjölkpaketen) eller t.ex. beräkna ett genomsnittsvärde på samtliga näringsämnen i förhållande till vikt eller energiinnehåll etc. Vidare så vill jag enkelt kunna ställa upp sökkriterier av olika slag, t.ex. leta upp livsmedel med minst 30g kolhydrater samt högt 30g fett och 50mg vitamin-C per 100 gram. Och jag vill också kunna bygga egna relationer mellan livsmedlen allteftersom t.ex. "glutenfria alternativ till vetemjöl" där man kan lägga till nya livsmedel allteftersom.
Jag har inga klara algoritmer för hur de olika näringsvärdena ska hanteras idag utan behöver enkelt kunna testa massa olika algoritmer och visningslägen av databasfälten. Med andra ord så behöver systemet vara mycket flexibelt för att leka med och göra ändringar på hur jag kan söka upp livsmedel, automatiskt infoga dem i recept och göra olika beräkningar som ska visas tillsammans med recept eller livsmedel.
Jag har funderat på om databastabellen ska vara som den är och sen göra egna moduler med databasfrågor. Men det verkar omständigt att skriva ny modul för allt jag vill testa när drupal verkar vara så flexibelt med views. Har funderat på om jag borde göra om ett livsmedel till egen node typ och sen använda cck för att definiera fält för alla olika näringsämnen och vidare använda taxonomi för kategoriseringen av livsmedel. Kanske någon som är lite grymmare än mig på drupal har anmärkning om det är en bra ide att göra om ett livsmedel till node eller hur man egentligen borde hantera livsmedelsdatabas i drupal för att få det flexibelt?
Låter som ett jätteprojekt
Jag får börja med att gratulera till Livsmedelsverkets databas! Det måste ses som en framgång att få tag på den, och slippa mata in allt för hand. :-)
Ditt projekt låter en del som något jag funderade över när jag blev vegetarian (för sisådär tio år sedan). Jag gav upp idén delvis för att det skulle vara ett sånt jäkla jobb att mata in all data (och delvis för att jag inte visste hur jag skulle hantera den på ett bra vis).
Om du har ett någorlunda begränsat antal näringsvärden låter det som en rimlig lösning att göra noder av de olika livsmedlen. Men har du massor av data för varje livsmedel kommer du att få en bisarr mängd fält att fylla i och allt kommer bara att se jobbigt ut. I så fall låter det rimligare att skriva nåt eget program för att söka i databasen, men jag är i så fall inte säker på vilken uppgift Drupal skulle fylla...
Jaja. Mest ville jag säga att projektet verkar kul (men också ha en betydande risk att bli stort och komplext på nolltid).
Lycka till!
//Johan Falk, Uppsala
yer
Jo, mycket möjligt att jag misslyckas med det här, verkar jobbigt. Men jag är intresserad, så ska se hur långt jag kommer iaf. Livsmedelsverkets databas kan alla hämta från deras hemsida.
Hehe, du behöver nog inte räkna så mycket på maten om du är vegetarian så länge du inte äter alltför enformigt, mer än för intresse i sådana fall :)
Hur menar du med att det blir så många fält att fylla i, det borde väl gå att definiera fälten i cck och sen importera hela tabellen på en gång? Jag vill ha med alla näringsvärden och all övrig data, och eventuellt lägga till någon/några egna kategorier, vilket kan vara jobbigt eftersom det är över 2000 livsmedel redan. Däremot så tror jag inte att jag kommer lägga till så mycket nya livsmedel annat än om jag kommer över bättre databaser än livsmedelsverkets.
http://www.miljomat.se räknar ut näringsvärden på recept utifrån samma databas. Jag vill dock ha det lite enklare för användare, hoppas på att det ska gå att ha autocomplete för att söka upp livsmedel och lägga till ett recept. Och istället för att lista näringsvärden som miljömat vill jag presentera enskilda "genomsnittsvärden" uträknade från alla näringsämnen, så att man inte ska behöva vara expert för att se hur näringsrik en måltid är i förhållande till energiinnehåll. Och det är här jag tror det blir mest problem eftersom jag måste testa olika sätt att räkna på, så det måste gå ganska smidigt, det händer mycket med forskningen på det området och är väldigt svårt att räkna ut relevanta livsmedelsvärderingar :) Därför som jag hoppas på att drupal och views ska kunna göra mycket av jobbet där och samtidigt underlätta koppling mellan recept och livsmedel.
MItt förslag är att få
MItt förslag är att få till det så att man kan ha ett variabelt antal fält knytna till livsmedelstaxonomin. Jag är inte säker på om det finns någon modul för detta men det skulle ju i princip vara en modifikation av content taxonomy som tillåter användaren att välja det antal fält som behövs för att få med själva receptet.
Detta går lite emot hur cck är konstruerat då ett fält i regel är en kollumn i databasen, men man kan skapa sin egen cck-modul som hanterar all databashantering själv. Modulen i fråga kan bli aningen komplicerad, så om du inte är väl bevandrad i programmering så kanske inte detta alternativ är för dig.
edit:
Här kan du få mer information om hur en cck-modul fungerar
//Fabian Sörqvist
ty
Tackar för tipset, verkar intressant.. ska se om jag har huvud nog för att förstå hela :)