| |
|
|
r3 - 18 Nov 2013 - 22:10 - UnknownUser |
|
r2 - 10 Jan 2013 - 12:19 - AdminUser |
|
| |
|
|
|
|
|
|
|
|
ADDTOZONE |
|
ADDTOZONE |
|
|
|
%ADDTOZONE{
"zone"
...
}%
|
|
%ADDTOZONE{
"zone"
...
}%
|
|
|
|
Zones are specific places in the output HTML that are marked by calls to the RENDERZONE macro. Zones are used to collect various content together, such as Javascript and CSS, that must be included in the output HTML in a specific order, and in a specific place. |
|
Zones are specific places in the output HTML that are marked by calls to the RENDERZONE macro. Zones are used to collect various content together, such as Javascript and CSS, that must be included in the output HTML in a specific order, and in a specific place. |
|
|
|
You may create as many zones in addition to the standard head and script zones as you like. Interesting use cases in wiki applications: |
|
You may create as many zones in addition to the standard head and script zones as you like. Interesting use cases in wiki applications: |
|
|
|
- Create a
sidebar zone to add widgets, - Create a
toolbar zone to add buttons icons
|
|
- Create a
sidebar zone to add widgets, - Create a
toolbar zone to add buttons icons
|
|
|
|
ADDTOZONE adds content identified with the id parameter to zone, which will later be expanded with RENDERZONE. id identifiers are unique within the zone that they are added to. An ADDTOZONE call may ensure that its content appears after the content of some other ADDTOZONE calls by specifying their ids in the requires parameter. requires may only list ids within the specified zone, except for the special case of head and script zones when {MergeHeadAndScriptZones} is set (read more). |
|
ADDTOZONE adds content identified with the id parameter to zone, which will later be expanded with RENDERZONE. id identifiers are unique within the zone that they are added to. An ADDTOZONE call may ensure that its content appears after the content of some other ADDTOZONE calls by specifying their ids in the requires parameter. requires may only list ids within the specified zone, except for the special case of head and script zones when {MergeHeadAndScriptZones} is set (read more). |
|
|
|
Parameters: |
|
Parameters: |
|
|
|
"zone" optional, comma-separated list of the names of zones that the content should be added to. Defaults to head. id optional, identifier for the text being added with the ADDTOZONE call, to be used in the requires parameter of other ADDTOZONE calls. Multiple ADDTOZONE calls with the same id parameter will simply overwrite the earlier ADDTOZONE call.
requires="..." optional, comma separated string of ids of text within this zone that this content should follow when the zone is rendered. text="..." optional, text to be added to the named zone, mutually exclusive with topic. topic="..." optional, full qualified web.topic name that contains the text to be added, mutually exclusive with text. section="..." optional, section of the topic to be added, defaults to the default section between STARTINCLUDE and STOPINCLUDE.
|
|
"zone" optional, comma-separated list of the names of zones that the content should be added to. Defaults to head. id optional, identifier for the text being added with the ADDTOZONE call, to be used in the requires parameter of other ADDTOZONE calls. Multiple ADDTOZONE calls with the same id parameter will simply overwrite the earlier ADDTOZONE call.
requires="..." optional, comma separated string of ids of text within this zone that this content should follow when the zone is rendered. text="..." optional, text to be added to the named zone, mutually exclusive with topic. topic="..." optional, full qualified web.topic name that contains the text to be added, mutually exclusive with text. section="..." optional, section of the topic to be added, defaults to the default section between STARTINCLUDE and STOPINCLUDE.
|
|
|
|
Note: Foswiki uses the requires parameter to resolve the ordering of dependencies within a zone. It does not work across zones. If you have an id in requires that cannot be resolved during sorting, then RENDERZONE will generate an HTML comment to mark the problem. |
|
Note: Foswiki uses the requires parameter to resolve the ordering of dependencies within a zone. It does not work across zones. If you have an id in requires that cannot be resolved during sorting, then RENDERZONE will generate an HTML comment to mark the problem. |
|
|
|
|
|
|
|
|
|
How to use the head and script zones |
|
How to use the head and script zones |
|
|
|
Web browsers generally process the HTML on a page from top to bottom. When a tag is encountered with a URL to some Javascript file, processing of the page will stop while the file is fetched and executed before continuing. When a page makes heavy use of Javascript you can get a "blank screen" effect in the browser while each script is downloaded. To avoid this effect, tags can be moved to the end of the HTML page, so that the user may view the page content while scripts are being loaded. |
|
Web browsers generally process the HTML on a page from top to bottom. When a tag is encountered with a URL to some Javascript file, processing of the page will stop while the file is fetched and executed before continuing. When a page makes heavy use of Javascript you can get a "blank screen" effect in the browser while each script is downloaded. To avoid this effect, tags can be moved to the end of the HTML page, so that the user may view the page content while scripts are being loaded. |
|
|
|
Foswiki makes this move possible by providing the head and script zones. These are automatic zones - they do not require a corresponding RENDERZONE. |
|
Foswiki makes this move possible by providing the head and script zones. These are automatic zones - they do not require a corresponding RENDERZONE. |
|
|
|
Rendering the script zone at the end of the HTML body requires skin template customisation with %RENDERZONE{"script"}%
|
|
Rendering the script zone at the end of the HTML body requires skin template customisation with %RENDERZONE{"script"}%
|
|
|
|
Notionally the head and script zones correspond to a point just before the HTML tag. Normally you should add CSS (and other HTML content, such as ) to the head zone, and Javascript markup to the script zone. The setting {MergeHeadAndScriptZones} in Configure controls what happens when RENDERZONE is called. |
|
Notionally the head and script zones correspond to a point just before the HTML tag. Normally you should add CSS (and other HTML content, such as ) to the head zone, and Javascript markup to the script zone. The setting {MergeHeadAndScriptZones} in Configure controls what happens when RENDERZONE is called. |
|
|
|
Normally, dependencies between the individual ADDTOZONE statements are resolved within each zone. However, if {MergeHeadAndScriptZones} is enabled, then head content which requires an id that only exists in script (and vice-versa) will be re-ordered to satisfy any dependency. |
|
Normally, dependencies between the individual ADDTOZONE statements are resolved within each zone. However, if {MergeHeadAndScriptZones} is enabled, then head content which requires an id that only exists in script (and vice-versa) will be re-ordered to satisfy any dependency. |
|
|
|
{MergeHeadAndScriptZones} is provided to maintain compatibility with legacy extensions that use ADDTOHEAD to add markup and require content that is now in the script zone. {MergeHeadAndScriptZones} will be removed from a future version of Foswiki.
|
|
{MergeHeadAndScriptZones} is provided to maintain compatibility with legacy extensions that use ADDTOHEAD to add markup and require content that is now in the script zone. {MergeHeadAndScriptZones} will be removed from a future version of Foswiki.
|
|
|
|
Workign with {MergeHeadAndScriptZones} disabled (default) |
|
Workign with {MergeHeadAndScriptZones} disabled (default) |
|
|
|
In this mode, the head and script zones are treated separately. |
|
In this mode, the head and script zones are treated separately. |
|
|
|
Working with {MergeHeadAndScriptZones} enabled |
|
Working with {MergeHeadAndScriptZones} enabled |
|
|
|
In this mode, the head and script zones are separate when adding to them, but may be treated as merged when you call RENDERZONE if there are any dependencies specified that only exist in the opposite zone. This allows an ADDTOZONE{"head"...} to to successfully require an id that has been added to script. |
|
In this mode, the head and script zones are separate when adding to them, but may be treated as merged when you call RENDERZONE if there are any dependencies specified that only exist in the opposite zone. This allows an ADDTOZONE{"head"...} to to successfully require an id that has been added to script. |
|
|
|
Only add content to the script zone that is also legal in the . |
|
Only add content to the script zone that is also legal in the . |
|
|
|
Example: Adding to a zone with missing dependencies |
|
Example: Adding to a zone with missing dependencies |
|
|
|
You must ensure that no head content (and no inline Javascript) depends on script content, or vice-versa. Any such dependency will be ignored. However, the HTML comment decoration which normally appears after each id's content in the rendered HTML will contain a small informative text to aid debugging Example
|
|
You must ensure that no head content (and no inline Javascript) depends on script content, or vice-versa. Any such dependency will be ignored. However, the HTML comment decoration which normally appears after each id's content in the rendered HTML will contain a small informative text to aid debugging Example
|
|
|
|
%ADDTOZONE{
"head"
text="
"
requires="some-id-that-exists-in-script"
id="MY::TEST"
}% |
|
%ADDTOZONE{
"head"
text="
"
requires="some-id-that-exists-in-script"
id="MY::TEST"
}% |
|
|
|
Result
|
|
Result
|
|
|
|
|
|
|
|
|
|
On the other hand, as explained earlier - when {MergeHeadAndScriptZones} is enabled - Foswiki is able resolve such dependencies successfully. |
|
On the other hand, as explained earlier - when {MergeHeadAndScriptZones} is enabled - Foswiki is able resolve such dependencies successfully. |
|
|
|
Note that if you do have an explicit call to %RENDERZONE{"head"}% in your templates then the content expanded at that point will be the same content as would be inserted before the . |
|
Note that if you do have an explicit call to %RENDERZONE{"head"}% in your templates then the content expanded at that point will be the same content as would be inserted before the . |
|
|
|
|
|
|
|
|
|
Example: Adding Javascript to a page |
|
Example: Adding Javascript to a page |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example: Adding CSS to a page |
|
Example: Adding CSS to a page |
|
|
|
%ADDTOZONE{"head"
id="MyCSS"
text="
"
}%
|
|
%ADDTOZONE{"head"
id="MyCSS"
text="
"
}%
|
|
|
|
See also RENDERZONE, Using ADDTOZONE |
|
See also RENDERZONE, Using ADDTOZONE |
|
| |
|
|
r3 - 18 Nov 2013 - 22:10 - UnknownUser |
|
r2 - 10 Jan 2013 - 12:19 - AdminUser |
|
| |