Grav CMS zpracovává stránky dynamicky, tedy generuje každou stránku v tom okamžiku, kdy obdrží aktuální požadavek zaslaný ze strany klienta. Ve většině případů vrátí všem klientům identickou stránku bez ohledu na čas a místo, popř. použitý prohlížeč, nicméně finální výstup lze na straně serveru ovlivnit nastavením proměnných v hlavičce stránky, potažmo pak v Twig šabloně, která zajišťuje zpracování stránky, tak, že výstupy mohou být rozlišné (zveřejnění/skrytí stránek podle data, výpis náhodných příspěvků apod.). Alternativou jsou parametry, které umožňují generovat různý obsah i ze strany klienta, a to buď jejich přímým zadáním, nebo jejich odesláním přes jiné rozhraní (formulář, odkaz).

Grav vrací v principu obsah stránky, kterou nalezne ve stromové struktuře úložiště, tedy v souborovém systému (konkrétně ve složce /user/pages), na základě předaného URL. Například pro URL http://www.grav.cz/blog/blog-item-3 vrátí zpracovaný obsah příslušného souboru uloženého ve složce /user/pages/02.blog/blog-item-3, v tomto případě tedy souboru item.md.

/user
└── /pages
    ├── /01.home
    │   ├── /_header
    │   ├── /_features
    │   ├── /_body
    ├── /02.blog
    │   ├── /blog-item-1
    │   ├── /blog-item-2
    │   ├── /blog-item-3
    │   ├── /blog-item-4
    │   └── /blog-item-5
    ├── /03.about-us
    └── /error

Zdroj: Grav Documentation

Existují samozřejmě výjimky, které mají odlišné chování, typicky domovská stránka (je určena přímo kořenem domény, tedy za prvním /) a chybová stránka (její obsah se objevuje po zadání libovolného URL, které nemá odpovídající cílovou cestu, potažmo pak i soubor v úložišti). Dalším specifikem jsou aliasy a přesměrování, obecně pak přepisování cest, a to jak na úrovni stránek (lokální), tak na úrovni webu (globální). Každý má svůj konkrétní význam a způsob použití, jejichž detailní popis je nad rámec tohoto článku (opět tedy někdy příště, adresu článku případně doplním).

ColonGrav ale používá rovněž další pokročilou metodu, jak dynamicky upravovat výpis na stránce, a tím jsou parametry (params). De facto se jedná o obdobnou věc, jako jsou dotazy (queries, resp. query strings) v URL, tedy příslušná část za symbolem ?, např. http://www.grav.cz/page.php?id=123&lang=en, které zajistí výpis stránky/článku s identifikátorem číslo 123 v anglickém jazyce (neřešme nyní, že uvedené lze docílit i přes hezké URL, např. http://www.grav.cz/en/services). Záměrně píši obdobnou, neboť Grav umí dotazy rovněž zpracovávat, pokud je budete ve svém projektu používat, nicméně parametry slouží především ke konkrétním interním potřebám Gravu.

Parametry používají jako separátor mezi názvem parametru a hodnotou parametru symbol :. Ten lze případně změnit v nastavení systému, pokud k tomu však nejsou dány zvláštní důvody, doporučuji jej ponechat. V rámci jedné URL může být více parametrů, pak se oddělují standardně symbolem /.

Jak vypadá URL s parametry ukazují následující příklady:

http://www.grav.cz/blog/tag:grav
http://www.grav.cz/search/query:grav

V případě, že potřebujeme zadat více parametrů:

http://www.grav.cz/site/param1:foo/param2:bar
http://www.grav.cz/blog/archives_year:2021/page:3

V případě, že potřebujeme zadat více parametrů a současně zkombinovat s dotazy:

http://www.grav.cz/site/param1:foo/param2:bar/?query1=123&query2=en

Lepší než tisíce řádků plných teorie jsou příklady z praxe. Podívejme se tedy, kde Grav parametry využívá, ať již v jádru nebo prostřednictvím doplňků, na několika konkrétních příkladech.

Výpis příspěvků blogu označených štítkem (jádro Grav):

http://www.grav.cz/blog/tag:dokumentace

Lze použít i pro příspěvky blogu zařazené do kategorie (category), popř. jiného (vlastního) typu definovaného v taxonomii (např. autora).

Výpis příspěvků blogu z konkrétního měsíce (doplněk Archives):

http://www.grav.cz/blog/archives_month:apr_2021

Doplněk Archives obsahuje pokročilá nastavení, lze tedy filtrovat příspěvky z konkrétního roku (http://www.grav.cz/blog/archives_year:2020), popř. dle jiných (vlastních) kritérií, dále lze nastavit typ třídění, pořadí třídění, filtr taxonomie, kombinátor filtru (And/Or) a v neposlední řadě pak specifickou konfiguraci pro konkrétní cestu (výchozí je /blog).

Stránkování příspěvků blogu (doplněk Pagination):

http://www.grav.cz/blog/page:5

Doplněk Pagination má prakticky pouze jediné nastavení, tzv. Delta, které určuje kolik stránek vlevo, resp. vpravo od aktivní stránky má být dostupných (počínaje hodnotou Delta dojde k nahrazení symbolem ). Ponecháme-li výchozí hodnotu 0, pak se Delta ignoruje a zobrazí se všechny stránky (Delta má skutečně význam až tehdy, když dojde k „přetečení“ odkazů). Počet příspěvků na stránku je definován v hlavičce stránky (frontmatter) proměnnou limit, stejně jako další možnosti nastavení (povolení stránkování, typ třídění, pořadí třídění, zahrnutí dětí/potomků). Alternativně lze uvedené nastavit na úrovni Twig šablony, která zpracovává výpis stránky.

Výpis výsledků vyhledávání (doplněk SimpleSearch):

http://www.grav.cz/search/query:grav

Doplněk SimpleSearch má velmi obsáhlé možnosti nastavení, které nelze popsat v několika řádcích. Obecně lze uvést, že se jedná opět o nastavení, ve kterých částech webu má vyhledávání probíhat a jak následně vypsat výsledky.

Parametry jsou tedy skutečně mocným nástrojem, které naleznou uplatnění v mnoha rozdílných způsobech zpracování stránek.

V závěru ještě drobná poznámka, týkající se kanonické adresy všech stránek ovlivněných parametry, kterou Grav, resp. jím použitá šablona webu, např. Quark, generuje pochopitelně jednotně bez těchto parametrů. Jinými slovy, parametry mají vliv na samotný výstup, nikoli však na strukturu webu.

Nalezli jste v článku chybu, ať již gramatickou nebo faktickou? Článek prošel pouze autorskou korekturou a drobné nedostatky, jako překlepy nebo chybný slovosled, se v něm mohou vyskytovat. Pokud je objevíte, pomozte příspěvek upravit oznámením přes kontaktní formulář nebo na e-mail. Budou vám vděčni nejen autoři, ale zejména ostatní čtenáři.

Pomozte Grav.cz prolinkovat. Projekt Grav.cz se za dva roky provozu rozrostl a ve starších příspěvcích na Blogu mohou být uvedeny pasáže, které by stálo za to prolinkovat na konkrétní související řešení, která jsou uvedena v následujících příspěvcích. Pokud takové objevíte, pošlete informaci přes komunikační kanály uvedené v předchozím nebo následujícím odstavci.

Diskuze k článku není k dispozici. Pokud ale máte k tématu článku podněty, připomínky nebo dotazy, je možné je sdělit ve skupině na Facebooku, kde se k nim vyjádří nejen autor, ale případně i další diskutující.

Předchozí příspěvek Následující příspěvek