přejít na obsah přejít na navigaci

Linux E X P R E S, Etomite CMS: Šablony a chunky

Etomite CMS: Šablony a chunky

etomite_logo.jpg

Pomocí šablon můžete přesně rozhodnout, jak bude stránka v Etomite vypadat, a to jednoduše a bez jakéhokoli omezení. Kromě práce se šablonami si vysvětlíme, jak přesně fungují chunky a také několik dalších věcí.


Šablony

Šablony v Etomite se spravují velmi podobně jako snippety, o jejichž správě se můžete dočíst v minulém díle Etomite CMS: Snippety. Ve Správci funkcí a zdrojů najdete kromě karty Snippety i kartu Šablony. Šablony vytváříte, upravujete a mažete úplně stejně jako snippety.

Správa šablonSpráva šablon

Pamatuji si, že když bylo potřeba něco změnit ve vzhledu fóra phpBB, znamenalo to probírání se desítkami souborů s příponami .tpl, ve kterých se neorientoval skoro nikdo. Když jsem se tedy poprvé seznámil se šablonovacím systémem Etomite, nevěřil jsem, jak mohou být věci jednoduché.

Pokud tvoříte šablonu, prostě vytvoříte (X)HTML kód se zástupci, které zastupují nadpisy dokumentů, jejich obsah a podobně. Budete potřebovat znát následující zástupce:

  • [(site_name)] - vypíše název webu, definovaný v konfiguraci Etomite;
  • [*pagetitle*] - vypíše název zobrazeného dokumentu;
  • [*longtitle*] - vypíše dlouhý název zobrazeného dokumentu;
  • [*description*] - vypíše popis zobrazeného dokumentu;
  • [*content*] - konečně vypíše obsah zobrazeného dokumentu.

Naprosto jednoduchá šablona, které už jen zbývá aplikování nějakého CSS stylu, je třeba tato:

Vytvoření šablonyVytvoření šablony

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
[[MetaTagsExtra]]
<link rel="stylesheet" href="templates/sablona/style.css" type="text/css" />
</head>
<body>
<div id="kontajner">
	<div id="header">
		<h1>[(site_name)]</h1>
	</div>
	<div id="telo">
		<div id="left">
			<div class="verticalmenu">
				[[ListMenu]]
			</div>
		</div>
		<div id="content"><h2>[*longtitle*]</h2>
			[*content*]
		</div>
	</div>
	<div id="footer">
		<p>[[Copyright]] | [[PoweredBy]]</p>
	</div>
</div>
</body>
</html>

Jistě jste si všimli, že jsem kromě zmíněných zástupců použil i několik snippetů. Jde o snippety ze základní výbavy Etomite. Nejdůležitější z nich je snippet [[ListMenu]], který zařídí vykreslení menu. To pak stačí ostylovat pomocí CSS - třídy můžete zjistit jednoduše, stačí si zobrazit zdrojový kód zobrazovaných stránek.

Snippet [[MetaTagsExtra]] generuje spoustu (ne)užitečných meta značek do hlavičky dokumentu. Bohužel ve výchozím nastavení obsahuje spoustu příkladných nastavení, které je třeba změnit v úvodní části snippetu.

Použití v dokumentu

Přiřazení šablony k dokumentuPřiřazení šablony k dokumentu

Pokud chcete použít šablonu v konkrétním dokumentu, můžete ji k němu přiřadit na kartě Nastavení dokumentu. Pokud chcete, aby šablona byla zvolená u nových dokumentů automaticky, je ji třeba v konfiguraci Etomite nastavit jako výchozí na kartě Stránky a server.

Zvolení výchozí šablonyZvolení výchozí šablony

Buhužel neexistuje možnost, jak změnit šablonu pro všechny existující dokumenty, takže pokud vytváříte novou šablonu, kterou chcete použít pro celý web, existují dvě varianty, jak to udělat. První, klasická varianta, spočívá v přenastavení všech existujících dokumentů na novou šablonu. To není problém, pokud jich je málo. Pokud jich je víc, existuje malý trik. Vytvořte novou šablonu a nakopírujte do ní obsah staré. Pojmenujte ji třeba "Zaloha". Poté nahraďte obsah staré šablony novou šablonou a šablonu eventuálně přejmenujte. Vzhledem k tomu, že u dokumentů se ukládá ID šablony a ne její název, není to problém.

Vaše šablona může vypadat třeba taktoVaše šablona může vypadat třeba takto

Z výše uvedeného vyplývá, že různé dokumenty mohou mít přiřazeny různé šablony. Pokud chcete mít v různých šablonách stejné segmenty kódu, vyplatí se použít chunky...

Chunky

Chunk si můžete představit jako konstantu. Podobně jako snippet jej lze použít v obsahu dokumentu i v šabloně, ale na rozdíl od snippetu vypíše stále to samé. Ve Správci funkcí a zdrojů se nachází i karta Chunky a jejich správa probíhá naprosto analogicky.

Chunk HelloWorldChunk HelloWorld

Na obrázku vidíte vytvoření chunku s názvem HelloWorld, který má naprosto totožnou funkcionalitu jako stejnojmenný snippet z minulého dílu o snippetech. Chunk v dokumentu vypíšete takto:

{{HelloWorld}}

Volání chunkuVolání chunku

Pro volání chunku platí stejná pravidla jako pro volání snippetu. Jenom nevadí cache, takže nemusíte volat chunk nijak speciálně.

