På den här hemsidan finns det flera olika bloggar som ska ha sina egna kategorier (taxanomitermer). Första tanken för att lösa det var att skapa en innehållstyp per blogg, för att då associera varje innehållstyp med en vokabulär. Problemet med den metoden är att det blir många innehållstyper att hålla reda på. Det är bättre att ha en innehållstyp och sedan kategorisera upp dem med olika termer. Så här löste jag det med hjälp av modulen Reference field option limit.
Vi har en innehållstyp, Bloggar. Den kategoriseras med hjälp av vokabulären Bloggar. Därefter har vi en till vokabulär som heter Kategorier innhållet i den skall begränsas efter vad vi har valt i vokabulären "Bloggar".
Säg att vi har 2 alternativ i vokabulären Bloggar. Blogg1 och Blogg2. Till Blogg1 har vi kategorierna äpple och banan, till Blogg2 har vi Volvo och BMW.
När man skapar en ny node och väljer Blogg1 så kommer enbart värden äpple och bana att vara tillgängliga under kategorier.
Man kan också göra samma sak med olika innehållstyper, processen är densamma men istället för att skapa vokabulärer och termer, så skapar man innehållstyper och noder. Tillexempel kan vi ha nodtyperna pizzerior, städer och län. När man lägger till en ny pizzeria och väljer ett län så visas enbart städerna som finns i det länet.
Först installerar vi modulerna som behövs.
Ladda ner senaste versionen av alla modulerna, packa upp dem och flytta katalagorna till "sites/all/modules/"
tar -xf entityreference-7.x-1.1.tar.gz
tar -xf entity-7.x-1.3.tar.gz
tar -xf reference_option_limit-7.x-1.4.tar.gz
tar -xf ctools-7.x-1.3.tar.gz
mv entity entityreference reference_option_limit ctools sites/all/modulesGå till hemsidan och aktivera modulerna.
Bocka i de modulerna som behövs.
Klicka därefter på "Spara inställningar" längst ner på sidan.
Skapa vokabulär för att kategorisera noderna
Gå till Struktur -> Taxanomi.
Klicka på "Lägg till vokabulär".
I nästa ruta döper vi den nya vokabulären, här döper jag den till bloggar.
Därefter lägger vi till några termer genom att klicka på "lägg till termer".
Döp termerna till något lämpligt efter ditt användningsområden. Skapa minst 2 så att vi kan testa att det fungerar genom att byta term.
Lägg till vokabulär två, kategorier
Nu ska vi skapa vokabulären i vilken värdena kommer att begränsas efter vad vi har valt i vokabulären vi precis har skapat. Den här vokabulären kommer att ha ett fält av typen Entity Reference som skapar kopplingen mellan de här två.
Efter att vi har skapat några termer i Bloggar går vi tillbaka och lägger till en till vokabulär.
Här döper jag den till Kategorier.
Vokabulären Kategorier måste öppnas när vi har sparat den för att lägga till ett nytt fält. Fältet som vi ska skapa är av typen Entity Reference. Det fältet kommer alltså att vara kopplingen mellan Bloggar och Kategorier.
Klicka på redigera vokabulär.
Klicka på fliken "Hantera fält".
Längst ner finns en tom ruta där vi kan skriva. I det första fältet ger vi den en etikett, vad vi vill att fältet skall heta. Namnet är valfritt, jag har döpt den till "Referens bloggar" för att jag ska komma ihåg att den är kopplingen mellan Kategorier och Bloggar.
Därefter väljer vi fälttypen "Entity Reference" i rullisten, i sista fältet väljer vi vilken widget vi vill använda när vi väljer termern i Bloggar. Här har jag valt rullgardingsmeny.
När vi klickar på spara längst kommer nedanstående fönster där vi konfigurera det nya fältet.
Target type skall vara Taxanomiterm eftersom att det är det som vi skapadei föregående kapitel, men kan likagärna vara en innehållstyp, kommentar, användare mm. Nästa fält är läge, här bestämmer vi hur värdena skall hämtas, "Simple" fungerar bra i det här fallet. Annars kan man välja att skapa en View och filterar genom den.
Därefter väljer vi vilken vokabulär vi ska hämta värdena ifrån. Vi väljer då den som vi skapade i föregående kapitel, Bloggar. Under Sort by kan man välja om man vill sortera listan. Sista alternativet, "Render views filters as select list" låter vi vara som den är. Klicka på "Spara fältinstllningar".
Oj då samma ruta öppnas igen? Nä inte riktigt samma, vi måste ju välja om vi vill ha ett standard värde och hur många olika värden vi ska kunna spara.
Så, i förvalt värde väljer vi i rullisten om vi vill ha något standard värde. Kryssrutan under "Limit this field's options ..." är spärrad och går inte att markera. Vi ska ej heller göra det nu, vi ska dock snart använda den i innehållstypen.
Hur många värden ska vi tillåta? Det beror på hur vårat användningsområde ser ut. I mitt fall så vill jag att varje kategorieterm enbart ska kunna associeras med en Bloggterm. Men i exemplet med pizzerior, orter och län så kanske det skulle kunna finnas en ort som finns i två län (okej jag vet det kan det inte. Men låtsas nu att det går så att mitt exempel stämmer) då skulle man vilja tillåta att en ort ska kunna associeras med två län. Då finns samma ort med två gånger men under två olika län.
Därefter går vi längst ner och klickar på spara.
Därefter skapar vi några termer i den nya vokabulären. Det går till nästan likadant som förra gången med den skillnaden att vi måste välja en term för fältet "Referens Bloggar", eller var du har döpt den till. Termern som vi väljer här är den termen som den kommer att associeras med.
Skapa några stycken för varje vokabulär som du skapade i "Bloggar".
Skapa innehållstypen
Nu är det snart klart. Dags att lägga till fälten till innehållstypen där de ska användas. Antingen skapar du en ny eller så redigerar du en befintlig innehållstyp. Gå till Struktur -> Innehållstyper.
Välj sedan att antingen skapa en ny eller att redigera en befintlig. När du är inne på innehållstypen som skall användas så klickar du på fliken för Hantera Fält.
Listan över alla befintliga fält kommer då upp och längst ner kan vi dels lägga till ett nytt fält eller lägga till ett befintligt fält. Börja med att lägga till ett befintligt genom att välja Entity reference fältet som är kopplingen mellan taxanomivokabulären Bloggar och Kategorier. När du har valt fältet så kan man döpa ändra etiketten/namnet om man vill. Klicka sedan på spara längst ner.
När du har sparat så kommer ett nytt fönster för att ändra inställningarna för fältet, gå längst ner och klicka på spara igen.
Tillbaka till listan över fält där vi nu lägger till ett nytt fält, döp fältet, hör döpte jag det till Kategorier. Välj Entity Reference som typ. Under Widget kan vi välja mellan kryssruto samt rullist, Autocomplete finns det två varitanter av också men de fungerar tyvärr inte. Har försökt att hitta en lösning men där har jag gått bet. Tyvärr kan man inte heller lägga till nya Kategorier lika enkelt som man kan göra med "standard" Autocomplete, man måste manuellt gå till Taxanomin och lägga till kategorierna för att de ska finnas tillgängliga.
Klicka på spara.
Inställningarna för fältet kommer upp.
Under Target type väljer vi Taxonomiterm, eller innehåll om det är andra noder du ska koppla ihop med.
Läge låter vi vara kvar på standard (Simple).
Target Bundles väljer vi vokabulären som vi ska hämta värdena ifrån, här Kategorier.
Klicka på Spara.
Då kommer det upp mer inställningar.
För att begränsa värdena så bockar vi i "Limit this field's option according to matching field values".
Bocka även i båda bockarna under "Matching fields", den första väljer vilken koppling vi skall använda. Här finns det bara en men om vi skapar nya kopplingar mellan andra termer och noder så kommer det att finnans mer. Den andra (Hide all options if nothing is selected in the matching fields) gör så att det inte finns några alternativ i Kategori fältet förräns vi har valt ett värde för Referens Bloggar.
Ändra antal värden om du vill kunna lägga till mer än ett. Här har jag valt obegränsat.
Slutligen klicka på spara, längst ner.
Testa att det fungerar
Klart! Kvarstår bara att testa så att det fungerar. Lägg till en ny nod av den innehållstypen som du skapade/redigerade. Till att börja med kollar vi utan att välja något värde i referensfältet. Det ska då inte finnas några alternativ under Kategorier.
Därefter väljer vi ett alternativ för Referens Bloggar och med hjälp av Ajax så kommer det att dyka upp de termer som är kopplade till den referensen som är vald.
Nackdelen med Entity Reference Field är som jag skrev i början att man inte kan använda autocomplet fältet, som jag personligen tycker är kanon. Då autocomplete fältet inte fungerar så kan man således ej heller skapa termer när man skriver. Man får antingen skapa termerna innan man skapar noden eller efter att man har skapat noden och sedan redigera och lägga till termerna.
Det som kvarstår att lösa är att kunna begränsa vilka användare som får publicera i en viss blogg. Har några ide´er som jag skall testa för att se om jag kan få till en bra lösning.