PerlDoc

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.
    • $session - session (Foswiki) 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:
    • skin - skin name,
    • web - web to search
    • no_oops - if true, will not throw an exception. Instead, returns undef.

    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.

    Topic revision: r1 - 06 Aug 2023, UnknownUser
    This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
    Ideas, requests, problems regarding Foswiki? Send feedback