Chunk v akciChunk v akci

Praktické použití chunků

Modelová situace: Nechcete v šabloně použít snippet [[MetaTagsExtra]], protože jeho výpis je příliš obsáhlý, nebo se nechcete zbytečně hrabat v jeho konfiguraci. Používáte ale více šablon a chcete, aby byla hlavička spravována z jednoho místa. Vytvoříte si tedy chunk, který se bude jmenovat třeba {{MetaHead}} a bude obsahovat něco jako:

<title>[(site_name)] - [*pagetitle*]</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-language" content="cs" />
<meta name="author" content="LinuxEXPRES.cz" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />

Nyní můžete v různých šablonách použít v sekci <head> pouze odkaz na CSS soubor a volání tohoto chunku.

Kombinování snippetů a chunků

Jistě jste si všimli, že v šabloně lze použít jak snippety, tak chunky. Jak je to však s kombinováním těchto dvou prvků? Odpověď je prostá - lze tak činit naprosto libovolně. Můžete například na základě vyhodnocení podmínky ve snippetu nechat vypsat chunk, nebo použít v chunku několik snippetů za sebou. Podobně je možné použít chunk v chunku nebo snippet ve snippetu - včetně rekurzivního volání.

Použití chunků a/nebo jiných snippetů ve snippetu však přináší problém. Nahrazovaní názvu snippetu nebo chunku jeho obsahem probíhá až po vyhodnocení kódu snippetu. Pokud tedy použijete volání chunku například jako parametr funkce str_replace(), nebude nahrazování probíhat v obsahu chunku, ale v jeho názvu. Je tedy naprosto nesmyslné takto činit. Můžete však použít Etomite API, abyste dosáhli svého cíle:

$text = $etomite->putChunk("HelloWorld");

Další zástupci

Kromě volání snippetů a chunků můžete samozřejmě použít i konstanty z šablon. Volat šablonu logicky nelze. Pokud chcete udělat odkaz na dokument v rámci stránek spravovaných Etomite, neměli byste jej odkazovat přímo - tedy například odkazovat na home.html. Lepší je, pokud například v budoucnu změníte alias dokumentu, dokazovat pomocí zástupce [~1~], kde číslice je ID dokumentu, které vidíte v závorce za názvem dokumentu ve stromu, například takto:

Více odkazů najdete v sekci <a href="[~12~]">odkazy</a>.

Pokud chcete obecně odkázat na domovskou stránku webu, můžete použít složeného zástupce [~[(site_start)]~].

Shrnutí

  • Šablony udávají vzhled vašich stránek, přiřazují se konkrétnímu dokumentu.
  • Snippety jsou kousky PHP kódu, tvoří dynamický obsah vašich dokumentů, volají se pomocí dvojitých hranatých závorek. Můžete je použít v šablonách, v dokumentech, v chuncích a snippetech. O snippetech jsem psal v minulém díle.
  • Chunky jsou kousky HTML kódu, konstanty, které můžete použít v dokumentech, šablonách, snippetech a jiných chuncích. Volají se pomocí dvojitých složených závorek.
  • Šablony, snippety i chunky spravujete ve Správci funkcí a zdrojů, který najdete v pravém horním rohu menu navigace.

V příštím díle se podíváme na správu uživatelů a jejich oprávnění.

Nahoru

Odkazy

Příspěvky

Etomite CMS: Šablony a chunky
Bunak 27. 03. 2009, 07:07:26
Odpovědět  Odkaz 
Kdž vidím jak se tu rozplýváte, možná byste mohl zkusit podívat se na CMS made simple http://www.cmsmadesimple.cz/. Tam se asi rozplynete nadobro :o)
Etomite CMS: Šablony a chunky
R - stick 29. 03. 2009, 22:55:49
Odpovědět  Odkaz 
Jak padlo výše, pokud chcete naráz změnit šablonu ve více již vytvořených stránkách, nelze to provést hromadně. Kromě popsaného řešení (ponechání stejného názvu templaty a přepsání obsahu) to jde ale také SQL příkazem do databáze, kde v tabulce etomite_site_content si v poli template změníte ID šablony na tu, kterou požadujete. Je to rychlé - ale pozor - jen pro zkušené, kteří vědí, co dělají.
Etomite CMS: Šablony a chunky
Matej Kolesár 30. 03. 2009, 17:38:22
Odpovědět  Odkaz 
2 Bunak: Ani CMS Made Simple nie je dokonalý a chýbajú mu niektoré možnosti, ktoré Etomite má...

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Miroslav Hrončok

Miroslav Hrončok

Linux používám od roku 2004, aktivně se o něj zajímám od roku 2007, kdy jsem napsal svůj první článek pro LinuxEXPRES. Od roku 2009 jsem pracoval pro Liberix jako redaktor LinuxEXPRESu, od roku 2011 do konce roku 2012 jako jeho šéfredaktor. Nyní pracuji v Red Hatu, kde rozšiřuji distribuci Fedora o nové balíčky. Zároveň studuji na FIT ČVUT, kde se zabývám 3D tiskem a vyučuji několik předmětů. Spoluorganizuji pražskou konferenci LinuxDays a aktivně se účastním mnoha dalších českých linuxových akcí, jako přednášející nebo jako výpomoc.


  • Distribuce: Fedora
  • Grafické prostředí: Xfce

| blog