Šablony a Markdown
Zjistěte, jakou syntaxi Markdownu WBengine podporuje, jak se zdroj převádí na bezpečné HTML a v čem se liší soubory od obsahu v databázi.
Nativní šablony
Nativní engine kompiluje .tpl do PHP a může využívat OPcache. {$value} se standardně escapuje pro HTML; |raw používejte pouze pro HTML, které aplikace záměrně vykreslila nebo kterému důvěřuje.
<h1>{$title}</h1>
{$bodyHtml|raw}
{include 'Shared/footer.tpl'}
Markdown soubory
Soubor .md lze vykreslit nativním rendererem přímo nebo jej vložit do HTML šablony:
{include 'Central/notice.md'}
Markdown se zpracuje jako obsah. PHP tagy, proměnné a direktivy šablony uvnitř se nevykonávají. Vestavěný parser escapuje syrové HTML a omezuje protokoly odkazů.
Když už máte řetězec Markdownu, použijte sdílenou službu:
$html = $this->getSite()->getParent()->getMarkdown()->render($source);
Markdown v článcích databáze
V cms_articles nebo cms_article_translations nastavte content_format na markdown. Existující řádky po migraci zůstávají legacy_html. Staré HTML neoznačujte jako Markdown bez převodu a kontroly.
Podporovaná syntaxe Markdownu
Vestavěný parser podporuje CommonMark 0.31.2 a z GitHub Flavored Markdown tabulky, přeškrtnutí a úkolové seznamy. Mezi blokové prvky patří nadpisy, odstavce, vodorovné oddělovače, citace, číslované i nečíslované seznamy, odsazené bloky kódu a bloky kódu ohraničené zpětnými apostrofy nebo vlnovkami. Tabulky používají svislé čáry a oddělovací řádek.
V textu lze použít kurzívu, tučné písmo, řádkový kód, odkazy, obrázky, escapování interpunkce, automatické odkazy a e-mailové adresy i pevné zalomení řádku. Rozšíření GFM přidává ~~přeškrtnutí~~ a značky úkolů jako - [x] hotovo. Jazyk uvedený za úvodní značkou bloku kódu se zachová jako třída language-*.
## Nadpis
Odstavec s **tučným písmem**, *kurzívou*, `kódem` a [odkazem](https://example.com).
- první položka
- druhá položka
| Název | Hodnota |
| --- | --- |
| web | WBengine |
- [x] zkontrolováno
```php
echo "Ahoj";
```
Jak probíhá vykreslení
Parser převede zdroj na strom dokumentu. HTML renderer z něj vytvoří omezenou sadu prvků a escapuje text i atributy. Syrové HTML v Markdownu se zobrazí jako text a odkazy povolují jen bezpečná schémata, například relativní adresy, HTTP, HTTPS a mailto. Markdown nespouští PHP ani direktivy šablon. Výstup vestavěného rendereru lze bezpečně vypsat pomocí |raw; tento filtr nepoužívejte pro libovolný vstup.
U souboru .md nativní renderer zvolí Markdown podle přípony, ať se soubor vykreslí přímo, nebo vloží do .tpl. U databázových článků je content_format uložen samostatně u článku i jeho překladu. Pokud má hodnotu markdown, box Article nejprve zpracuje textová pole a šablona vypíše vytvořené HTML. Řádky označené legacy_html zachovávají dosavadní chování. Staré HTML nejprve zkontrolujte a převeďte, než jeho formát změníte.