in reply to Re: Ordering Template cards
in thread Ordering Template cards

I would use a [% FOREACH card IN cards %] ... [% END %] block in the template and just show 'em in the order given

I do exactly that when each card is a similar layout and it's really just a case of substituting in values. But here, every card is totally different. Some have tables, others just a heading a line of text whereas others have a graph. Hence why I was thinking of a separate template file for each card.

Replies are listed 'Best First'.
Re^3: Ordering Template cards
by Corion (Patriarch) on Jan 24, 2021 at 16:59 UTC

    If the cards are that different, I would keep them as separate files. This will make it easier to make changes to limited parts of the cards, and will maybe even encourage you to copy a template file for a slightly (but enough) different new card.

    As switching to a different card means a reload (I guess), keeping the different cards as different templates makes sense.

      If the cards are that different, I would keep them as separate files.

      In most cases, there is no similarity between them other than colours, font sizes and fonts.

      As switching to a different card means a reload (I guess)

      The cards are all displayed at the same time. One after the next. The current system is designed to be viewed on mobile and has a very constrained width on desktop so they appear one below the previous one. The refactored version may make use of the width of a desktop and display the cards in columns but, as they are all different heights, that won't be trivial.

Re^3: Ordering Template cards
by 1nickt (Canon) on Jan 24, 2021 at 16:57 UTC

    Hm, so maybe the card hash in the array cards has a field card.data and a field card.template, and then inside the loop you process the template with the data using INCLUDE? You can reference data in variables using a sigil in nested directives for this.

    Hope this helps!


    The way forward always starts with a minimal test.

      Something along these lines...

      [% templatefile = card.template %] [% INCLUDE "$templatefile" %]
      Thanks - I will test doing something along those lines