Úvod

Drupal je univerzální systém (CMF – Content Management Framework) pro správu webového obsahu bez konkrétní oblasti zaměření. Jedná se o nástroj umožňující vytvářet vlastní datovou strukturu. Drupal nabízí možnost úplného oddělení obsahové části od vzhledu, což umožňuje jednoduchou změnu výsledného vzhledu.

Drupal si můžete ihned vyzkoušet:

  • trydrupal8.com
    • na 24 h
  • simplytest.me
    • napište "Drupal" (případně konkrétní modul či téma vzhledu) a zvolte požadovanou verzi
    • pouze na 30 minut včetně instalace

Drupal není jen obyčený CMS – Content Management System. Vzhledem ke své univerzálnosti je vhodný zejména pro zakázkové řešení přesně na míru dle požadavků zákazníka např.:

  • osobní stránky
  • webové portály (uživatelské, firemní, veřejné, zpravodajské)
  • intranety
  • články, blogy
  • diskusní fóra
  • katalogy (produktů, firem, nemovitostí)
  • e-komerce (elektronické obchodování)
  • sdílení souborů a adresářů
  • socilální sítě
  • peer-to-peer sítě
  • obrázkové a multimediální galerie
  • podcasting
  • vlastní webové aplikace
  • atd. – případně kombinace více oblastí najednou

Proč Drupal

  • tipy ke čtení:
    • drupalinnovations.com/blog/why-digital-agencies-love-drupal
  • GNU General Public License (GPL)
  • modulární architektura – základ tvoří pouze webový framework, který je možné rozšiřovat o specifické požadavky zákazníka
    • snadná rozšiřitelnost o další funkce např.
      • plánovač zobrazování a skrývání obsahu (automatická expirace)
      • proces schvalování příspěvků a komentářů
      • webové formuláře
      • ochrana formulářů proti spamu
      • efekty a animace (slideshow, carousel)
      • multimediální obsah
      • vestavěný správce souborů
      • kalendář akcí
      • automatický odpočet do začátku akce
      • rozesílání informačních zpráv (newsletter)
      • vynucená úroveň bezpečnosti hesel
        • definice zásad tvorby hesel
        • omezení neplatných pokusů o přihlášení
        • automatické odhlášení
        • zobrazení zvoleného obsahu po prvním přihlášení atd.
      • a dalších více než 20.000 dostupných modulů
    • jednoduché vytváření vlastních modulů
  • objektově orientovaná koncepce (z historických a praktických důvodu je využíváno jak procedurální, tak z větší části i objektově orientované programování)
  • využívá knihovnu PDO (PHP Data Objects), která umožňuje podporovat více databázových sytémů (MySQL, PostgreSQL, SQLite, MariaDB, SQL server, Oracle, DB2 atd.)
  • snadné vytváření obsahu
  • podporuje webové standardy a SEO optimalizaci pro vyhledávače
  • dobře zpracovaná jak uživatelská, tak i programátorská dokumentace včetně knižních vydání
  • podpora mnoha jazyků (kompletní česká lokalizace jádra a nejpoužívanějších modulů):
    • automatický import překladových GNU gettext (.po) souborů
    • možnost on-line překladů
    • vícejazyčné weby
  • vysoký výkon díky víceúrovňové cache a urychlování (omezování přenosů):
    • cache stránek
    • cache bloků
    • optimalizace přenosu dat (CSS, JavaScript)
    • při náhlém nárůstu přenosů (provozní špičky, DoS útoky atd.) může zahlcení serveru zabránit automatická optimalizace výkonu modulů
    • je možné omezit maximální počet současně připojených anonymních a registrovaných uživatelů
  • na systému nezávislý šablonovací systém témat vzhledu umožňuje vytvořit moderní design a napomáhá tak k propagaci značky organizace (uživatelské prostředí se podobá spíše webové než desktopové aplikaci)
    • možnost Responzivního Web Designu tj. webu, který je přístupný i na mobilních zařízeních (web přístupný od telefonů, přes smartphony, tablety až po desktopy) jehož hlavní výhodou je pouze jedna jednoduše udržovatelná verze webového obsahu přístupná pro "všechna" zařízení
  • automaticky vytvářená čistá URL (v kombinaci s jednoznačnou adresou node/nid)
  • vlastní správa uživatelů
  • systém přístupových práv na základě uživatelských rolí:
    • anonymní uživatel
    • přihlášený uživatel
    • správce fór
    • redaktor
    • vedoucí sekce
    • webmaster atd.
  • podpora OpenID
  • vlastní definice formy obsahu a toku dat s možností řazení, tagování a verzováním příspěvků
  • textový obsah prochází před zobrazením filtry (HTML, PHP, WIKI, typografie atd.)
  • možnost vestavěného WYSIWYG editoru
  • víceúrovňová navigační struktura
  • kategorizace obsahu
  • možnost vytváření strukturovaného dokumentu s vlastní navigací (obsah + přechod na předchozí a následující "kapitolu")
  • souborové přílohy (přiložené dokumenty)
  • komentáře
  • diskusní fórum
  • ankety
  • vzdálená správa obsahu (Blog API)
  • syndikace vstupního i výstupního obsahu (RSS agragátor)
  • fulltextové vyhledávání
  • logování důležitých událostí:
    • chybové zprávy (403, 404, stav systému)
    • dostupné aktualizace
    • statistiky stránek (počet zobrazení, nejlepší stránky, nejvíce odakzující stránky atd.)
    • sledování uživatelů (přihlášení, editace obsahu, nejaktivnější uživatelé atd.)
  • možnost využití instalačního profilu
  • velmi dobré zabezpečení viz např. Drupal Security Report (přehled nejběžnějších útoků a jejich řešení v Drupalu)
  • velká celosvětová komunita s tisíci programátory, kteří pracují na vývoji jak základního jádra, tak i ostatních modulů
  • nové JavaScript knihovny: jQuery 2.0, Underscore.js, Backbone.js
  • většina CSS tříd (first, last, odd, even) nahrazena CSS3 pseudo selektory
  • podporu IE8 je možné "vrátit" modulem "IE8"
  • atd.

