Po deseti měsících je na světě další verze doplňku Stamp, která nově získává informace o všech registrovaných uživatelích a ukládá je do Twig proměnné users
, z níž je lze následně použít v šablonách stránek nebo přímo ve stránkách, pokud jsou zpracovávány prostřednictvím Twigu.
Poměrně po dlouhé době je od 26. 12. 2022 k dispozici Stamp v1.0.5, který se od předchozích verzích odlišuje tím, že nově dodaná funkcionalita tentokrát žádná data nikam neukládá/nikde neupravuje, nýbrž je tentokrát výhradně získává z jiného úložiště, konkrétně pak ze složky s účty všech registrovaných uživatelů, tedy /user/accounts
, resp. příslušných souborů *.yaml
. V uvedeném úložišti jsou dostupné všechny informace, které uživatelé zadali při registraci. Například pro uživatele petira
(což je zároveň username
) se jedná o následující údaje:
fullname: 'Vít Petira'
title: 'Zakladatel a provozovatel projektu Grav.cz'
email: petira@grav.cz
Samozřejmě jsou v uvedených YAML
souborech i další údaje, ale ty nejsou nijak zajímavé pro případné použití doplňkem Stamp v rámci stránek. Na druhou stranu naopak dost informací schází, např. odkazy na web uživatele, popř. na jím používané sociální sítě. To bude úkolem pro doplněk Stamp v některé z příštích verzí.
V předchozích příspěvcích věnovaných doplňku Stamp v1.0.3 a následně doplňku Stamp v1.0.4 jsme si přestavili možnosti, kde mohou být uloženy informace o uživatelích, které následně zpracujeme v šablonách stránek nebo přímo na stránkách.
Jednou z možností bylo použít jako úložiště přímo strukturu stránek. Tuto variantu používá aktuálně i web Grav.cz, kdy informace o autorovi v úvodu jednotlivých článků jsou přebírány ze stránky jednotlivých autorů. Například pro tento článek, jehož autorem je Vít Petira, je tomu z následujícího úložiště.
Výhodou předchozího řešení je maximální flexifilita, která především umožnuje používat libovolné vlastní proměnné, a v neposlední řadě lze stránku použít i pro výpis křížových odkazů, tedy například všech příspěvků od konkrétního autora.
Naopak značnou nevýhodou je, že musíme vytvářet duplicitní informace o uživatelích, které už jsou uloženy někde jinde, konkrétně v uživatelských účtech, což je další možná varianta.
Můžeme polemizovat nad tím, že ne nutně všichni autoři musejí být registrovanými uživateli, ale to lze vyřešit jejich registrací a pouhou deaktivací účtu. Dalším limitujícím faktorem je omezený počet informací o uživateli, který je již zmíněn výše.
Uvedené ale můžeme uzavřít tím, že mohou nastat situace, kdy dané úložiště bude pro konkrétní projekt zcela dostačující. Pak můžeme jednoduše získat z Twig proměnné (ve skutečnosti se jedná o vícerozměrné pole) users
, do které doplněk Stamp dynamicky uloží informace o všech registrovaných uživatelích, proměnné user.username
, user.fullname
, user.title
a user.email
, např. následujícím Twig kódem:
{% set control = false %}
{% for user in users %}
{% if page.header.author == user.username %}
<i class="fa fa-user"></i> {{ user.fullname|e }} <i class="fa fa-users"></i> {{ user.title|e }} <i class="fa fa-envelope"></i> <a href="mailto:{{ user.email|e }}">{{ user.email|e }}</a>
{% set control = true %}
{% endif %}
{% endfor %}
{% if control == false %}
<i class="fa fa-user"></i> {{ page.header.author }}
{% endif %}
Aby uvedené fungovalo, musí se v nastavení doplňku Stamp aktivovat volba Twig variables
prostřednictvím přepínače, nebo uvedené provést nastavením proměnné twig
na true
v souboru stamp.yaml
, který je uložen ve složce /user/plugins
. Je to z toho důvodu, aby se zbytečně nespouštěl kód, který Twig proměnnou users
generuje, pokud se následně v Twigu nebude používat.
Shora uvedený Twig kód prochází všechny registrované uživatele a pokud záznam odpovídá autorovi uloženému v hlavičce stránky, pak o něm vypíše dostupné informace. V případě, že odpovídajícího autora nenalezne, vypíše pouze jméno autora uloženého v hlavičce stránky.
Kód by šlo samozřejmě více upravit, resp. optimalizovat, např. aby současně kontroloval, že je autor v hlavičce stránky uložen pod plným jménem, tedy {% if page.header.author == user.username or page.header.author == user.fullname %}
, nebo aby skončilo procházení, pokud je uživatel již nalezen, nebo aby nedošlo k žádnému výpisu, pokud nebude autor v hlavičce vůbec uveden.
Jedná se o vzorový příklad, jeho modifikaci pro konkrétní případy se meze nekladou.
Mějte na paměti, že Twig proměnná users
je ve skutečnosti vícerozměrné pole, které obsahuje informace o všech registrovaných uživatelích, takže v kombinaci s taxonomy.author
lze získat informace o více, resp. o všech dotčených uživatelích najednou. Pouze je potřeba příslušně upravit Twig kód, aby procházel pole taxonomy.author
a porovnával jej s polem users
. V budoucnu bude kód součástí doplňku Stamp v rámci přiložených šablon stránek.
Příští hlavní verze doplňku Stamp bude umožnovat nejen modifikaci proměnných v hlavičce aktuální stránky, ale i v její přímé rodičovské stránce, volitelně pak i ve všech nadřazených stránkách. Uvedené bude následně v některé další verzi možné více upřesnit, např. o počet dotčených úrovní a typy vzájemně ovlivněných stránek.
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í.