Jak na vlastní předlohy v editoru bloků ve WordPressu

Zpříjemněte si vytváření často se opakujících prvků obsahu tím, že pro ně připravíte vlastní předlohy (patterns). Není to vůbec složité a svou práci si tím výrazně ulehčíte. Ba co víc, zpříjemníte život i uživatelům webu, který připravujete.

WordPress je neodmyslitelně spojený s nejrůznějšími page buildery, pomocí kterých naklikáte vzhled i obsah webu během pár chvilek a máte hotovo. Budiž, je to jedna z cest, kterou se lze vydat, ale mě neoslovuje. Dávám přednost čistému WordPressu. Jednak proto, že sám už v sobě delší dobu má zabudovaný builder, jednak proto, že buildery třetích stran mají výrazně negativní dopad na rychlost webu a hrozí i případnými problémy při aktualizacích.

Ono mi vůbec připadá, že Gutenberg je coby page builder ve WordPressu stále podceňovaný. Přitom nabízí docela dost možností a jeho ovládání je poměrně snadné. Jasně, jeho komponenty nemají miliony kombinací, ale o to snad nejde. Není nic horšího, než když uživateli umožníte měnit úplně vše, co se mu zamane.

Pomocí šablon a předloh v Gutenbergu doplníte do WordPressu sady komponent, které si uživatel jednoduše rozklikne a poskládá z nich obsah stránky. Považuji to za velmi zajímavé řešení.

Kde se vkládají předlohy ve WordPressu

Pokud jste ještě kouzlo předloh ve WordPressu neobjevili, tak si v editaci otevřete přípravu nové stránky a klepněte na modré tlačítko +. Kromě nejrůznějších dostupných bloků se vám nabídnou i různé předlohy.

Jsou rozděleny do skupin: tlačítka, sloupce, záhlaví, galerie a další. Klepnutím na vybranou předlohu ji vložíte do stránky a následně upravíte její výchozí texty nebo obrázky.

Pokud se na vložené předlohy podíváte pozorněji, zjistíte, že jde vlastně o sadu bloků, které jsou nějakým způsobem nastaveny a připraveny. To je celé kouzlo předloh. Nedává do WordPressu vůbec žádné nové prvky, pracuje s těmi standardními, jen vám prostě zjednodušuje jejich vložení.

Ano, pro vložení odstavce to jaksi nemá smysl. Ale představte si, že chcete do stránek vkládat prvek podobný tomu na následujícím screenshotu. Prvek, který se skládá z nějakého odstavce doplněného CSS třídou. Nadpisu. Dalšího odstavce. Sloupečků. A obrázků v každém sloupci. To je už docela dost bloků poskládaných k sobě, pokud byste to měli opakovat na každé stránce. Chtít to navíc po běžném uživateli je pak zcela nereálné.

A přesně to je situace, na kterou předlohy skvěle využijete.

Ukázka předlohy ve WordPressu

Jak vznikne předloha

Prvním krokem k vytvoření předlohy je poskládání bloků v editoru. Začněte prostě na prázdné stránce skládat naši pomyslnou komponentu. Já dost často k některým bloků přidávám CSS třídu pomocí bočního panelu a položky Blok > Pokročilé > Další třída CSS.

Doporučuji nevkládat reálné texty, spíše jen naznačit, co do kterého místa patří. Kód předlohy pak bude kratší a uživatelé budou i více motivovaní tam nenechat výchozí obrázky nebo texty nadpisů.

Není to nutné, ale já mám ve zvyku připravenou „komponentu“ seskupit. Snáze se s ní pak pracuje a skupině bloků lze taky přidat třídu, což se na frontendu někdy hodí. Seskupení provedete tak, že myší vybrané bloky na stránce označíte a následně kliknete v pomocné liště na tlačítko se třemi tečkami a z nabídky vyberete Seskupit.

Seskupení a Kopírování v editoru bloků ve WordPressu

Implementace předlohy do šablony

Jsou dvě možnosti, kam připravenou předlohu do kódu WordPressu dopsat. První je použití pluginu, druhá tématu vzhledu. Já v tomto případě dám přednost tématu vzhledu.

Otevřete si v něm tedy soubor functions.php a doplňte do něj následující řádky:

/**
 * Custom block patterns
 */
require get_template_directory() . '/inc/custom-patterns.php';

Ve složce s tématem vzhledu vytvořte podadresář inc a do něj prázdný soubor custom-patterns.php.

V tomto souboru začneme tím, že vytvoříme novou kategorii předloh, aby uživatel měl odděleny ty výchozí ve WordPressu, od našich vlastních. Kategorie se bude jmenovat Můj web a její strojové označení bude mujweb. Přepište si jej klidně dle skutečného názvu svého projektu:

