D3 les 02

Feeds

Dit thema behandelt enkel interessante toepassingen om inhoud en inhoudstypes over te zetten van één bestaan of site naar een ander. We verkennen Feeds, Node Export en Features. Ze zijn zeer populair (soms 1,5 miljoen gebruikers). Je zult zien waarom dit is. Drupal op zijn best.

Feeds

klik hier voor de startbestanden. Een Feed is een opsomming van teasers die op een site beschikbaar worden gesteld in een een bepaald formaat. RSS en XML RSS kunnen aldus gelezen worden omdat er een logische opbouw aanwezig is in deze formaten. Als je abonneert op een Feed en je hebt een Feed lezer dan krijg je een bericht telkens er een nieuw Feed item bijkomt of wijzigt. Het is daarom vooral interessant voor onderwerpen die tijdsgebonden zijn zoals nieuws en blogs. Je herkent een Feed aan het gekende oranje logootje.

Op deze pagina  zie je rechts een blokje dat zijn gerief rechtreeks van Drupal.org haalt. (https://www.drupal.org/news) Je doet dit met de Aggregator module. De inhoud werd met de Feeds module van Drupal geïmporteerd. Dit is dus andere koek. De items zijn dus omgevormd tot nodes in onze eigen Drupal. Vanaf nu kan je dus alles doen wat je met nodes kunt doen. Views maken, sorteren, filteren,..

De werkwijze is tamelijk simpel omdat deze Feeds module eigen inhoudstypes Feeds en Feed-items heeft aangemaakt. Ook de Feeds importer staat klaar.

In een tweede voorbeeld halen we ons gerief van een Disney achtige site: http://feeds.feedburner.com/parkeology Deze site peilt naar de 50 populairste figuren aller tijden in de Disney parken.

Voor het overzicht klik hier. Merk op dat de nodes werden aangemaakt en dat de inhoud nu bij klikken op de teaser, full aanwezig is.

Sommige Feeds zijn in het XML formaat gemaakt. Hier is er zo één: http://www.cinenews.be/nl/cinema/filmagenda/nieuwe-films-deze-week/ als je onderaan op de feed de koppeling kopieert en bvb opent in bvb Notepad ++ dan kan je de XML en zijn structuur zien.

Merk op dat er een link tag staat. In ons inhoudstype hebben we dit (nog) niet en daarom maken we dit aan. Bij de import wordt dit dan ook meegenomen.

Bij klikken op de lees verder... Je ziet dat de link mooi meegekomen is. Ik heb wel ook een link veld gebruikt. Deze zet de tekst om in een link... wat had je gedacht?

 

De Feeds module wordt tegenwoordig echter meer gebruikt voor de import van gegevens via een CSV bestand. Als je weet dat een Excel file naar een CSV kan omgezet worden, dan weet je welke mogelijkheden dit opent. Ik maak een simpel inhoudstype aan met onderstaande velden. Het gaat over boeken en hun schrijvers.

Uit een lijst met honderd boeken (beste aller tijden...) haal ik er hier een vijftal via een Feeds import in mijn Drupal. Als het met 5 lukt, dan gaat het voor allen... Ik heb ooit 14000 nodes zo geïmporteerd....

Er is ook een taxonomie importer. dit doet dus hetzelfde als met nodes. Je hebt daar een andere importer voor nodig omdat nodes en taxonomie andere tabellen zijn. Ik voeg aan mijn 'boeken' een taxonomieveld toe, maar importeer eerst de items in een woordenlijst.

Zelfs subcategoriën zijn mogelijk.

Vervolgens... de import in de nodes van de termen. Ook afbeeldingen kan je importeren. Maak dat de afbeeldingen reeds geüpload zijn en verwijs er naar in de csv file. Bingo. Merk ook op dat ik ook een tekstveld heb geïmporteerd en dit in Full HTML mogelijk is. Velden met meervoudige inhoud kan je via de 'explode' functie van Tamper inmporteren. Bekijk eens alle mogelijkheden van Tamper...

Verder... een moeilijke... Voor veldverzamelingen (field collection) heb je een extra importer nodig. Veldverzamelingen zijn inderdaad wat complexer. Ze vormen een entiteit op zich. Je moet niet alleen verwijzen naar de node waatoe ze behoren, maar ook nog naar het sleutelveld van de veldverzameling. Een voorbeeldje:

Tenslotte... Webshops hebben een aparte tabel met de producten. Producten zijn geen nodes!. Je voelt het reeds aankomen... een aparte commerce feed is er nodig. Eens je dit weet, kan je een volledige stocklijst van je groothandel importeren... We maken hier ook gebruik van Tamper om de getallen om te zetten naar euro's. (komma wordt verwijderd)

Node export

Node Export maakt het mogelijk om nodes te exporteren naar andere sites met dezelfde inhoudstypes. Ook de afbeeldingen worden mee verhuisd dank zij een vernuftig systeem. (Zonder FTP!) Installer een activeer. Vergeet ook niet te flushen!!!

 

Na flushen zie je de instellingen. We gebruiken de standaard manier van overzetten.

Ook de andere instellingen laten we staan. We gaan een nieuwe node maken. Dus overschrijven we niets.

Bij de instellingen van het inhoudstype 'boeken' zien we weer de standaardinstellingen. Je ziet dat je zelfs de promotie tot startpagina kunt mee exporteren.

We gaan ook iets speciaal doen. Het afbeeldingsveld gaan we zonder FTP overzetten. Vink dit aan anders werkt het niet.

Tenslotte zien we de manier van overdracht. Laten staan.

Aan het werk.. We gebruiken ons inhoudstype 'boeken' en we gaan daar de inhoud wat opvrolijken met een afbeelding in de body en één in een afbeeldingsveld.

Je gaat nu zien dat er een tabblad bijgekomen is met de naam node export.

Als je daarop klikt heeft Drupal reeds zijn werk gedaan. Er werd een codeblad gegenereeerd met alles wat je nodig hebt. Je kunt dit kopieren en plakken in de nieuwe site. Wij gaan echter voor de downlaod file.

Het is een speciaal bestand..

Als je in de code kijkt zie je dat er heel wat code gebruikt wordt om de afbeelding over te zetten. (loopt nog verder hoor)

Nu gaanw  enaar de doelsite. Bij inhoud toevoegen zie je nu Node export: import. Kwestie van een goede benaming...

Je kunt zoals eerder gezegd je code plakken of een bestand uploaden. Je hebt al in de gaten dat de doelsite ook de module moet hebben natuurlijk...

We gaan naar het bestand:

Hupla. Groen licht.

Bij de inhoud zie je het resultaat.

We zien nu dat de figuur in de body niet meegekomen is. Dit was te verwachten. Drupal houdt niet van figuren in de body.

De foto van Kinsley als Anna is nog wel aanwezig maar moet met FTP op de juiste plaats worden gebracht.

Onze Tolstoj zit wel in zijn stoel en wel als volwaardige afbeelding.

De foto is dus zonder FTP tussenkomst bij de files terecht gekomen.

Is het mogelijk om meerdere nodes in één keer te exporteren (en daarna te importeren)? Bij inhoud kan je volgende bulk bewerking toepassen...

Drupal is fun!

Features

Features

Deze module heeft moeilijkheidsgraad 5 meegekregen omdat ondergetekende er een slapeloze nacht heeft van gehad. Er zijn zo veel mogelijkheden en er kan dus zo veel mee mis gaan dat ik mij beperk tot de zaken die ik getest heb en die wel werken. Vol met bugs... neen, maar zeer complex om te gebruiken. Met Features kan je zowat alle instellingen van de site overzetten naar een andere site. Inhoudstypes, Gebruikers, Rollen, Views,... Alle gegevens worden in een module (jawel!) gestoken die je zelf benoemt. De doelsite moet dus enkel deze module installeren en activeren. Automatisch worden dan de instellingen overgenomen. Net zoals elke module zijn er echter afhankelijkheden (de éne module heeft soms de andere nodig) en daar wringt het schoentje soms. Je moet weten van wat je inhoud afhankelijk is. Er is een soort wizard die dit voor je opzoekt, maar die is soms niet volledig. Dan moet je gaan zoeken wat er ontbreekt. Eens het werkt is het wel genieten...

Installeer en activeer:

Bij structuur is er een link bijgekomen:

We gaan er een maken. Vul alles in. Zuig maar iets uit je duim voor de versie maar let op de schrijfwijze.

Bij de geavanceerde opties zie je dat je een feature kunt genereren. Deze wordt dan als een map opgeslagen. Je bovenliggende map moet wel dan schrijfrechten hebben!.

We gaan het inhoudstype 'boeken' en zijn bijhorende view als 'feature' exporteren. Selecteer bij inhoudstypen dus 'boeken'. Er ontstaat onmiddellijk een overzicht van afhankelijkheden.

de view:

Ik heb gemerkt dat bij de afhankelijkheden er ook field UI bij moet zijn, anders kreeg ik geen velden in het inhoudstype. Ik heb via de foutmeldingen op de doelsite dit weten te achterhalen.

Nu gaan we deze feature downloaden.

Ga nu naar je doelsite en installeer deze tar file (=open source zip). Je moet hem niet unzippen of untarren...

Al deze gegevens gedragen zich nu als een module.

Eenmaal je dus activeert, gaat Drupal nu alles aanmaken wat je geselecteerd hebt. Ik heb de feature gemaakt op de drupal3 site. Nu zie je dat ik de drupal2 site gebruik als doelsite. De overdracht van het inhoudstype is geslaagd.

En zie ook de view werd aangemaakt.

Als je de rechten op je map op je bronsite hebt ingesteld kan je ook je feature bewaren als map. Ik heb hem niet in mijn modulemap gezet. Als je de map daar naar toe brengt komt hij bij de modules én bij features te voorschijn. omda tik een duidelijk verschil wil tussen bron en doelsite hou ik dit echter gescheiden.

Op de doelsite kan je bij features de instellingen zien.

Daar is hij wel bij de modules terecht gekomen. Logisch. We hebben hem als module geïnstalleerd.

Features kan ook inhoud (nodes) exporteren. Ideaal...de inhoudstypes samen mat hun inhoud. Ik heb het geprobeerd en het is niet echt een succes. Er zijn variablelen die soms verschillen van site tot site. De module 'Strongarm' moet dit oplossen. Ze werken ook aan een integratie van Export Nodes en Features. Ooit zal dit naar behoren werken, daar ben ik zeker van, maar ik hou graag de structuur en de inhoud gescheiden. In een volgend thema zie ik Node Export; dit werkt goed. Met Features doe je de structuur, met Node Export de inhoud. Doe dit ook zo, om gezondheidsredenen...