Slot within a slot

I think I am noticing a bug with the slot macro. I am trying to add a slot within a slot, I have been able to do it like this:

#slot("erauNewsAutoTeaser" "{div id='features'>{h2>LATEST NEWS{/h2>{ul>" "{li>" "{/li>" "{/ul>#slot_wrapped('erauNewsFullPage' 'All ' ''){/div>" "sitepath=${sitepath}&datestart=${datestart}&dateend=${dateend}")##

*all less than characters replaced with {.

As you can see the slot within the slot works fine when the slot is embedded in the footer section of the slot marco, the next example is trying to embed another slot within the slot header:

#slot("erauEventAutoTeaser" "{div id='dates' class='secondary_section'>#slot_wrapped('erauEventFullPage' '{h2>' '{/h2>'){dl>" "" "" "{/dl>#slot_wrapped('erauNewsFullPage' 'All ' ''){/div>" "sitepath=${sitepath}&datestart=${datestart}&dateend=${dateend}")##

*again all less than characters have been replaced with {.

Output:

{div id='dates' class='secondary_section'>{h2>
		{a href="http://server.domain/Rhythmyx/assembler/render?sys_revision=1&sys_siteid=306&sys_authtype=0&sys_contentid=6929&sys_variantid=563&sys_folderid=4333&sys_context=0" class="html" target="" title="Events">Events{/a>
	{/h2>{dl>
		{a href="http://server.domain/Rhythmyx/assembler/render?sys_revision=1&sys_siteid=306&sys_authtype=0&sys_contentid=6929&sys_variantid=563&sys_folderid=4333&sys_context=0" class="html" target="" title="Events">Events{/a>
	{/dl>All 
		{a href="http://server.domain/Rhythmyx/assembler/render?sys_revision=1&sys_siteid=306&sys_authtype=0&sys_contentid=7257&sys_variantid=665&sys_folderid=3692&sys_context=0" class="html" target="" title="News & Events">News & Events{/a>

	{/div>

When this slot renders it will process the header slot twice and end processing instead of the expected wrapping of the slot contents that I believe should occur. Has anyone experienced this bug?

Long story short, the scope of the control variables used to loop through slot contents is not internal to the various #slot macros, nor does a macro even have its own scope anyway. Embedding one slot inside a header or footer is a dangerous and unreliable system at best.

In order to do what you’re trying to do, you could process the 3 slots in sequence without embedding one inside the other.

Try:


<div id='dates' class='secondary_section'>##
#set( $myParams = "sitepath=${sitepath}&datestart=${datestart}&dateend=${dateend}" )
#slot('erauEventFullPage' '' '<h2>' '</h2>' '' $myParams)##
#slot('erauEventAutoTeaser' '<dl>' '' '' '</dl>' $myParams)##
#slot('erauNewsFullPage' '' 'All ' '' '' $myParams)##
</div>