Headless Drupal | Een XML sitemap van Drupal uitserveren via Node.js / Express

03 Nov 2015

Joris Snoek
Digital Consultant
+31 (0)20 - 261 14 99

English translation here

In onze tocht om een headless Drupal website te maken, liepen we op een gegeven moment tegen de XML sitemap aan. Deze is nodig om zoekmachines als Google te laten weten wat jouw site structuur is. Ook worden updates van content hierin doorgegeven. Daardoor krijg je rapportage over geïndexeerde links, dode links, duplicate content en andere errors op je Drupal website. Middels deze inzichten kan je optimalisaties doorvoeren en haalt jouw Drupal website een hogere SEO score. Je kunt bij Google de XML sitemap posten in hun Search console (Tools for webmasters).

In Drupal is het genereren van de sitemap relatief eenvoudig te doen met de XML sitemap module. Dat is een stabiele module waarmee je relatief snel een sitemap kunt genereren.

Maar in Node.js / Express JS bestaat niet zo’n kant-en-klare module. De content wordt namelijk extern ingeladen (uit Drupal) en doorgegeven aan degene die het opvraagt, heel simpel gezegd. Maar gezien de XML sitemap onmisbaar voor SEO, zijn we gaan zoeken hoe hem te implementeren in Node.JS. Hier is hoe we dit voor elkaar kregen:

1. Installeer de XML sitemap module in Drupal

De sitemap kan je laten genereren door Drupal en vervolgens ‘streamen’ via Node.js / Express JS naar gewenste zoekmachine. De eerste stap is dus: produceer de sitemap in Drupal, waar tevens je content wordt beheerd. Als je werkt aan een decoupled Drupal installatie, dan verwacht ik dat de configuratie van de XML sitemap geen probleem zou moeten zijn. Maar voor de zekerheid, hier vind je instructies.

2. Installeer de Request module in Node.JS / Express JS

Na enkele NPM modules geprobeerd te hebben, bleek de Request module meest geschikt en uiteindelijk een snelle oplossing om de sitemap te ‘streamen’ (naar binnen halen en direct weer uitserveren). Installeer dus die module in je Node.js installatie en vergeet hem niet te importeren in Node.js / Express JS, zie (1) in afbeelding hieronder.

Wil je meer weten over installatie van NPM modules, check Headless Drupal & Node.js | Part 2/3: Node.js introductie.

3. Stream de sitemap mbv ‘pipe’

Maak eerst een var waarin je de bron van de XML sitemap in je Drupal installatie definieert (2).

app.get('/sitemap.xml', function (req, res) {
var sitemap = request(sitemapxml);
req.pipe(sitemap);
sitemap.pipe(res);
});

==> Deze code zorgt ervoor dat een binnenkomend request op /sitemap.xml de sitemap doorgeeft vanuit de Drupal bron. Deze zorgt dus voor de stream / de pipe.

Wanneer je nu de sitemap post bij bijvoorbeeld de Google Search console dan kan dat met de link jouwdomein.nl/sitemap.xml, waar jouwdomein.nl dus de Node.JS installatie is.

Done, wrap up

That’s it, nu je het zo bekijkt lijkt het eenvoudig en als het eenmaal werkt is dat met de meeste dingen zo. Maar voornamelijk het uitzoeken en testen kost veel tijd. Ik hoop dat ik jullie die tijd hierdoor bespaar.

Vragen, feedback? Let me know!

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >