Customize Templates

As already mentioned you should customize the template files. They are very basic and may not include any new features that were introduced in the latest releases.
For the customization you just need some little knowledge of HTML and CSS. PHP knowledge is not needed by default but may help if you want to achieve special layouts or functions.

Please remember: Before doing any customizations, make a copy of a default template! If you make changes in the default templates they will be overwritten on updates.
Hint: PDF templates will be generated with a PDF engine called mPDF. This means that some styles may not work because of conversion from HTML to PDF. If you need help with styling please refer to the mPDF documentation.

Customize the Look and Feel  

First of all please remember that there is a basic styling for each template. The files use two CSS stylesheets and some hardcoded styles. If you want to customize your template you should make changes in the hardcoded part which means: edit the content between <style> and </style> only. Do not edit the templates.css as changes will be overwritten on updates.

First Steps  

Before you start to add any new fields or create conditional statements you should get an overview of which variables are availalbe for the quote or invoice. Therefore go to the bottom of the template and add the following code directly above the </body> tag. Replace invoice with quote if you edit a quote template.

<pre><?php print_r($invoice); ?></pre>

If you load the template now you will see something like this but with hundred more lines:

stdClass Object
 [invoice_custom_id] => 13
 [invoice_id] => 24
 [invoice_custom_archive_id] =>
 [client_custom_id] => 8

This is the list of all available variables where the part in the brackets (e.g. invoice_id) is the name of the variable and the part after the => is the content of the variable.

Code Examples  

Here is a list of some examples for code that can be used to display variables.
Replace invoice with quote when editing quote templates.
Replace variable_name with the actual name of the variable.

Description Code
Add a new Variable
To add a new variable to the template. Replace variable_name with the actual name of the variable.
<?php echo $invoice->variable_name; ?>
Format amounts
If you want to display amounts you have to use this code in order to display the amount in the correct format.
<?php echo format_currency($invoice->variable_name); ?>
Conditional Statements
Only display code if a variable is not empty. This could be used for example if you don't want to display the taxes column if there are no taxes.
<?php if(!empty($invoice->variable_name)): ?>
-- display any HTML or variables here --
<?php endif; ?>
Display the Invoice Logo
The logo can be set in the System Settings.
<?php echo invoice_logo_pdf(); ?>
Using Templates System