- Význam, přehled dostupných CMS
- Licencování a distribuce
- Instalace, zabezpečení, migrace
- Správa obsahu a jeho taxonomie
- Modularita, vzhledy, pluginy
- Souhrn
Význam, přehled dostupných CMS
- CMS (Content Management System) – význam pojmu z obecného hlediska zahrnuje všechny metody zabývající se správou digitálních obsahů. Tím obsahem může být webová prezentace, katalog, diskuze, technické pracovní protokoly, pracovní dokumentace apod. Tímto lze do CMS zahrnout celou řadu pracovních a informačních systémů.
- Obecně je hlavní filozofií CMS ulehčit takovouto správu obsahu.
- vhodné uživatelské prostředí – bez nutnosti znalosti programování
- rychlý přístup do administrace – často pouze pomocí webového prohlížeče
- databázový přístup – HZD (hromadné zpracování dat)
- šablonování výstupu – tvorba sestav, prezentací
- umožnění pracovní spolupráce – rozdělení oprávnění a rolí uživatelů
- analytické systémy – kontrolní funkce
- organizace a možnost sdílení souborů atd.
- V úzkém slova smyslu se CMS využívají k správě webového obsahu – alternativně lze použít publikační systém, redakční systém apod.
- Technická podstata reakčního systému – systém je tvořen webovou aplikací, která většinou na straně serveru provádí operace s databází nebo jiným typem úložiště. Webové skripty jsou často napsány v programovacích jazycích: PHP, ASP, JSP … Jako datové úložiště jsou využívány databázové systémy MySQL, PostgreSQL nebo jedno-souborové textové pomocí SQLite a jiné nedatabázové podoby zápisu do txt souborů rovněž dále označované jako LiteCMS.
- Typy redakčních systémů lze dělit podle různých funkcionalit a také podle toho jakým způsobem je obsah webu kategorizován:
- Blog – vznikl ze spojení Web Log – jedná se o prezentaci průběžně v různém čase doplňovaných příspěvků. Příspěvky jsou řazeny v čase, dle rubriky či podle klíčových slov. (např. https://wordpress.org/)
- Clan CMS – např. komunitní správa výsledků z herního průmyslu, prezentace pořadí apod. (např. https://bluethrust.com/)
- Specifické CMS – informační portály – většinou komerční projekty zabývajícím se prezentováním určitého druhu informací (např. https://www.tritius.cz/ který využívá ke katalogizaci knihovna Most)
- E-commerce – e-shop systém – aplikace k prodeji na internetu. (např. https://www.opencart.com/)
- LMS – e-learning CMS – systémy pro řízení výuky, dále označované také jako courseware (např. https://moodle.org/)
- Diskuzní fórum – systém správy diskuzních místností apod. (např. https://www.phpbb.cz/)
- Groupware – sdílení pracovních dokumentů a online management (např. https://www.collabtive.com/)
- Obrázkové galerie – prezentace fotografií a tvorba online alb (např. https://piwigo.org/)
- Sociální CMS – systém pro tvorbu vlastní sociální sítě, seznamek apod. (např. https://ph7cms.com/)
- Encyklopedické CMS / wiki CMS – systémy k organizaci znalostní báze, systémy kolektivní tvorby dokumentace (např. https://www.dokuwiki.org/)
Licencování a distribuce
- Jelikož redakční systémy jsou v podstatě aplikace a jejich autory mohou být fyzické i právnické osoby, které jsou držiteli copyrightu, vztahují se na ně pravidla používání a formy distribuce.
- Redakční systémy mohou být:
- komerční – proprietární (s uzavřeným kódem) – Tyto CMS pak mají jisté výhody (větší bezpečnost, specifické funkcionality, připravené na míru) i nevýhody (platba, nekompatibilita s konkurencí při migracích).
- svobodné – open source (s otevřeným kódem) – CMS takto licencované často umožňují vytvářet odvozená díla, lze je tedy upravovat. Odvozování díla však často bývá copyleftováno (je třeba splnit přání původního autora např. další sdílení pod původní licencí). Jako open source se často označují i samotné programovací jazyky. Typickou open source licencí je GPL (obecně veřejná licence). Ta může být ještě různě modifikována verzemi viz https://cs.wikipedia.org/wiki/GNU_General_Public_License.
- Distribuce – označuje způsob získání či doručení daného SW. Některé distribuce komerčního SW mohou být zatíženy omezeními.
- Krabicové verze – v 21. století se již praktikuje pouze u komerčního SW. Pokud je krabicově distribuován svobodný SW, může si distributor stanovit cenu za výkon služby (vytvoření instalátoru, konfigurátoru apod.) Takové případy distribuce redakčních systémů nejsou běžné na rozdíl od operačního systému např. Linuxových distribucí.
- Elektronická distribuce – CMS je nejčastěji volně k dispozici z webu projektu či komunity (u tzv. open source), někdy možnost stažení až po registraci – někdy dodání pomocí emailu. Komerční licence, i když je daný SW volně ke stažení, může být zatížena omezením (freeware, shareware – trial – demo apod.) U svobodného softwaru se zase může vyskytnout tzv. premium/pro verze určitého rozšíření základní verze CMS, které může být dostupné opět za úplatu. GPL totiž nebrání vytvářet placené rozšíření.
- Online služba (SaaS) – systém není distribuován k instalaci, uživatelé využívají již připravený systém v cloudu poskytovatele (typické pro blogy: http://blog.cz/, https://www.blogger.com/, https://wordpress.com/)
- Distribuce komunitně vyvíjeného CMS – je typická pro open source projekty, více známé jsou např. WordPress, méně známý SW umisťují autoři např. do repositáře GitHub. Komunitní distribuce mají tu výhodu, že díky WebAPI je možné neustále udržovat aktuální verzi systému. Vždy, když autor přidá do svého projektu novou verzi, uživatelé jednotlivých instalací jsou na to upozorněni, případně je aktualizace provedena automaticky.
Instalace, zabezpečení, migrace
- Instalaci lze provést:
- ručně – upravíme konfigurační soubory a umístíme skripty systému na webový server
- s průvodcem – nejdříve umístíme skripty systému na webový server, zajistíme pokud možno nejvyšší oprávnění k jednotlivým složkám a ve webovém prohlížeči spustíme adresu webu, kde se necháme veškerou konfigurací provést
- s podporou webhostingu – často v administraci hostingu lze instalaci vyřešit jedním tlačítkem. Hosting však nezajistí další potřebné bezpečnostní úkony.
- Ruční instalace (liší se podle konkrétního CMS):
- Nastavení konfiguračního souboru – zde nastavíme databázový konektor (adresa databázového serveru, jméno uživatele databáze, heslo uživatele databáze, název databáze), nastavení URL cest (adresa instalace, umístění pro upload apod.).
- Upload všech souborů skriptů CMS na webový server (např. pomocí FTP).
- Spuštění adresy instalace – v tu chvíli si redakční systém vytvoří potřebné databázové tabulky.
- Dalším krokem je vytvoření prvního administrátorského účtu.
- Zabezpečení redakčních systémů (opět se liší podle typu CMS):
- Některé CMS využívají zabezpečení proti slovníkovým útokům tzv. sůl. Tu lze vygenerovat např. pro systém WordPress na adrese: https://api.wordpress.org/secret-key/1.1/salt/ a použít ji u konfigurace při instalaci systému. Slovníkové útoky jsou nejčastěji realizovány pomocí tzv. brute-force, kterou útočník hádá různé kombinace hesel. Sůl nám tedy zde ochrání slabá hesla.
- Po ukončení designových prací, je třeba vypnout editor vzhledu či pluginu – lze provést zadáním vhodného kódu do konfiguračního souboru.
- Možnost využití bezpečnostních pluginů, které umožňují např. dvoufázové přihlašování, omezení počet pokusů o přihlášení či skrytí verze CMS.
- Správně nastavit oprávnění přístupu k souborům a složkám se skripty systému – tentokrát pokud možno co nejnižší.
- Vhodně nastavte konfiguraci samotného webového serveru – zabraňte zobrazování PHP chyb, provádějte pravidelné zálohy, pomocí direktiv v .htaccess zabraňte přímý přístup k přihlašovacím souborům a používejte pravidla “pretty links” pomocí mod_rewrite.
- Migrace – viz https://zielinsky.cz/studijni-materialy/zalohovani-a-migrace-databaze/
Správa obsahu a jeho taxonomie
- Základní struktura redakčních systémů:
- Front-end – neboli to co vidí návštěvníci webu, webová prezentace.
- Back-end – neboli administrace redakčního systému přístupná pouze s uživatelským jménem a heslem.
- WYSIWYG editor – neboli vizuální editor umožňuje plnit webový obsah bez znalostí HTML a jiného programování. Označení vzniklo z fráze “What You See Is What You Get”. Takže webový obsah lze plnit podobně, jako v klasickém textovém editoru. Redakční systém však umožňuje se z vizuálního režimu přepínat do HTML editoru.
- Různé CMS využívají různé editory. Některé jsou rovněž pod licencí GPL a lze je využívat i samostatně mimo redakční systémy. Jsou jimi např. FCKEditor, TinyMCE.
- Principiálně se jedná o Javascriptovou knihovnu, která z obyčejného elementu <textarea> udělá vizuální editor. Často jsou přidány nástroje pro formát písma, odstavce, seznamů, nadpisů, tabulek atd.
- Taxonomie webového obsahu – se zabývá jeho tříděním a kategorizací. Redakční systémy pracují s webovým obsahem dynamicky a z databázového pohledu se s ním operuje jako se záznamy, které mají jednotlivé atributy (nadpis, obsah, datum vytvoření, autor, kategorie, štítky, typ obsahu …). Tyto záznamy v redakčním systému mají význam jako příspěvky, stránky, komentáře, média. Kvůli lepším fulltextovým nástrojům je snahou všechen webový obsah organizovat do jedné databázové tabulky. Avšak referenční hodnoty jednotlivých atributů (názvy kategorií, štítků, uživatelů …) jsou umístěny v jiných tabulkách. Např. u blogovacího systému WordPress lze pomocí pluginů přeorganizovat typy obsahů, které se ukládají do jedné tabulky posts. Je tedy možné vedle základních typů obsahu přidat např. vlastní typ obsahu (Custom types) třeba zaměstnanci, knihy, týmy, kontakty apod. Front-end pak dokáže zobrazovat jednotlivé typy obsahu odděleně např. kontakty nebudou zamíchány mezi příspěvky. Tím pak některé redakční systémy získávají nové funkcionality a lze pak používat WordPress místo blogu jako katalog.
- Hierarchie obsahu – většina redakčních systémů také organizuje obsah ve vztahu rodič – potomek a tak lze určovat nadřízenost podřízenost rubrik příspěvků či stránek.
Modularita, vzhledy, pluginy
- Modularita – je charakteristická vlastnost redakčního systému, která umožňuje funkční nezávislost jednotlivých jeho částí a tím tedy zaměnitelnost. To umožňuje lepší udržovatelnost a rozšiřitelnost celého projektu.
- Moduly – komponenty pro CMS jsou jasně logicky oddělené od tzv. jádra systému. Jádro systému poskytuje jednotlivým modulům základní knihovny funkcí (API) a moduly je také mohou dále rozšiřovat či využívat.
- Vzhledy (themes, templates) – jelikož webová data jsou organizována jádrem systému a jsou od ostatních modulů oddělena, lze měnit design webu, aniž by muselo dojít k reorganizaci webového obsahu.
- Funkční moduly (pluginy, addony) – lze doplňovat nezávisle na vzhledu. Slouží k doplnění funkcí – např. statistiky návštěvnosti a jejich zobrazení.
- Instalace modulů – v moderních redakčních systémech lze v administraci přímo vybírat možné doplňky a téměř jedním kliknutím je do systému začlenit. Odpadá tak rozbalování archívů a jejich upload na webový server.
- Shortcode – slouží k abstrakci skriptů, kterými lze umístit určitý funkční výstup přímo do webového obsahu. WordPress systém šortkódů využívá např. takto: .
- Přizpůsobování modulů redakčních systémů – tím je myšleno to, že nevyhovující části přepisujeme přímo v PHP skriptech jednotlivých modulů – např. chceme-li změnit umístění nadpisů.
- Problémy přímé editace PHP souborů – protože redakční systémy umožňují automatické aktualizace pomocí webového API napojeného na komunitní servery, může dojít, že po aktualizaci přijdeme o všechny úpravy skriptů a stylů. Proto je třeba dodržovat některé zásady:
- Používání odvozených (child) vzhledů – více zde: https://www.wplama.cz/jak-vytvorit-child-theme-a-proc-ji-vyuzivat/
- Česká lokalizace modulů – pokud modul disponuje slovníkovými funkcemi (gettext), lze vytvářet pomocí specializovaného editoru (Poedit) český překlad do slovníkových souborů (.po a .mo). To lze poznat tak, že moduly obsahují složku pro jazyky (languages nebo lang apod.) Tímto pak odpadá opět přímá editace skriptů a aktualizace tak nezničí pracně přeložené texty.
Souhrn
Klíčové pojmy
CMS, LiteCMS, blog, e-shop, LMS, groupware, wiki-systémy, proprietární SW / open source, copyright, copyleft, GPL (GNU GPL), forma distribuce, komunitní vývoj SW, salt key, pretty links, font-end, back-end, WYSIWYG, taxonomie webového obsahu, modularita, šablonování, plugin, shortcode, child theme, gettext
Studijní materiály
- https://www.opensourcecms.com/
- https://cs.wikipedia.org/wiki/Fork
- https://www.michalblazek.cz/wordpress/open-source-redakcni-system-vs-ostatni-co-bude
- https://cs.wikipedia.org/wiki/GNU_General_Public_License#Verze_1
- https://www.interval.cz/clanky/10-super-ucinnych-zpusobu-jak-zabezpecit-wordpress/
- https://cs.wikipedia.org/wiki/S%C5%AFl_(kryptografie)
- https://www.jakpsatweb.cz/server/mod-rewrite.html
- https://cs.wikipedia.org/wiki/WYSIWYG
- https://wordpress.org/support/article/taxonomies/
- https://cs.wikipedia.org/wiki/Modul%C3%A1rn%C3%AD_programov%C3%A1n%C3%AD
- https://developer.wordpress.org/themes/advanced-topics/child-themes/
- https://cs.wikipedia.org/wiki/GNU_gettext