Attach points
Hooks
At install time, the module does not declare a fixed list of hooks: registerAllDisplayHooks() queries the shop's hook table, keeps every name starting with display, then calls registerHook() on each of them — except displayPaymentEU, displayPayment and displayPaymentReturn, which expect PaymentOption objects rather than HTML. The set actually registered therefore depends on what the hook table holds at install time (PrestaShop core hooks plus those of any module already present). One hook is registered statically: actionFrontControllerSetMedia, which publishes the CSS/JS files of the shop's active blocks.
At render time, the magic method __call() intercepts any hookDisplayXxx call (e.g. hookDisplayTop), derives the hook name (displayTop) and returns the matching block's HTML if one exists, is active, and belongs to the current shop — an empty string otherwise.