Fraenkiman e544ed6d9a Smatry Release 4.4.1 on Feb-2024
Comparing changes: https://github.com/smarty-php/smarty/compare/v4.3.1...v4.4.1

It is noticeable that Smarty 4.3.1 does not officially support PHP 8.3. Is only supported with 4.4.0.

Remark:

During tests with Smarty 4.5.1, it was noticed that the following warning occurs:
Deprecated: Using the unregistered function "function_exists" in a template is deprecated and will be removed in a future version. Use Smarty::registerPlugin to explicitly register a custom modifier.

As of Smarty 5.X.X, templates must be revised again.
The Smarty release 5.0.2 is already officially available. However, integration into FlatPress is not entirely trivial.
2024-04-14 18:37:39 +02:00

1.2 KiB

Writing Plugins

Plugins can be either loaded by Smarty automatically from the filesystem or they can be registered at runtime via one of the register_* API functions. They can also be unregistered by using unregister_* API functions.

For the plugins that are registered at runtime, the name of the plugin function(s) does not have to follow the naming convention.

If a plugin depends on some functionality provided by another plugin (as is the case with some plugins bundled with Smarty), then the proper way to load the needed plugin is this:

<?php
function smarty_function_yourPlugin(array $params, Smarty_Internal_Template $template)
{
  // load plugin depended upon
  $template->smarty->loadPlugin('smarty_shared_make_timestamp');
  // plugin code
}
?>

As a general rule, the currently evaluated template's Smarty_Internal_Template object is always passed to the plugins as the last parameter with two exceptions:

  • modifiers do not get passed the Smarty_Internal_Template object at all

  • blocks get passed $repeat after the Smarty_Internal_Template object to keep backwards compatibility to older versions of Smarty.