aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
blob: 6eb433810fcc296b48836787a8b6874d6069bcff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
registerPlugin()

dynamically register plugins

Description
===========

void

registerPlugin

string

type

string

name

mixed

callback

bool

cacheable

mixed

cache\_attrs

This method registers functions or methods defined in your script as
plugin. It uses the following parameters:

-   `cacheable` and `cache_attrs` can be omitted in most cases. See
    [controlling cacheability of plugins output](#caching.cacheable) on
    how to use them properly.

<!-- -->


    <?php
    $smarty->registerPlugin("function","date_now", "print_current_date");

    function print_current_date($params, $smarty)
    {
      if(empty($params["format"])) {
        $format = "%b %e, %Y";
      } else {
        $format = $params["format"];
      }
      return strftime($format,time());
    }
    ?>

       

And in the template


    {date_now}

    {* or to format differently *}
    {date_now format="%Y/%m/%d"}


    <?php
    // function declaration
    function do_translation ($params, $content, $smarty, &$repeat, $template)
    {
      if (isset($content)) {
        $lang = $params["lang"];
        // do some translation with $content
        return $translation;
      }
    }

    // register with smarty
    $smarty->registerPlugin("block","translate", "do_translation");
    ?>

       

Where the template is:


    {translate lang="br"}Hello, world!{/translate}

       


    <?php

    // let's map PHP's stripslashes function to a Smarty modifier.
    $smarty->registerPlugin("modifier","ss", "stripslashes");

    ?>

In the template, use `ss` to strip slashes.


    <?php
    {$var|ss}
    ?>

See also [`unregisterPlugin()`](#api.unregister.plugin), [plugin
functions](#plugins.functions), [plugin block
functions](#plugins.block.functions), [plugin compiler
functions](#plugins.compiler.functions), and the [creating plugin
modifiers](#plugins.modifiers) section.