Templates
Please note: This page is under construction and has not been finished yet.
- Templates and shortcodes function together to allow a developer to place dynamic content into their code.
- Templates are portions of HTML which contain markers that are replaced by dynamic content when parsed e107's
parseTemplate()
function. - These markers are called 'shortcodes'.
- A shortcode is always CAPITALIZED and is surrounded by curly brackets and it may contain letters and underscores. For example:
{MY_SHORTCODE}
- Each shortcode has a corresponding function/method which is run during the parsing of the template. These functions are always lowercase and begin with the prefix
sc_
. eg.sc_my_shortcode()
. This means that{MY_SHORTCODE}
is replaced by what is returned bysc_my_shortcode()
. - Shortcodes may also contain parameters which are sent to the corresponding method. For example:
{MY_SHORTCODE: x=foo&y=bar}
Create a folder called
templates
inside your plugin directory, and inside create an empty file using the name of your plugin folder, followed by _template.php
. eg. myplugin_template.php
Inside this file add an array by the same name, but in UPPERCASE: eg. $MYPLUGIN_TEMPLATE['xxxx']
xxxx
can be anything you want, but we suggest using start
, item
, end
etc. when applicable. This value should always be lowercase. Here's a simple example of the contents of myplugin_template.php
:<?php
$MYPLUGIN_TEMPLATE['start'] = "<ul>";
$MYPLUGIN_TEMPLATE['item'] = "<li>{MYPLUGIN_ITEM}</li>";
$MYPLUGIN_TEMPLATE['end'] = "</ul>";
?>
If your plugin will use several different types of templates, eg. a listing page and an input form. You can do something like this:
<?php
$MYPLUGIN_TEMPLATE['list']['start'] = "<ul>";
$MYPLUGIN_TEMPLATE['list']['item'] = "<li>{MYPLUGIN_ITEM}</li>";
$MYPLUGIN_TEMPLATE['list']['end'] = "</ul>";
$MYPLUGIN_TEMPLATE['form']['start'] = "<form>";
$MYPLUGIN_TEMPLATE['form']['body'] = "<div>{MYPLUGIN_FORMINPUT}</divi>";
$MYPLUGIN_TEMPLATE['form']['end'] = "</form>";
?>
You may load a template file in the following way:
$template = e107::getTemplate('myplugin'); // loads e107_plugins/myplugin/templates/myplugin_template.php
You can now use the
$template
code array for parsing:$text = e107::getParser()->parseTemplate($template['start'], true, $scObj);
// or
$text = e107::getParser()->parseTemplate($template['form']['start'], true, $scObj);
- All templates that are used in e107 can be overridden by copying them into specific folders within your current theme folder.
- Core themes (located in
e107_core/templates/
) should be copied intoe107_themes/YOURTHEME/templates/
- Plugin templates should be copied into
e107_themes/YOURTHEME/templates/PLUGIN-FOLDER
Note: Older plugins may look for templates in the root folder of your theme. ie.e107_theme/YOURTHEME/
1) The comment template is a core template, as it is located in e107_core/templates/. To override this template, copy the file to e107_themes/your_theme_folder/templates/.
2) The news template is located in e107_plugins/news/. To override this template, copy the file over to e107_themes/your_theme_folder/templates/news/.
3) The same for, for example, the chatbox menu template. The chatbox_menu template is located in e107_plugins/chatbox_menu. Copy the template over to e107_themes/your_theme_folder/templates/chatbox_menu/
Important: For overriding plugin templates, the folder name within your_theme_folder/templates/ directory must match the exact plugin folder name.