<?php

function mujweb_register_block_categories() {
	if ( class_exists( 'WP_Block_Patterns_Registry' ) ) {

		register_block_pattern_category(
			'mujweb',
			array( 'label' => _x( 'Můj web', 'Kategorie předloh', 'textdomain' ) )
		);

	}
}
add_action( 'init', 'mujweb_register_block_categories' );

Nic také nebrání tomu, abyste registraci kategorie předloh zavolali vícekrát a připravili si tak více kategorií.

Nyní už můžeme do připravené kategorie přidat naši novou předlohu:

function mujweb_patterns() {

    register_block_pattern(
        'mujweb/ukazkova-predloha',
        array(
            'title'       => __( 'Nadpis, text (a obrázky)', 'mujweb' ),
            'description' => _x( 'Blok s nadpisem, textem a případnými obrázky', 'Popisek bloku', 'mujweb' ),
            'categories'    => array('mujweb'),
            'content'     => "",
        )
    );

}
add_action( 'init', 'mujweb_patterns' );

Registrace předlohy vyžaduje nějaké zařazení zapsané strojovým názvem, v poli jsou pak předány její název, popisek, kategorie a samotný obsah předlohy. Ten máme zatím prázdný a musíme jej vykopírovat ze stránky, kde jsme si předlohu naklikali.

Opět tedy všechny položky označte, použijte kontextové tlačítko se třemi tečkami a tentokrát v něm vyberte funkci Kopírovat. WordPress vám do schránky vloží HTML kód, který je ještě nutné escapovat, než jej budete moci použít. K tomuto účelu existuje hromada online nástrojů, zkuste například JSON String Escape / Unescape nebo JSON Escape/Unescape.

Získaný escapovaný kód pak doplňte mezi uvozovky do PHP pole ke klíči content.

A to je coby základ všechno. Soubor uložte, znovu načtěte administraci, zkuste otevřít vytváření nové stránky nebo existující a v editoru bloků se přepněte na předlohy. Objeví se v nich nová kategorie a vaše první připravená předloha.

Pokud místo nové předlohy uvidíte po přepnutí na jejich seznam chybové hlášení, máte nějakou chybu v zápisu s registrací předlohy nebo v definici kategorií.

Předloh budete na webu pravděpodobně chtít připravit více. Není problém. Zopakujte postup s naklikáním vzoru na prázdné editační stránce, vykopírujte je pro escapování a do funkce mujweb_patterns() přidejte další volání register_block_pattern(), tentokrát s novým označením a obsahem další předlohy.

Tip: Pokud chcete mít opravdu profesionální web, je dobré se podívat možná po profesionálech. Pokud hledáte někoho mimo Brno, tak kluci z firmy Firamedia se zaměřují také na vývoj webu.

Nastavení stejného vzhledu předlohy ve frontendu i administraci

Na závěr jsem si ještě dovolil drobné doladění. Netuším, kolik z vás řeší, aby vzhled stránky v editoru odpovídal vzhledu na frontendu, ale při použití složitějších kombinací bloků s různými třídami, je to vhodné.

Do souboru functions.php v tématu vzhledu přidejte následující dva řádky:

add_theme_support('editor-styles');
add_editor_style( get_template_directory_uri() .'/editor.css' );

Ve složce s tématem vzhledu následně vytvořte soubor editor.css, do kterého doplníte či překopírujete styly pro obsah stránky tak, abyste docílili stejného zobrazení ve frontendu i v administraci.

Další povídání k tématu najdete v online dokumentaci WordPressu v kapitole Block Patterns.

Tagy

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

návštěvník

Dobry den, jake mate zkusenosti s Gutenbergem v Drupalu? Obcas vyjde patch, ale nova stabilni verze ne a ne vyjit. Ma tento editor v Drupalu stale potencial nebo je lepsi zvolit neco jineho?

Profile picture for user Jan Polzer

Gutenberg v Drupalu jsem zkoušel, ale nakonec nenasadil nikde do produkce. Dávám nakonec přednost Layout Builderu přímo v jádře Drupalu.

návštěvník

Jak je na tom výsledná čistota kódu WYSIWYG editor vs. Gutenberg vs. Layout Builder? Pamatuji si doby kdy se tyhle věc odsuzovaly a doporučovalo se klasické ruční psaní HTML.

Profile picture for user Jan Polzer

Tak pokud chcete ručně psané HTML, pak asi nebudete nasazovat Drupal či WordPress, ale hodíte to třeba na Hugo. Layout Builder se v Drupalu nijak výrazně neliší například od Paragraphů, výstup lze ovlivnit Twigem docela dobře.

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru