Introductie Drupal development
-
Upload
bart-hanssens -
Category
Internet
-
view
843 -
download
1
Transcript of Introductie Drupal development
Introductie Drupal
Introductie Drupal
INTEC Brussel 30 sept 2014
Agenda
Over Fedict
LAMP stack
Drupal algemeenOverzicht, community
Drupal 6 / 7Opbouw, modules en distributies, talen
Drupal 8, vooruitblik
Sites en modules testen
Eenvoudige tekening van een mannetje wijzend naar de agenda.
Overzicht
Over Fedict
E-Gov componenten en dienstenNetwerk tussen gebouwen / internet (FedMAN)
Gegevensuitwisseling (Federal Service Bus)
Authenticatie (Federal Authentication Service)
Website platform en service (Drupal OpenFed)
Elektronische identiteitskaart
http://www.fedict.belgium.be/nl/service_catalogue
ICT medewerkers via Fedict Selecthttp://www.fedictselect.be
Federale Overheidsdienst voor ICT
LAMP stack
Linux, Apache, MySQL, PHP
MySQLPHPLinuxApache
Open source besturingssysteemBegonnen als hobbyproject in 1991
Alternatief voor dure Unix systemen
Van kleine tot grote systemenModem / routers (BeBox)
Smartphones / tablets (Android)
PCs
Supercomputers
Linux
Larry Ewing, http://commons.wikimedia.org/wiki/File:Tux-shaded.svg
Open source webserverSerie patches NCSA in 1995
Draait op Linux, Windows, BSD, OS X, ...
Ooit door 70% van alle sites gebruikt (nu 30%)
Erg veelzijdige serverAllerlei modules: proxy, beveiliging, scripts, logging,
Deel van Apache Software Foundation
Apache HTTPd
Open source relationele databaseOntstaan in 1995
Draait op Linux, Windows, BSD
C, Java, .Net, PHP, Python, Ruby connectors
Firma gekocht door Sun (nu Oracle) in 2008Product blijft open source...
daarnaast ontstaan varianten zoals MariaDB, Drizzle
WebScaleSQLFacebook, Twitter, LinkedIn (Google)
MySQL
Script taal voor webpagina's Begonnen in 1995 (Personal Home Page)
Draait op Linux, Windows, BSD
Joomla, WordPress, phpMyAdmin, phpBB, ...
Nu meer aandacht voor performantieAPC, Zend Opcache / Optimizer+ opcode cache
Facebook HipHop / HHVM compiler
PHP
Drupal: overzicht
Drupal site: voorbeeld
(Web) Content Management SysteemOntstaan in 2001
Open source (GPL)
1000-en modulesWorkflow, integratie, beheer, e-shop, ...
Meestal op LAMPDraait soms ook op BSD, MacOS X, MS-Windows
op nginx, IIS webserver
Postgres, MS SQL Server / Azure database
Drupal
Actieve gebruikersgroepen
Geen licentiekosten
Veel documentatieHandboeken, online
Zeer veel mogelijkhedenUitbreiden functionaliteit, wijzigen lay-out
Zeer populairVeel kleine en grotere Drupal-bedrijven
Sterke punten
100-en overheidssites in BelgiZuinigMetStraling, OFO-IFA, HRJ, Civiele Veiligheid ...
Overheidssites in het buitenlandWhiteHouse.gov, maar ook in Australi, Frankrijk, ...
StuBru, Vier, VTM, Kinepolis
Amnesty Int, UNICEF.be, Greenpeace UK
Carrefour, Essent, Tesla Motors
Zeer populair
Standaard zoekmotor is beperktGeen autocomplete, wildcard, search in documenten
=> Oplossing is Apache Solr / Lucene + Tika (Java)
Meerdere talen op 1 site is soms lastigExtra modules en configuratie nodig
=> Eindelijk out-of-the-box in Drupal 8
Mix van content- / configuratiebeheerZeer moeilijk om enkel content / config te kopiren
=> Drupal 8
Zwakke punten
Elke major release heeft andere APIModules moeten vaak opnieuw ontwikkeld worden
Niet bedoeld voor documentbeheerWel integratie met bijvoorbeeld Alfresco mogelijk
Zwakke punten (2)
DocumentbeheerAlfresco (via CMIS module)
MultimediaYoutube, Vimeo (Media module)
Sociale MediaTwitter, Facebook (AddThis, ShareThis...)
StatistiekenGoogleAnalytics
Voorbeelden integraties
Solr server(Java)Drupal(PHP)
Drupal en Solr search
Apache SolrModulesLucene(index)Tika(extractie PDF,...)
File
Content
Websitehttp://drupal.org
Online site bouwen (gratis maar wat beperkt)http://simplytest.me/
http://www.drupalgardens.com/
http://www.acquia.com/acquia-cloud-free
Snel van start
Oracle VirtualBox (desktop)Open source virtualisatie
MacOS X, Linux, MS-Windows
https://www.virtualbox.org/
Virtuele machineshttp://www.turnkeylinux.org/
LAMP stack voor MacOS / Windows / LinuxGoed voor development, niet voor productie
https://www.apachefriends.org/index.html
Snel van start (eigen machine)
Drupal: community
Project voor themes, modules, ...
Referentie (klanten / werkgevers)
Gratis + bespaart werkAutomatisch aanmaken downloads
Bij correct gebruik: link bug ticket naar fix in code
Automatische tests mogelijk
Statistieken aantal sites die module gebruikenEnkel sites die Update module hebben geactiveerd
Enkel totalen, geen gedetailleerde lijst van sites
Beheer op drupal.org, voordelen
Projectpagina: voorbeeld
Algemene informatieBeschrijving, lijst ontwikkelaars, downloads
Statistieken, laatste activiteit
Eventueel link naar gelijkaardige projecten, documentatie
Issue trackerBugs, vragen, aanvraag nieuwe functies
Iedereen mag commentaar geven / patches sturen
Projectpagina: functies
Ontwikkeld door Linus TorvaldsOorspronkelijk om versies Linux kernel te beheren
Beschikbaar voor Linux, Windows, MacOS X...
Wie heeft wat wanneer gewijzigdTerugkeren naar vorige versie is mogelijk
Commentaar toevoegen waarom
Link met projectpagina op Drupal.orgGit Issue #12345 ... wordt gelinkt aan ticket 12345
Git versiebeheer
Projectpagina: git commits
Iedereen kan sandbox project aanmakenProjectpagina, git,
(Nog) geen unieke projectnaam (enkel nummer)
Full projects door goedgekeurde developersUnieke naam op drupal.org
Promotie sandbox => full is mogelijk
Mogelijkheid om anderen toegang te gevenBeheren tickets, beheren projectpagina, ...
Zelf project maken drupal.org
Niet vereist om patches op te sturen
Voor wie zelf modules... op d.o. wil beherenDoel: verhogen kwaliteit modules
Eenmalige review door andere drupal.org developers
Nakijken correct gebruik Drupal API, documentatie...
Kan helaas weken / maanden duren (vrijwilligers)
Nadien onbeperkt aanmaken projecten
Eenmalige developer / code review
Lijst van Drupal-bedrijvenTraining, hosting, ontwikkeling,
Gekoppeld aan activiteiten / projecten op d.o.
Lijst van Drupal-boeken
Marketplace
Drupal 6 / 7: opbouw
Distributie
Van module tot distributie
ModuleModuleThemeCoreModuleModuleModuleModuleThemeLibraryProfileModuleModuleLibraryTheme
Layout2 000+ gratis themes
Mix van HTML / CSS / Javascript en/of PHP
Subthemes mogelijk Gebaseerd op / variant van bestaand theme
Sneller te ontwikkelen, vaak al mobile, responsive
Populaire base themes: Zen, Omega
Themes
Core modules (standaard in Drupal)Blog, Page, ...
Contrib modules25 000+ gratis modules
Wisselende kwaliteit en ondersteuning
Verbetering functies / extra mogelijkhedenIntegratie Google / Facebook / Twitter diensten
Workflow, eCommerce, beheer content / gebruikers, ...
Modules
Geschreven in PHP en/of Javascript
Visuele effecten / opmaakJquery Cycle, SuperFish, ...
Integratie met andere dienstenOpenLayers, MailChimp, ...
Online HTML editorZit niet standaard in D6 / D7 (wel in D8)
CKEditor, TinyMCE
Libraries
Installation profilesKeuze (enkel) bij installatie
Verzameling modules, themes, libraries
Gescripte configuratie van deze modules
800 distributiesCore + installation profile(s), modules, themes
Commerce Kickstart, OpenFed, Acquia Commons, ...
(Installation) profiles en distributies
Drupal 6 / 7: modules
Goeie informatici zijn lui
http://commons.wikimedia.org/wiki/File:Lazzaro1.jpg
Zelf een module bouwen ?
Bestaat er al een module ?Actieveontwikkeling(Co-)maintainerworden ? Patch mogelijk ?Eigen moduleJ NJ NNNPatchJJ
.infoNaam, versie van module, afhankelijkheden
.installCode installatie / upgrade / verwijderen module
.module / .incEigenlijke module en include files
.testSimpleTest bestanden
Bestanden van een module
.info voorbeeld
name = Datedescription = Makes date/time fields available.project = "date"version = "7.x-2.8"package = Date/Timecore = 7.xPhp = 5.2dependencies[] = date_apifiles[] = date.migrate.incfiles[] = tests/date_api.testfiles[] = tests/date.test
Lijst van Drupal functies, constanten
Form API / builderFormulieren
HooksInstallatie / verwijderen module
Toevoegen / verwijderen content / gebruikers / menu's
Menu's, fields, ...
Drupal API
Menu hook voorbeeld
/** * Implements hook_menu(). */function devel_menu() {... $items['devel/settings'] = array( 'title' => 'Devel settings', 'description' => 'Helper functions, pages', 'page callback' => 'drupal_get_form', 'page arguments' => array('devel_admin_settings'), 'access arguments' => array('administer site configuration'), 'file' => 'devel.admin.inc', 'menu_name' => 'devel', );... return system_settings_form($form);}
Drupal 6 / 7: distributies
Veel sites op zelfde platform
Voordelen:Sneller beginnen met sites te ontwikkelen
Makkelijker te onderhouden (bij strikt beheer)
Nadelen:Beetje configuratiewerk
Minder flexibel
Wanneer een distributie bouwen ?
Command line (php) toolsModules (des)activeren, backups,
Uitbreidbaar met eigen commando's
Drush makeBundelen core, modules, patches, themes...
Bij voorkeur exacte versienummers gebruiken
Drush tool
Makefile voorbeeld
libraries[colorbox][download][type] = "get"libraries[colorbox][download][url] = "https://github.com/jackmoore/colorbox/archive/1.5.13.zip"libraries[colorbox][directory_name] = "colorbox"libraries[colorbox][type] = "library"
projects[admin_language][download][type] = gitprojects[admin_language][download][branch] = "7.x-1.x"projects[admin_language][download][revision] = 6f0a6e5projects[admin_language][subdir] = contrib
projects[i18n][version] = "1.11"projects[i18n][subdir] = contribprojects[i18n][patch][2250501] = "http://drupal.org/files/issues/i18n-node_edit-2250501-8.patch"
Open source =/= zonder licentiebepalingenBeperkingen / verplichtingen
Verschillende licenties niet altijd compatibel
Drupal: GPL v2 of laterCode beschikbaar stellen aan gebruiker
Gebruikers mogen code doorgeven
Drupal: whitelist compatibele componentenAlle drupal.org modules / themes
Enkele externe modules / libraries ...
Licenties
Projectpagina etc zoals bij module
Gecontroleerde drush make fileEnkel full modules / themes van drupal.org
Beperkte lijst toegestane libraries
https://drupal.org/project/drupalorg_whitelist
Distributie op drupal.org
Drupal 6 / 7: meertaligheid
Meertaligheid
http://commons.wikimedia.org/wiki/File:Br%C3%BCssel_%28Ortstafel%29.jpg
Labels, foutboodschappen ...
Standaard mails, site slogan, ...
Navigatie / menu's
Drop-down lijsten / taxonomies
Inhoud pagina's
Vertalingen
(Veel) extra modules nodigi18n, i18nviews, entity translation
Vertaling niet altijd 1-op-1Vb: NL + FR site met beperkte vertaling naar EN + DE
Wat met menu's ? Pagina's die enkel in 1 taal bestaan ?
Vertaling gebeurt op verschillende plaatsenOok verschillende rechten nodig
Aandachtspunten
Drupal 6Vertaling per node, elke vertaalde node een andere ID
=> wat met bijvoorbeeld likes (vertaalde of alle nodes ?)
Synchroon houden auteur, datum ? (i18nsync)
Drupal 7Vertaling per node, zoals in D6
Of per veld (entity translation)
=> zelfde ID, maar werkt niet altijd met alle modules
Vertaling van inhoud
Sites en modules testen
Standaard in D7 (Testing) moduleAparte module in D6
Testen van functies tijdens ontwikkelingNiet verplicht, wel sterk aan te raden
Testen kunnen ook automatisch draaien op d.o.
Simpletest module
Simpletest voorbeeld
Simpletest rapport
Automatische code reviewhttp://pareview.sh
Documentatie, correct gebruik API, naamgeving...
Tips ivm veiligheid en performantie
Eigen te schrijven unit tests (SimpleTest)https://drupal.org/simpletest
Development modulehttps://drupal.org/project/devel
Hulpmiddelen
Automatiseren testen via browserAansturen IE, Firefox, Chrome, via script / code
Java, Python, C#, Ruby, (PHP)
http://www.seleniumhq.org
Nabootsen wat gebruiker doet / zietKlikken, uploaden files, invullen formulieren
Aanvulling (geen vervanging) unit testen
Staat los van Drupal (wel module beschikbaar)
Opstellen kan wat moeite kosten
Selenium
Selenium voorbeeld (python)
from selenium import webdriverdriver = webdriver.Firefox()driver.get("http://www.google.com")
inputElement = driver.find_element_by_name("q")inputElement.send_keys("cheese!")inputElement.submit()
try: WebDriverWait(driver, 10).until(EC.title_contains("cheese!")) print driver.title
finally: driver.quit()
Scripten installatie devlopment-omgeving
Virtuele MachineVMWare, VirtualBox,
Provision toolsShell scripts, Chef, Puppet, ...
https://www.vagrantup.com
Vagrant
Drupal 6 / 7: Varia
D6: Content Construction KitEnkel op Nodes (Content Types)
D7: Entity TypesNodes, Comments, Taxonomy, Users
=> extra velden, vertalingen (Entity Translation)
=> Views, Rules
Entity API
Drupal 7: Entities
Uitschakelen niet-gebruikte modules
Drupal cachingPage cache / Block cache
Views query results cache
Eigen code: &drupal_static(__FUNCTION__)
CSS / Javascript aggregation (1 bestand)
PHP versie
Memcache
Performantie
Drupal 8: vooruitblik
Release: eind 2014 ??
Hergebruik PHP frameworkhttp://symfony.com/blog/symfony2-meets-drupal-8
http://cipix.nl/understanding-drupal-8-part-1-general-structure-framework
VoordelenInteressanter voor niet-Drupal (PHP) developers
Laat toe om nieuwe functies sneller te ontwikkelen
NadelenLeercurve voor ervaren Drupal developers
Herschrijven modules en themes
Gebaseerd op Symfony 2
Configuration ManagementGescheiden houden content en inhoud
(REST) Web ServicesMakkelijker om feeds te maken / data binnen te halen
Meer functionaliteit standaard aanwezigMeertaligheid, HTML Editor, Views
HTML5 / Mobile / AccessibilityGeen ondersteuning meer voor IE8
Grote verbeteringen
Gebruiksvriendelijke UI
Configuration API
Uitwisselen via YAML filesVb: van development naar productie-omgeving
(Oorspronkelijk niet in database, sinds kort wel)
Configuration Management
Validation APINiet enkel meer voor formulieren (vb ook voor REST)
Voorbeeld: controle maximum waarde
State APINiet verwarren met Configuration API
Voorbeeld: laatste keer dat cron uitgevoerd werd
In D6 / D7 meestal bijgehouden in Variable
Tour APIGebaseerd op Joyride.js
Andere APIs
VoordelenNiet Drupal-specifiek
Ontwikkeld door de makers van Symfony 2
Leesbaarder
Geen PHP code meer in templates (= veiliger)
NadeelLeercurve voor ervaren Drupal themers
Twig themes
Twig voorbeeld
{# This is a comment #}{{ 'List'|t }}
- {% for choice in menu %}
- {{ choice.name }} {% endfor %}
Drupal 7 blijft ondersteund
Drupal 6 ?Ondersteuning eindigt 3 maanden na release D8
https://www.drupal.org/node/2288521
Heel wat sites draaien nog op Drupal 6 !Upgrade naar D7 / D8 kan lastig zijn
Niet alle modules al beschikbaar / stabiel
=> (betalende) ondersteuning door Drupal-bedrijven
Backdrop fork ?
Wat met bestaande Drupal sites ?
https://drupal.org/drupal-8.0
https://www.drupal.org/update/modules/7/8
https://www.acquia.com/blog/d8migrate
https://groups.drupal.org/core/twidc
https://www.drupal.org/node/2127611
Meer informatie
Vragen ?
Bedankt !
Bart Hanssens / FedictWTC III, Simon Bolivarlaan 301000 Brussel, [email protected] [at] fedict.be | www.fedict.belgium.be
p.
Fedict 2014. All rights reserved | p.
Fedict 2014. All rights reserved
Fedict 2014. All rights reserved
Fedict 2014. All rights reserved
Fedict 2014. All rights reserved