PHP & Drupal

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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