Borys Kupar
Borys Kupar

Reputation: 1721

Expression Engine - Pass loop variable into embeded template

have some trouble with Expression Engine variable passing in templates.

There is some piece of code:

// query:

{exp:channel:entries
  channel="static"
}

// repeating field in a loop

{content_matrix}
   <div>
      {text_cell}
   </div>    
   {image}
{/content_matrix}

//

{/exp:channel:entries}

I want to move content_matrix field with big inner HTML (example is shorter) sctructure into separate embed template for reusage in other templates.

Tried to build such embed but it doesnt work:

{embed="incl/content_matrix" matrix="{content_matrix}"}

And body of smaller template:

 {embed:matrix}
   <div>
      {text_cell}
   </div>    
   {image}
 {/embed:matrix}

In this way it works if you passing single element, like ID, but not for mupltiple element. Maybe it needs to pass entire entry.

How it can be done?

Thanks.

Upvotes: 1

Views: 1043

Answers (2)

notacouch
notacouch

Reputation: 3655

Have you considered using the Stash add-on?

I imagine you can stash the matrix content dividing between different parts of your html with some kind of separator, then in the embedded template wrap a search/replace for the separators with the proper html around the grabbed stash.

It might be less of a pain to write a quick, custom plugin, though.

Upvotes: 8

Derek Hogue
Derek Hogue

Reputation: 4564

Embed variables pass parsed output, not tags. So in your example:

{embed="incl/content_matrix" matrix="{content_matrix}"}

What you're actually passing in the matrix parameter is the full HTML table output of the data in that particular entry (since Matrix fields output a table when used as a single tag).

I think what you actually want to use to prevent repeating yourself is a Snippet. So just make a snippet containing:

{content_matrix}
   <div>
      {text_cell}
   </div>    
   {image}
{/content_matrix}

And save it as, say, matrix_loop. Then include it inside your Channel Entries loop like so:

{matrix_loop}

Upvotes: 3

Related Questions