Hem >> Bloggar >> Teknikbloggen >> Importera med feeds med entity reference fält som tillåter flera värden

Importera med feeds med entity reference fält som tillåter flera värden

  • Posted on: 9 May 2015
  • By: Pontus

Satt länge och försökte få till en import av noder där ett av fälten är en referens till en annan nodtyp med entity reference.

Problem nummer ett är att importera flera värden i ett fält med Feeds. För att kunna hantera flera olika värden vid importen med Feeds så behövs modulen Feeds Tamper. Självklart måste även Feeds modulen vara installerad och aktiverad annars är allt det här lite meningslöst. För att kunna länka till noder som inte är skapade av Feeds så måste vi även installera Feeds Tamper: String to ID, utan den så strular det om man vid importen använder entity reference till noder som inte är skapade av Feeds, i alla fall så är det så jag har tolkat det. Dessutom så kommer vi att behöva Views modulen.

Så installera modulerna och aktivera dem i admin/modules. 

 String to ID

Feeds Tamper Admin UI kan du inaktivera efter att inställningarna är klara.

För att översätta titeln på målnoden till dess ID så skapar vi en view. Gå till Struktur -> Views och klicka på Lägg till ny vy. Döp den till något lämpligt och under "av typ" väljer du nodtypen som entity reference hänvisar till. Klicka ur att skapa en sida och block för det behöver vi inte, klicka därefter på "Fortsätt och redigera".

Skapa view till feeds för att översätta nod titlar till ID

Under fält lägger vi till fältet "Innehåll: Nid" se till att den inte länkar till innehållet.

Nod ID fältet ska inte länka till innehållet

Och tar bort alla andra eventuella fält. Ändra formatet till html-lista. När det är klart så ska det se ut enligt nedan.

formatet på vyn bör vara html

Därefter lägger vi till ett kontextuellt filter som används för att översätta tteln till ID.

i högserspalten under utökad finns kontextuelal filter. Klicka på Lägg till.

Under utökad, lägg till kontextuellt filter

Sök upp Innehåll: Titel och välj den.

Skapa ett kontextuellt filter för titeln

I nästa ruta som kommer upp väljer vi "Visa: "Åtkomst nekad". Spelar förmodligen inte så stor roll vilken man väljer, däremot "Visa alla resultat för det angivna fältet" så kommer alltid samma nod att länkas om ingen passande hittas. Nu kan vi spara och stänga vyn.

Dags att skapa en tamper för att dela upp fältet som innehåller flera värden, Gå till Struktur -> Feeds importers och där klickar vi på Tamper för den importeraren som det gäller. Har du inte skapat importeraren innan så får du självklart skapa den först. Målet för fältet ska vara "Entity ID of target node", vi använder ID av målet eftersom att vi med Feeds Tamper: String to ID kommer att översätta titeln på målnoderna till deras ID med vyn som vi precis har skapat. 

Under tamper går vi till fältet som vi håller på med. Klicka på "Add plugin". i listan väljer vi "Explode".

Välj explode som plugin i listan

Ge den en kort beskrivning för att komma ihåg vad den gör. Som värdesdelar sätter jag här | men du kan något annat tecken om du vill. 

Ställ in separator att använda mellan värdena

Spara och lägg till ett nytt plugin för samma fält. Den här gångnen väljer vi "Convert string into entity ID".

Välj convert string to id

Som "Lookup method" väljer vi "Views" och längst ner väljer vi sedan vyn som vi skapade tidigare.

Välj Views som lookup method och välj därefter rätt vy längst ner

Nu bör det se ut ungefär så här under vårat fält i listan.

Feeds tamper pluginen aktiverade och klara

Nu bör det fungera att importera och länka till flera olika noder via ett entity reference fält.

 

Kategorier: