YAML soubor jako alternativa redakčního systému webu
S obsluhou obsahu pro prezentační weby na míru je potíž. Všichni v oboru víme, že neexistuje univerzální řešení. Někdy je neefektivní nebo z různých důvodů dokonce nemožné jakýkoliv redakční systém nasadit.
Často pak my vývojáři přistupujeme k vytvoření stránek staticky v HTML. Výhody naprogramovaného webu jsou ale pryč a každá úprava bývá náročná na čas i technické znalosti správce.
Přátelé rubisté (ale určitě i ostatní programátoři) vědí, že za posledních pár let se vyrojilo množství systémů pro správu obsahu založených na zpracování textových souborů — za všechny chci jmenovat Jekylla, Nestu nebo Karmiho staršího Marleyho.
Chtěl bych se zde pod čerstvými dojmy z Nesty podělit o výsledek několik měsíců starého experimentu s uložením obsahu webu do YAML souboru, který mě zpětně vzato velmi mile překvapil.
YAML jako CMS na Dream-Cars.cz
Pojďme ke konkrétnímu využítí myšlenky na webu klienta. Veřejná část webu je naprogramovaná jako by měla přístup k databázi. Namísto redakčního systému a databáze je však správa obsahu i jeho uložení realizováno v jediném YAML souboru.
YAML soubor s katalogem aut vypadá skoro lidsky, alespoň z vývojářského pohledu na svět. :) YAML je pro strukturovaná data tímtéž co Markdown (nebo Texy!) pro text. Zde je zjednodušený příklad souboru cars.yaml:
bmw-z4-cabrio:
name: BMW Z4 Cabrio
price_1hour: 2900
price_3hours: 4900
price_1day: 9900
price_apposition_per_km: 7
is_new: false
published: true
caterham-7-roadsport:
name: Caterham 7 Roadsport
price_1hour: 2900
price_3hours: 4900
price_1day: 9900
price_apposition_per_km: 7
is_new: false
published: true
Takové Rails si s YAML rozumí zcela přirozeně, ale i pokud – jako já v tomto případě – musíte použít PHP, stačí nainstalovat knihovnu Spyc, která obsah YAML souboru převede do asociativního pole:
require_once "spyc.php";
$cars= Spyc::YAMLLoad("cars.yaml");
Pak už data vypíšete tak jak jste zvyklí:
foreach ($cars as $car) {
echo $car['name'];
}
Ušetřený čas vs. nároky na obsluhu
Řešení jako obvykle není vhodné nasadit vždy a všude — správce obsahu musí znát limity formátu YAML, být schopný soubor upravit a dostat ho na produkční server.
Ačkoliv se to geekům může zdát nepochopitelné, ani úpravy obsahu ve formátu YAML nejsou pro „normální” lidi zrovna pohodlné. Nemluvě o aktualizaci přes FTP, nebo třeba úpravách přes Github v té lepší variantě. Správce prostě musí být skoro-geek nebo alespoň velmi dobře znát sumu peněz, kterou mu toto nepohodlí ušetří. :)
Obsah Dream–Cars je doplňován ručně produkovanými obrázky, a tak jej vytváříme i upravujeme většinou sami, klient mění jen občas drobnosti. V tomto workflow YAML proti verzi s obsahem uloženým v HTML souborech šetří zajímavé množství času a peněz. Například přidání nového auta zabere o 2–3 hodiny času méně.
Máte nějaký svůj způsob jak obejít vytváření CMS na míru poháněného databází? Máte pochyby? Vzhůru do komentářů.