PHP & Drupal

Uit De Vliegende Brigade
Versie door Jeroen Strompf (overleg | bijdragen) op 26 dec 2016 om 16:35 (→‎Debuggen)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

Slechts sporadisch maak ik gebruik van PHP binnen Drupal. Daardoor moet ik vaak het wiel opnieuw uitvinden. Daarom dit artikel met belangrijke info + verwijzingen!

Debuggen & dpm

Voorbeeld van debuggen mbv. dpm(). Het resultaat van de code hiernaast

Het print-commando is ontbetrouwbaar om te debuggen: Op veel momenten is er geen focus naar het scherm ofzoiets. Er bestaan specifieke commando's en modules om te debuggen, die beter werken.

De devel-module (of zoiets) verschaft het commando dpm() waarmee je debug-info omtrent een variabele naar het scherm stuurt. Zie Drupal Commerce AdWords-module voor details. Voorbeeld:

// commerce_checkout_complete
/////////////////////////////////////////////
//
function commerce_adwords_commerce_checkout_complete($order)
{
	dpm($order);
	// print "<br><br><br> commerce_checkout_complete";  // WERKT NIET!
	// print phpinfo();                                  // WERKT NIET!
}

Nog beter, gebruik dpm als volgt:

dpm($node, 'Debugging node ' . $node->title);

waarbij het tweede argument het label is.

Toch print gebruiken?

Hierboven bleek dat print niet betrouwbaar is. Desalniettemin:

PHP in body

Waarschijnlijk de eenvoudigste manier: PHP-code in de body van een pagina zetten, bv. print phpinfo();. Vergeet niet PHP aan te zetten als toegestaan tekst-formaat. Zie Text-formats (Drupal) voor details
Voilà!

My First Hook

In een eigen module is dit het .module-bestand:

<?php
/////////////////////////////////////////////
// hook_init()
/////////////////////////////////////////////
//
// hook_init() is run on every page load except for cached pages, 
// so depending on your use case that might be an option.
// (http://drupal.stackexchange.com/questions/33789/how-to-run-check-on-each-page-load)
//
function commerce_adwords_init()
{
	print "commerce_adwords_init";
}	
Mijn eerste hook! Let op: De tekst belandt normaliter onder de admin-interface. Wellicht was


commerce_adwords_init
handiger geweest

Let op: Clear caches na het bijwerken van de module!

Hooks

Zie Drupal Commerce AdWords-module als voorbeeld van het gebruik van hooks.

Zie ook

Bronnen