7. 12. 2010

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ářů.

Komentáře

Tagy: CMS efektivita články

blog comments powered by Disqus

Veřejná školení
Webexpo Academy, Praha

HTML5 & CSS3
29/5
Mobilní
webdesign
18/6