jak vložit šablonu podle výskytu v html kodu

pospi
Člen | 18
+
0
-

Ahoj potreboval bych vyresit problem : Mam v DB ulozeny html kod, ktery obsahuje znacku {galerie}, pri denerovani stranky se misto znacky ma na toto misto vlozit sablona. Jak to ale udelat v kodu ?
Vkladat to v presenteru ? Jak v presenteru vlozim do sablony dalsi sablonu ?
Vkladat to v sablone? Jak najdu a nahradim tu znaku ?

potreboval bych neco takoveho :

{foreach $paragraph|explode:'{galerie}' as $parag}
          {$parag}
          {if $iterator->first}
            {include ../gallery.latte}
          {/if}
        {/foreach}

Moc dekuji za radu. Jeste doplnim ze data ktere mi prijdou z DB nemuzu menit ani pregenerovat.

dakur
Člen | 493
+
+1
-

V presenteru si kód rozřež funkcí preg_split():

public functin renderDefault(): void
{
    $this->template->parts = preg_split('/({galerie})/', $code, flags: PREG_SPLIT_DELIM_CAPTURE);
}

/**
 * Pro `<p>abcd</p>{galerie}<p>efgh</p>{galerie}<p>ijkl</p>` vrátí:
 * array {
 *   0 => '<p>abcd</p>',
 *   1 => '{galerie}',
 *   2 => '<p>efgh</p>',
 *   3 => '{galerie}',
 *   4 => '<p>ijkl</p>',
 * }
 * viz https://3v4l.org/FRKki
 */

V šabloně pak iteruj nad všemi částmi a zjišťuj, zda jde o galerii:

{foreach $parts as $part}
  {if $part === '{galerie}'}
    {include ../gallery.latte}
  {else}
    {$part}
  {/if}
{/foreach}

Jen nevím jak z hlediska výkonnosti, ale na menších projektech to asi není třeba řešit.

Editoval dakur (25. 3. 12:54)