User Guide

Table Of Contents
254 Chapter 11: Creating and Using Custom CFML Tags
The following example shows a cftreeitem tag nested within a cftree tag:
<cftree name="tree1"
required="Yes"
hscroll="No">
<cftreeitem value=fullname
query="engquery"
queryasroot="Yes"
img="folder,document">
</cftree>
The calling tag is known as an ancestor, parent, or base tag, while the tags that ancestor tags call are
known as descendant, child, or sub tags. Together, the ancestor and all descendant tags are called
collaborating tags.
In order to nest tags, the parent tag must have a closing tag.
The following table lists the terms that describe the relationships between nested tags:
You can create multiple levels of nested tags. In this case, the sub tag becomes the base tag for its
own sub tags. Any tag with an end tag present can be an ancestor to another tag.
Nested custom tags operate through three modes of processing, which are exposed to the base tags
through the variable
thisTag.ExecutionMode:
The start mode, in which the base tag is processed for the first time.
The inactive mode, in which sub tags and other code contained within the base tag are
processed. No processing occurs in the base tag during this phase.
The end mode, in which the base tag is processed a second time. The end mode occurs when
ColdFusion reaches the custom tag’s end tag.
Passing data between nested custom tags
A key custom tag feature is for collaborating custom tags to exchange complex data without user
intervention, while encapsulating each tag’s implementation so that others cannot see it.
When you decide to you use nested tags, you must address the following issues:
What data should be accessible?
Which tags can communicate to which tags?
How are the source and targets of the data exchange identified?
What CFML mechanism is used for the data exchange?
Calling tag Tag nested within
the calling tag
Description
Ancestor Descendant An ancestor is any tag that contains other tags between its start
and end tags. A descendant is any tag called by a tag.
Parent Child Parent and child are synonyms for ancestor and descendant.
Base tag Sub tag A base tag is an ancestor that you explicitly associate with a
descendant, called a sub tag, with
cfassociate.