Difference between revisions of "Templates and Custom PHP Logic"
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | If you want to include custom PHP logic in your customized templates, we recommend using hooks. | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
<div class="docs-alert-warning"> | <div class="docs-alert-warning"> | ||
− | + | We deprecated support for Smarty's legacy tags in WHMCS 6.0 and plan to permanently remove support in WHMCS 9.0. You '''must''' disable and remove them. For more information, see [[Eliminating Legacy Smarty Tags]]. | |
</div> | </div> | ||
− | + | ||
− | == | + | == Hook Points == |
− | + | ||
− | + | Hook points for every page of the Client Area allow you to define system theme and order form template variables. For a full list, see our [https://developers.whmcs.com/hooks-reference/client-area-interface/ Client Area Interface Hooks Reference]. | |
− | + | ||
− | + | == Example Hook File == | |
− | + | ||
+ | The following example demonstrates using a hook on the Client Area '''View Ticket''' page: | ||
+ | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
Line 27: | Line 25: | ||
{ | { | ||
$extraTemplateVariables = array(); | $extraTemplateVariables = array(); | ||
− | + | ||
// set a fixed value | // set a fixed value | ||
$extraTemplateVariables['fixedValue'] = 'abc'; | $extraTemplateVariables['fixedValue'] = 'abc'; | ||
− | + | ||
// fetch clients data if available | // fetch clients data if available | ||
$clientsData = isset($vars['clientsdetails']) ? $vars['clientsdetails'] : null; | $clientsData = isset($vars['clientsdetails']) ? $vars['clientsdetails'] : null; | ||
− | + | ||
// determine if client is logged in | // determine if client is logged in | ||
if (is_array($clientsData) && isset($clientsData['id'])) { | if (is_array($clientsData) && isset($clientsData['id'])) { | ||
Line 41: | Line 39: | ||
$extraTemplateVariables['anotherUserOnlyValue'] = '456'; | $extraTemplateVariables['anotherUserOnlyValue'] = '456'; | ||
} | } | ||
− | + | ||
// return array of template variables to define | // return array of template variables to define | ||
return $extraTemplateVariables; | return $extraTemplateVariables; | ||
} | } | ||
− | + | ||
add_hook('ClientAreaPageViewTicket', 1, 'hook_template_variables_example'); | add_hook('ClientAreaPageViewTicket', 1, 'hook_template_variables_example'); | ||
− | + | ||
</source> | </source> | ||
− | + | ||
− | The above | + | The hook code above defines the additional system theme and order form template <tt>{$fixedValue}</tt> variable and, in the case of an authenticated user, the <tt>{$userSpecificValue}</tt> and <tt>{$anotherUserOnlyValue}</tt> variables. |
− | + | ||
+ | You can them use them in the associated system theme and order form template file (in this case, <tt>viewticket.tpl</tt>): | ||
+ | |||
<source lang="php"> | <source lang="php"> | ||
<p>The fixed value is {$fixedValue}.</p> | <p>The fixed value is {$fixedValue}.</p> | ||
− | + | ||
{if $userSpecificValue && $anotherUserOnlyValue} | {if $userSpecificValue && $anotherUserOnlyValue} | ||
<p>I also have this {$userSpecificValue} and {$anotherUserOnlyValue} to show you.</p> | <p>I also have this {$userSpecificValue} and {$anotherUserOnlyValue} to show you.</p> | ||
{/if} | {/if} | ||
</source> | </source> |
Latest revision as of 21:49, 26 January 2023
If you want to include custom PHP logic in your customized templates, we recommend using hooks.
We deprecated support for Smarty's legacy tags in WHMCS 6.0 and plan to permanently remove support in WHMCS 9.0. You must disable and remove them. For more information, see Eliminating Legacy Smarty Tags.
Hook Points
Hook points for every page of the Client Area allow you to define system theme and order form template variables. For a full list, see our Client Area Interface Hooks Reference.
Example Hook File
The following example demonstrates using a hook on the Client Area View Ticket page:
<?php
/**
* Hook sample for defining additional template variables
*
* @param array $vars Existing defined template variables
*
* @return array
*/
function hook_template_variables_example($vars)
{
$extraTemplateVariables = array();
// set a fixed value
$extraTemplateVariables['fixedValue'] = 'abc';
// fetch clients data if available
$clientsData = isset($vars['clientsdetails']) ? $vars['clientsdetails'] : null;
// determine if client is logged in
if (is_array($clientsData) && isset($clientsData['id'])) {
$userId = $clientsData['id'];
// perform calculation here
$extraTemplateVariables['userSpecificValue'] = '123';
$extraTemplateVariables['anotherUserOnlyValue'] = '456';
}
// return array of template variables to define
return $extraTemplateVariables;
}
add_hook('ClientAreaPageViewTicket', 1, 'hook_template_variables_example');
The hook code above defines the additional system theme and order form template {$fixedValue} variable and, in the case of an authenticated user, the {$userSpecificValue} and {$anotherUserOnlyValue} variables.
You can them use them in the associated system theme and order form template file (in this case, viewticket.tpl):
<p>The fixed value is {$fixedValue}.</p>
{if $userSpecificValue && $anotherUserOnlyValue}
<p>I also have this {$userSpecificValue} and {$anotherUserOnlyValue} to show you.</p>
{/if}