2011-12-07 15 views
7

Hice algunas búsquedas, pero parece que no puedo encontrar ninguna información sobre cómo insertar un channel entry tag pair dentro de otro.Anidar un par de etiquetas de entrada de canal ExpressionEngine dentro de otro par de etiquetas de entrada de canal?

Cuando intento el siguiente código en una plantilla, se rompe la página y veo la apertura {reverse_related_entries sort="desc"} aparece como texto sin formato:

{exp:channel:entries channel="pages"} 
    {reverse_related_entries sort="desc"} 
     {if show_testimonial} 
      {exp:channel:entries channel="testimonials" orderby="random" limit="1"} 
       <blockquote> 
        {testimony} 
        <cite> 
         <span class="cite_name">{cite_name}</span><br /> 
         <span class="cite_org">{cite_org}</span><br /> 
         <span class="cite_title">{cite_title}</span> 
        </cite> 
       </blockquote> 
      {/exp:channel:entries} 
     {/if} 
    {/reverse_related_entries} 
{/exp:channel:entries} 

¿Hay una manera de ExpressionEngine a anidar un par de etiquetas de entrada de los canales en el interior ¿sí mismo?

Respuesta

13

Para anidar un par de etiquetas {exp:channel:entries} dentro de sí mismo, necesitará embed the template within another template usando una variable {embed}.

Para ello, basta con modificar su etiqueta principal las entradas de canal para parecerse a lo siguiente:

{exp:channel:entries channel="pages"} 
    {reverse_related_entries sort="desc"} 
     {if show_testimonial} 
      {embed="template_group/template"} 
     {/if} 
    {/reverse_related_entries} 
{/exp:channel:entries} 

A continuación, cree una nueva plantilla con el contenido de su par de entradas de canal etiqueta anidada:

{exp:channel:entries channel="testimonials" orderby="random" limit="1"} 
    <blockquote> 
     {testimony} 
     <cite> 
      <span class="cite_name">{cite_name}</span><br /> 
      <span class="cite_org">{cite_org}</span><br /> 
      <span class="cite_title">{cite_title}</span> 
     </cite> 
    </blockquote> 
{/exp:channel:entries} 

que se puede incluir en cualquier plantilla ExpressionEngine con la siguiente sintaxis, como se muestra anteriormente:

{embed="template_group/template"} 

Usar plantillas incrustadas es una forma estándar de algunos de los caprichos de ExpressionEngine y Parse Order(PDF, 32 KB), pero conllevan una penalización de rendimiento, así que tenga cuidado al elegir entre {embed} y {snippet}.

+1

Pensé en esto, pero el código actual ya está separado de una plantilla de inserción. Estaba preocupado por el rendimiento alcanzado, pero supongo que no tengo otra opción. Gracias por el aporte. – jchamb

+2

¿Puedo sugerir que vuelva a examinar y refactorizar la configuración de su plantilla en este caso? ¡Una incrustación dentro de una inserción es una línea que desconfiaría de cruzar! –

Cuestiones relacionadas