190
Chapter 9: Creating and Using Custom CFML Tags
To create the second custom tag page:
1
Create a ColdFusion page with the following content:
<cfif thisTag.executionmode is 'start'>
<!--- Get the tag context stack. The list will look 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 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 you are lonely --->
I'm not nested inside any custom tags. :^( <p>
</cfif>
</cfif>
2
Save the page as nesttag2.cfm.
3
Open the file nesttest.cfm in your browser.
Summary of Contents for COLDFUSION MX 61-DEVELOPING COLDFUSION MX
Page 1: ...Developing ColdFusion MX Applications...
Page 22: ...22 Contents...
Page 38: ......
Page 52: ...52 Chapter 2 Elements of CFML...
Page 162: ......
Page 218: ...218 Chapter 10 Writing and Calling User Defined Functions...
Page 250: ...250 Chapter 11 Building and Using ColdFusion Components...
Page 264: ...264 Chapter 12 Building Custom CFXAPI Tags...
Page 266: ......
Page 314: ...314 Chapter 14 Handling Errors...
Page 344: ...344 Chapter 15 Using Persistent Data and Locking...
Page 349: ...About user security 349...
Page 357: ...Security scenarios 357...
Page 370: ...370 Chapter 16 Securing Applications...
Page 388: ...388 Chapter 17 Developing Globalized Applications...
Page 408: ...408 Chapter 18 Debugging and Troubleshooting Applications...
Page 410: ......
Page 426: ...426 Chapter 19 Introduction to Databases and SQL...
Page 476: ...476 Chapter 22 Using Query of Queries...
Page 534: ...534 Chapter 24 Building a Search Interface...
Page 556: ...556 Chapter 25 Using Verity Search Expressions...
Page 558: ......
Page 582: ...582 Chapter 26 Retrieving and Formatting Data...
Page 668: ......
Page 734: ...734 Chapter 32 Using Web Services...
Page 760: ...760 Chapter 33 Integrating J2EE and Java Elements in CFML Applications...
Page 786: ...786 Chapter 34 Integrating COM and CORBA Objects in CFML Applications...
Page 788: ......