PerlDoc

26 August 2025 - 17:41 | Version 1 |
See PublishedAPI for packages intended to be used by Plugin and Contrib authors, or browse all packages.
See also Developing plugins, Developer's Bible, Technical Overview


Parent package: Foswiki
Child packages:

    internal package Foswiki::Templates

    Support for Skin Template directives

    The following tokens are supported by this language:

    %TMPL:P% Instantiates a previously defined template
    %TMPL:DEF% Opens a template definition
    %TMPL:END% Closes a template definition
    %TMPL:INCLUDE% Includes another file of templates

    Note; the template cache does not get reset during initialisation, so the haveTemplate test will return true if a template was loaded during a previous run when used with mod_perl or speedycgi. Frustrating for the template author, but they just have to switch off the accelerators during development.

    This is to all intents and purposes a singleton object. It could easily be coverted into a true singleton (template manager).

    ClassMethod new ( $session )

    Constructor. Creates a new template database object.

    ObjectMethod finish()

    Break circular references.

    ObjectMethod haveTemplate( $name ) → $boolean

    Return true if the template exists and is loaded into the cache

    ObjectMethod expandTemplate( $params ) → $string

    Expand the template specified in the parameter string using tmplP.

    Examples:
    $tmpls->expandTemplate("blah");
    $tmpls->expandTemplate(context="view" then="sigh" else="humph");
    

    ObjectMethod tmplP( $attrs ) → $string

    Return value expanded text of the template, as found from looking in the register of template definitions. The attrs can contain a template name in _DEFAULT, and / or context, then and else values.

    Recursively expands any contained TMPL:P tags.

    Note that it would be trivial to add template parameters to this, simply by iterating over the other parameters (other than _DEFAULT, context, then and else) and doing a s/// in the template for that parameter value. This would add considerably to the power of templates.

    ObjectMethod readTemplate ( $name, %options ) → $text

    Reads a template, loading the definitions therein.

    Return value: expanded template text

    By default throws an OopsException if the template was not found or the access controls denied access.

    %options include:

    If template text is found, extracts include statements and fully expands them. Also extracts template definitions and adds them to the list of loaded templates, overwriting any previous definition.