Smarty CMSMS plugins
Soms is het erg handig als je een bepaalde PHP of CMSMS functie ook vanuit Smarty kunt gebruiken. Smarty kent hiervoor een plugin-systeem.
Een voorbeeld:
CMSMS heeft in de core een functie (munge_string_to_url), hiermee kan je van een string een url maken.
$string = 'Een hele lange Titel met Hoofdletters';
$url = munge_string_to_url($string);
print $url; /* een-hele-lange-titel-met-hoofdletters */
Vandaag had ik deze functie binnen Smarty nodig (voor het definieren van een javascript variabele aan de hand van een document titel).
Smarty plugin:
modifier.munge_string_to_url.php
Plaats de volgende code in $web_root/lib/smarty/plugins/. Het plaatsen van deze code in $web_root/plugins werkt ook.
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/
/**
* Smarty munge_string_to_url modifier plugin, taken and modified from CMSMS API
*
* Type: modifier CMSMS extension<br>
* Name: munge_string_to_url<br>
* Purpose: make a friendly url out of a title
* @link http://smarty.php.net/
* @author Arnoud
* @param string
* @return string
*/
function smarty_modifier_munge_string_to_url($alias, $tolower = true)
{
// lowercase only on empty aliases
if ($tolower == true)
{
$alias = strtolower($alias);
}
$alias = preg_replace('/[^a-z0-9-_]+/i','-',$alias);
$alias = preg_replace("/---/", "-", $alias);
$alias = preg_replace("/span-class-searchhilite-/", "", $alias);
$alias = preg_replace("/span-/", "", $alias);
$alias = trim($alias, '-');
return $alias;
}
?>
Gebruik binnen je template:
{$title|munge_string_to_url}
CMSMS core functionaliteiten
Wil je binnen je Smarty modifier gebruik maken van CMSMS core functionaliteiten dan is dit mogelijk.
<?php
function smarty_cms_modifier_munge_string_to_url($string)
{
return munge_string_to_url($string);
}
?>
of:
<?php
function smarty_cms_modifier_my_modifier($string)
{
$mymodule = CMSModule::GetModuleInstance("MyModule");
if ($mymodule != false) {
$string = $mymodule->mymethod($string);
}
return $string;
}
?>