Drupal 8

Novinky:

  • nová pole: Date, Email, Link (možnost propojení interního obsahu), Telephone, Reference (obsah, komentář, blok, soubor, termín, uživatel atd.)
  • Responsive images
  • Tour – průvodce systémem a nápověda
  • Multilingual: Configuration Translation + Content Translation + Interface Translation + Language
  • Configuration Manager: přenos nastavení mezi testovací a ostrou verzí webu
  • Webservices: HAL + HTTP Basic Authentication + RESTful Web Services + Serialization (JSON, XML)
  • Transliteration (v jádře) – ve verzi Drupal-8.0.6 ovšem stále nepřekládá názvy soubrů :(
  • BigPipe (až od verze Drupal-8.1.x) – zrychlení načítání stránky

Tipy:

  • drupal.org/project/config_installer
  • previousnext.com.au/blog/printing-any-drupal-entity-pdf
    • drupal.org/project/entity_print
  • github.com/arshad/drupal-template-helper
  • dokumentace a zdroje informací:
  • Configuration Management – oddělení obsahu od nastavení (což umožní mnohem jednodušší migraci nastavení mezi weby než např. doposud používané moduly Features, Strongarm atd.)
    • development <-> staging <-> testing <-> live
  • mobile first – moderní webové stránky a aplikace
    • úplná administrace na mobilních zařízeních
    • responsive témata již v základu
    • Theming Drupal 8
    • github.com/sqndr/d8-theming-guide
    • dannyenglander.com/blog/drupal-8-attaching-core-libraries-and-other-scripts-your-theme
  • administrace je tvořena pomocí Views – možnost úplné konfigurace administračního prostředí
  • zakomponování Symphony2 wrameworku
    • objektové programování téměř v celém Drupalu
    • redcrackle.com/blog/say-hello-world-drupal-8-basic-steps-involved-creating-custom-module-drupal-8
  • výstupem již nebude "natvrdo" formátované HTML, ale může být "cokoli" (json, xml atd.)
  • kontext kontroler (aktualizace jen konkrétního bloku na stránce)
  • zjednodušená multijazyčnost (snížení počtu požadovaných modulů na minimum)
    • pohodlné vytváření vícejazyčných webů
    • drupal.org/project/multilingual_demo
    • drupal8multilingual.org
  • Views, (Display Suite), Manage form display i CKEditor jsou již součástí jádra Drupal 8 a navíc kromě normálního WYSIWYG "edit" módu nabízí i luxusní přímou "inline" editaci
    • úplná konfigurovatelnost administračního prostředí pomocí Views
  • zlepšení uživatelského prostředí pro editory
  • Twig – rychlý, flexibilní a hlavně bezpečný šablonovací systém
    • oddělení logiky a vzhledu
    • nevyžaduje znalosti PHP
    • pro zobrazení všech dostupných proměnných je možné v šabloně použít funkci {{dump()}}, pro konkrétních proměnných např. {{ dump(user, categories) }} nebo povolit "debug mode" v sites/default/services.yml atd.
    • PHPTempate vs Twig Engines
    • http://running-on-drupal8.co.uk/blog/twig-blocks-drupal
    • http://www.stevector.com/posts/2013/10/d8-twig-extends.html enlightened
  • PHP standardy (PSR-0, PSR-4, Namespaces, Traits)
  • Namespaces
  • Dependency injection and Services – koncept umožňující psát nezávislé funkční celky, které je následně jako Services možné použít v jiných částích aplikace (umožňuje např. mimo jiné psát efektivní Unit testy)
    • "web services" přímo v jádře, tudíž je možné publikovat obsah přímo v JSON nebo XML formátu
  • PhpUnit testy – umožňují efektivně a v krátkém čase otestovat business logiku a API (i z vlastního IDE)
  • Tipy ke studiu: OOP, Symphony, Doctrine\Common\An­notation, EasyRDF, Guzzle, Assetic, PhpUnit, Twig, Zend\Feed, Composer, PHPUnit atd.
  • přístupnost
    • "Area Live announcements" umožňuje vytvářet přímý výstup pro čtečky obrazovek zrakově postižených návštěvníků
    • WAI-ARIA
    • nativní podpora sémantického HTML5
  • rychlost, výkon a škálovatelnost
    • buytaert.net/making-drupal-8-fly
    • BigPipe – dynamické načítání obsahu stránek
    • SmartCache – vnitřní vyrovnávací paměť
  • Tipy:
    • pro produkční web nepoužijte vývojovou (dev) verzi – v popisu každé verze čtete, jaké jsou možnosti aktualizací
    • Proposal to create a Drupal 8 User Manual
    • appnovation.com/blog/generating-automatic-style-guide-drupal-8-theme
    • thenoccave.com/2015/01/08/drupal-8-add-the-current-title-to-the-breadcrumb/
    • drupal.org/node/2634364 - How to add a node ID as class to the <body> tag in D8
    • mediacurrent.com/blog/adding-custom-styles-ckeditor-wysiwyg

Patch:

  • drupal.org/node/2320037 – oprava překladu zkratek v Toolbaru

CSS

  • odstranění "blikání" administrační lišty
    • .toolbar-tray {
        margin-top: 39px;
      }

Budoucnost:

Historie:

  • Drupal 8 byl vydán dne 19. listopadu 2015
  • Drupal 7 byl vydán dne 5. ledna 2011
  • Drupal 6 byl vydán dne 13. února 2008
  • Drupal 5 byl vydán dne 15. ledna 2007
  • Drupal 4 byl vydán dne 15. června 2002
  • Drupal 3 byl vydán dne 15. září 2001
  • Drupal 2 byl vydán dne 15. března 2001
  • Projekt Drupal vytvořil dne 15. ledna 2001 Dries Buytaert