Vyhledání a změna spec. řetězce na custom stránku (z databáze)

Alsatian
Člen | 164
+
0
-

Za vhodné řešení nebo navedení budu moc rád.

Ve svém administračním systému stránek vypisuji například stránku „produkty“. V DB mám upravitelný html text, který může obsahovat běžný text + spec. řetězec jako {{produkty}}, který by měl vypsat poslední 3 (třeba) produkty z DB produktů.

Například html obsah stránky (třeba proměnná html_text získána z DB) Produkty je:

"Výpis produktů <br>{{produkty}}"

Ideální by bylo mít samostatnou šablonku pro výpis produktů.

Umím kód přeložit pouze natvrdo, tedy v presenteru třeba takto:

$html_text = preg_replace('/{{produkty}}/', include('.../soubor-s-php-vypisem-poslednich-3-produktu.php'), $html_text);

Přijde mi to samozřejmě dost prasácké, respektive takto jsem to používal než jsem se seznámil s NETTE.

Editoval Alsatian (16. 7. 2018 15:40)

CZechBoY
Člen | 3608
+
+1
-

± to uděláš stejně v Nette, jen místo include použiješ render nějaký komponenty.

GEpic
Člen | 562
+
0
-

A nebo si udělat latte šablonu, použít proměnou, nasetovat jí (ten $html_text), a vyrenderovat. Ale mít na to sólo komponentu, to je ideální.

Editoval GEpic (16. 7. 2018 18:58)

Alsatian
Člen | 164
+
0
-

Díky vám oběma. Nakopnutí pomohlo. Nakonec zatím takto:

$template = $this->createTemplate();
$template->setFile(__DIR__ . '/templates/Post/FooForm.latte');
$template->predanaPromenna = "Blabla";
$html_text = preg_replace('/{{clanky}}/', (string) $template, $page->html_text);

Sólo komponentka by měla vypadat jak, prosím?

GEpic
Člen | 562
+
0
-

Prosím tě, proč tam máš ten preg_replace? To nemůžeš používat proměnnou?

$template = $this->createTemplate();
$template->setFile(__DIR__ . '/templates/Post/FooForm.latte');
$template->predanaPromenna = "Blabla";
$template->clanky = $page->html_text;
Ondřej Kubíček
Člen | 494
+
0
-

protože to nemá jako proměnnou, ale zástupný znak v db, kde už má nějakou historickou strukturu, který se nahradí za nějaký jiný kus kodu, výpis posledních článků, co jsem tak pochopil

CZechBoY
Člen | 3608
+
+1
-

On to ani není regulár takže by bohatě stačilo str_replace :-)

Alsatian
Člen | 164
+
0
-

Ano, v DB mám text, jehož části chci nahradit třeba výpisem posledního článku a podobně.
{{clanek:2}} dále může znamenat, že se vypíší jenom dva poslední články (a podobně).

Jak by se to pls tvořilo „moderně“?