Whatever message this page gives is out now! Go check it out!
<cftree name="tree1"
required="Yes"
hscroll="No">
<cftreeitem value=fullname
query="engquery"
queryasroot="Yes"
img="folder,document">
</cftree>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. |
<cfassociate baseTag="tagName" dataCollection="collectionName"><!--- Get base tag instance data --->
<cfset data = getBaseTagData(baseTag)>
<!--- Create a string with the attribute collection name --->
<cfset collection_Name = "data.#dataCollection#">
<!--- Create the attribute collection, if necessary --->
<cfif not isDefined(collectionName)>
<cfset #collection_Name# = arrayNew(1)>
</cfif>
<!--- Append the current attributes to the array --->
<cfset temp=arrayAppend(evaluate(collectionName), attributes)><!--- Protect against no subtags --->
<cfparam Name='thisTag.assocAttribs' default=#arrayNew(1)#>
<!--- Loop over the attribute sets of all sub tags --->
<cfloop index=i from=1 to=#arrayLen(thisTag.assocAttribs)#>
<!--- Get the attributes structure --->
<cfset subAttribs = thisTag.assocAttribs[i]>
<!--- Perform other operations --->
</cfloop>Call cf_nesttag1 which calls cf_nesttag2
<cf_nesttag1>
<hr>
Call cf_nesttag2 directly
<cf_nesttag2>
<hr><cf_nesttag2><cfif thisTag.executionmode is 'start'>
<!--- Get the tag context stack. The list looks something like
"MYTAGNAME, CALLINGTAGNAME, ..." --->
<cfset ancestorlist = getbasetaglist()>
<!--- Output your own name. You are the first entry in the context stack. --->
<cfoutput>
<p>I'm custom tag #ListGetAt(ancestorlist,1)#</p>
<!--- Output all the contents of the stack a line at a time. --->
<cfloop index="loopcount" from="1" to="#listlen(ancestorlist)#">
Ancestorlist entry #loopcount# n is #ListGetAt(ancestorlist,loopcount)#<br>
</cfloop><br>
</cfoutput>
<!--- Determine whether you are nested inside a custom tag. Skip the first
element of the ancestor list, i.e., the name of the custom tag I'm in. --->
<cfset incustomtag = ''>
<cfloop index="elem"
list="#listrest(ancestorlist)#">
<cfif (left(elem, 3) eq 'cf_')>
<cfset incustomtag = elem>
<cfbreak>
</cfif>
</cfloop>
<cfif incustomtag neq ''>
<!--- Say that you are there. --->
<cfoutput>
I'm running in the context of a custom tag named #inCustomTag#.<p>
</cfoutput>
<!--- Get the tag instance data. --->
<cfset tagdata = getbasetagdata(incustomtag)>
<!--- Find out the tag's execution mode. --->
I'm located inside the
<cfif tagdata.thisTag.executionmode neq 'inactive'>
custom tag code either because it is in its start or end execution mode.
<cfelse>
body of the tag
</cfif>
<p>
<cfelse>
<!--- Say that you are lonely. --->
I'm not nested inside any custom tags. :^( <p>
</cfif>
</cfif>