Ну, я вообще сомневаюсь в том, чтобы делать это, но я знаю, что все мы время от времени получаем код, с которым нам приходится иметь дело, и борьбу за то, чтобы заставить людей проводить рефакторинг.
Это должно делать то, что вы хотите.Важно отметить, что вам нужно убедиться, что ваш пользовательский тег закрывается или не будет работать!Просто используйте упрощенное закрытие, как у вас это было выше:
<cf_custominclude template="someFile.cfm" />
Это должно сделать трюк, называется, у вас есть это: custominclude.cfm
<!--- executes at start of tag --->
<cfif thisTag.executionMode eq 'Start'>
<!--- store a list of keys we don't want to copy, prior to including template --->
<cfset thisTag.currentKeys = structKeyList(variables)>
<!--- control var to see if we even should bother copying scopes --->
<cfset thisTag.includedTemplate = false>
<!--- standard include here --->
<cfif fileExists(expandPath(attributes.template))>
<cfinclude template="#attributes.template#">
<!--- set control var / flag to copy scopes at close of tag --->
<cfset thisTag.includedTemplate = true>
</cfif>
</cfif>
<!--- executes at closing of tag --->
<cfif thisTag.executionMode eq 'End'>
<!--- if control var / flag set to copy scopes --->
<cfif thisTag.includedTemplate>
<!--- only copy vars created in the included page --->
<cfloop list="#structKeyList(variables)#" index="var">
<cfif not listFindNoCase(thisTag.currentKeys, var)>
<!--- copy from include into caller scope --->
<cfset caller[var] = variables[var]>
</cfif>
</cfloop>
</cfif>
</cfif>
Я проверил этои это работает нормально, должно работать нормально, будучи вложенным.Удачи!
<!--- Pulls in steve2 var from include --->
<cf_custominclude template="someFile.cfm" />
<cfdump var="#steve2#" /> <!--- works! --->