170
Drupal CMS – Brussel 24/2/2014 [email protected] – Twitter @haro - www.koba.be

Drupal opleiding

Embed Size (px)

Citation preview

Page 1: Drupal opleiding

Drupal CMS – Brussel 24/2/2014 [email protected] – Twitter @haro - www.koba.be

Page 2: Drupal opleiding

Wat is Drupal

CMFContent Management Framework

http://api.drupal.org

hooks, callbacks & overrides

CMFContent Management Framework

http://api.drupal.org

hooks, callbacks & overrides

(W)CMSContent Management Systeem

www.drupal.org

www.drupal.com

www.drupal.be

Page 3: Drupal opleiding

Situering: CMS concurrenten

Gesloten: Tridion, Sharepoint, Documentum, Stellent

Open source

Java: Alfresco, Liferay, OpenCMS

Python: Plone (Zope webserver, ZODB)

Php: Wordpress Joomla (Mambo) Typo3

Asp: Dotnetnuke, Umbraco

Page 4: Drupal opleiding

Bron: Cmswire Open Source CMS Market Share Report (2011)

Page 5: Drupal opleiding

Referenties Media/Entertainment

● VRT, VTM, VT4, Vitaya, RTBF

● Sony BMG Music, Universal Music Group, Warner Bros, 20th Century Fox, Michael Jackson, Eric Clapton and Robbie Williams, Grammy awards, Emmy awards

● The Examiner, The Economist, Le Figaro, Edipresse, Infoworld, Aj Jazeera

● Studio Brussel, Radio Netherlands Worldwide, Australian Broadcast Company, BBC, CNN, Reuters

● Virgin, Slate, Monthy Python and Lucas Arts

Page 6: Drupal opleiding

NGO, Gov & edu

● Human Rights watch, Amnesty

● World Food Programme, World Bank, United Nations, Europese Unie, World Economic Forum

● Witte Huis, Vlaanderen, New York state senate, US Department of Commerce, Belgische Premier, Belgische Monarchie, FOD Financiën, the French government, the Dutch government, the Australian Prime Minister and the British Government, London en Athene.

● Universiteit Gent, Duke University, Strayer University, Portland University, MIT, Stanford University and Harvard

● UitinVlaanderen, FARO, Louvre, Tate, Vlaamse Kunstcollectie

● NASA (http://themis.asu.edu/)

● Linux Foundation, JAVA.net en Internet Systems Consortium

Page 7: Drupal opleiding

Enterprises using Drupal

● Telenet, ING, Garmnin, Ebay, Symantec, Nokia, AHOLD, Randstad, Sony Ericsson, Paypal, Twitter, Mattel, Nvidia, Rackspace, AT&T, FUJI film, General Motors, Intel, Fujifilm, Fedex, IBM, Cap Gemini, Accenture, Procter & Gamble en Google (mlab), IKEA

● Zenito (svmb/admb)

Meer referenties: http://www.buytaert.net/tag/drupal-sites

Page 8: Drupal opleiding

Voordelen Drupal

• Open Source GPLv2: broncode vrij downloadbaar en aanpasbaar

• Geen licentiekosten.

• Geen Vendor Lock-In. Veel bedrijven. Geen “eenmans” Open Source CMS

• Grote community & sterke groei: veel support, testen, activiteit

• Up-to-date, mee met nieuwe ontwikkelingen

• Php = meest gebruikte webprogrammeertaal

• Uitvoerig getest: 3.2 miljoen keer/jaar gedownload, grote sites gebruiken het

• 10000 Modules = Veel kostefficiënte uitbreidingen http://drupal.org/project/Modules

Page 9: Drupal opleiding

Troeven Drupal● Kwaliteit code & modulaire uitbreidbaarheid

– Heel flexibel framework (CMF) met goede stabiele architectuur en code heel geschikt voor maatwerk. Uitgebreide en uitvoerig gedocumenteerde API (api.drupal.org)

● Social media aspecten

– “Online community” aspecten al vanaf het prille begin ingebouwd: taxonomie, user rollen, comments.Volwassen functionaliteiten

● Volledig Open Source GPLv2 (geen “dual licence”)

– Alle modules vrij downloadbaar (vgl. Joomla), community edition is full option (vgl. Alfresco, SugarCRM). Activiteit en info gecentraliseerd op www.drupal.org (vgl Joomla)

● Enterprise ready

– Steeds meer grote referenties => uitvoerig getest, gedocumenteerde integratiemogelijkheden, performance, scaling, caching.

– Commerciële ondersteuning van het project Acquia, Drupal Association

● Community & ecosysteem

– Grote en open community gebaseerd op Open Source principes van samenwerken (vgl Joomla: http://buytaert.net/joomla-vs-drupal-business-models-and-commercial-ecosystem).

– Veel ontwikkelaars, veel support.

● Made in Belgium

Page 10: Drupal opleiding

Integratie Drupal● DMS: Document management

– Beperkte reeks modules voor doorzoeken van pdf, word, excel

– Integratie met Alfresco via CMIS.

● CRM: Contact Relationship Management– Integratie met CiviCRM, SugarCRM, …

● Knowledge Management Portal (Intranet)– Open Atrium Distributie (Wereldbank Intranet) en LDAP integratie modules

● Project Management– Drupal Modules: PM, Casetracker, Project

● Webshop– Ubercart/Drupal Commerce module of integratie met Magento

● Webservices

– SOAP, Rest, XMLRPC, Services module.

Page 11: Drupal opleiding

Geschiedenis

1999 Dries Buytaert Recente versies focus

4.7: Form API, admin interface

5: Mature & Stable, CCK, Views

6: Multilingual support, theming layer

7: Usability (image), Unit testing, php5.2.6, Semantic web, fields API

8: Webservices (Symfony 2, OO php), Configuration management, mobile, html5, design, multilingual, blocks, editor experience. Zie http://groups.drupal.org/drupal-initiatives

Page 12: Drupal opleiding

Omvang Drupal project

> 20000 Modules (= plugins, extensies)

> 2 miljoen pagina's en > 1 miljoen users op drupal.org

Drupal core wordt momenteel gebruikt op minstens 1 miljoen actieve websites (http://drupal.org/project/usage), “3.2% van het internet”

Twee delen

– Core: >1800 ontwikkelaars (D8), 250 duizend lijnen code (http://infogr.am/Drupal-Code-Base?src=web).

– Contributed: >10000 ontwikkelaars

80talen, duizenden gratis Themes (en betalend Themeforest, Templatemonster, ...)

2 jaarlijkse Drupalcons (Amsterdam 2014), Europese confs (Front End United, Developer Days, Business Days, Government Days), wereldwijd local Drupalcamps (50-500 deelnemers), DUG (Drupal User groups).

Page 13: Drupal opleiding

Omvang Drupal project

> 20000 Modules (= plugins, extensies)

> 2 miljoen pagina's en > 1 miljoen users op drupal.org

Drupal core wordt momenteel gebruikt op minstens 1 miljoen actieve websites (http://drupal.org/project/usage), “3.2% van het internet”

Twee delen

– Core: >1800 ontwikkelaars (D8), 250 duizend lijnen code (http://infogr.am/Drupal-Code-Base?src=web).

– Contributed: >10000 ontwikkelaars

80talen, duizenden gratis Themes (en betalend Themeforest, Templatemonster, ...)

2 jaarlijkse Drupalcons (Austin/Amsterdam 2014), Europese confs (Front End United, Developer Days, Business Days, Government Days), wereldwijd local Drupalcamps (50-500 deelnemers), DUG (Drupal User groups).

Page 14: Drupal opleiding

Leercurve developers

Page 15: Drupal opleiding

Drupal leercurve

Page 16: Drupal opleiding

Community

● Internationaal– www.drupal.org

– http://planet.drupal.org: Blogs

– http://groups.drupal.org: Werkgroepen

– IRC: Freenode (Chatzilla)

– http://drupal.stackexchange.com/

● België– Www.drupal.be

– Www.drupal.be/support: Bedrijven

Page 17: Drupal opleiding

Systeemvereisten

Standaard Apache > MySQL 5.1 > Php 5.2.6 (+pdo) Php RAM > 64MB

min

Alternatieven Lighttpd, Nginx

IIS mits aanpassingen voor php

PostgreSQL

MSSQL, Oracle via php PDO.

Page 18: Drupal opleiding

Basisfunctionaliteiten

Zoekfunctie

RSS

Meertaligheid

Statistieken

Login-systeem met rollen

Reactiesysteem

SEO vriendelijke urls

Taxonomie

Page 19: Drupal opleiding

Basiselementen

Users Entities Nodes Blokken Menu Taxonomy Fields Views

Page 20: Drupal opleiding

HOOFDSTUK 2

INSTALLATIE DRUPAL CORE

Page 21: Drupal opleiding

Origineel of voorverpakt

Origineel drupal.org, of via git Via Windows installer:

http://acquia.com/downloads/windows-installer Via controlepaneel: Installatron, Fantastico Drupal gardens (Acquia Drupal) Distributies (http://drupal.org/project/distributions en http://www.acquia.com/downloads)

– Open Atrium

– Open Publish

– Pressflow

– Nodestream

– Commerce Kickstart

– Open Public

– Drupal Commons

Page 22: Drupal opleiding

Systeemvereisten

Standaard LAMP Linux Hosting Apache server MySQL 5.1 Php 5.3

Alternatieven Lighttpd IIS mits aanpassingen

PostgreSQL Sinds D7: nieuwe abstraction

layer die andere databases (MSSQL, Oracle) ondersteunt via php PDO.

Page 23: Drupal opleiding

Lokaal op op hosting

Origineel drupal.org, of via git Via Windows installer:

http://acquia.com/downloads/windows-installer Via controlepaneel: Installatron, Fantastico Drupal gardens (Acquia Drupal) Distributies (http://drupal.org/project/distributions en http://www.acquia.com/downloads)

– Open Atrium

– Open Publish

– Pressflow

– Nodestream

– Commerce Kickstart

– Open Public

– Drupal Commons

Page 24: Drupal opleiding

Wampserver

Skype uitschakelen Start all services Apache rewrite module aan Localhost testen: http://localhost Drupal downloaden in C:\wamp\www Unpack (7-zip) en hernoemen map naar drupal http://localhost/drupal Installatiescherm: database gegevens?

Page 25: Drupal opleiding

Database maken

http://localhost/phpmyadmin/ Home > databases > create new database Users > create new user All privileges

Page 26: Drupal opleiding

Installatie op cpanel hosting

Drupal 7 uploaden met http://filezilla-project.org/download.php?type=client

Een database aanmaken bij databases (niet in phpmyadmin) Eerst database maken

Dan user maken

Dan user toevoegen aan database, all privileges

Drupal installatie Databasenaam en username worden vaak geprefixt met

accountname bij hosting: dus accountname_username en accountname_databasename gebruiken

Permissies files en settings instellen

Page 27: Drupal opleiding

Installatie

# Copy the ./sites/default/default.settings.php file to ./sites/default/settings.php.

# Change file permissions so that it is writable by the web server.

Page 28: Drupal opleiding

php.ini Foutreportage & security

register_globals = Off

allow_url_fopen = On

Upload en timout limieten memory_limit = 128M

upload_max_filesize = 150M

post_max_size = 150M

max_input_time = 300

max_execution_time = 300

Page 29: Drupal opleiding

Bestandsstructuur

Mappen en inhoud Core niet hacken!

Sites map instellen: modules/templates

Files instellen

Page 30: Drupal opleiding

HOOFDSTUK 3

EEN EENVOUDIGE SITE

MET ENKEL

DRUPAL CORE

EEN WYSYWYG

EEN PREFAB THEME

Page 31: Drupal opleiding

Navigatiestructuur

Home Nieuws Wat doen we? Over ons Contact: contact module/webform

Page 32: Drupal opleiding

Performance verhogen

● Instellingen > Prestaties– Alle vinkjes aanleggen

● Modules > Overlay– Afvinken en opslaan onderaan

Page 33: Drupal opleiding

Inhoud toevoegen● Inhoud toevoegen

– Article: titel, foto, tekst, trefwoorden, comments

– Basic page: titel, tekst

● Verticale tabs– Publicatieopties

– Revisies

– Menu

Page 34: Drupal opleiding

Menu● Structuur > Menu's

– Menu-items toevoegen in het overzicht

– Gewone “node” pagina's hebben onderaan ook de mogelijkheid om een menuitem toe te kennen.

● Pagina's zonder menu– Vb: nieuwsitems die in het nieuwsoverzicht

voorkomen, kalenderitems, fotoalbums, ...

– Vind je in het overzicht van inhoud

Page 35: Drupal opleiding

Homepage instelling● Instellingen > Websitegegevens● Ofwel

– Node = overzicht van laatste 10 berichten aangeraden op homepage

– Vaste pagina vb node/5

Page 36: Drupal opleiding

Blokken● Structuur > Blokken● Dienen voor randinformatie die op meerdere

pagina's moet voorkomen● De meeste modules voorzien enkele blokken● Blok toevoegen● Blokgebieden demonstreren (Bartik): regio's

positie in je theme● Zichtbaarheidsinstellingen

Page 37: Drupal opleiding

Taxonomy

● Structuur > Taxonomie● Trefwoorden toevoegen

– Vaste lijst

– Free tagging (autoaanvullen)

Page 38: Drupal opleiding

Basisinstellingen installatie Site instellingen

Bestands upload Bestandssysteem Datum en tijd Foutrapportage Site onderhoud Websitegegevens

Inhoudelijk beheer Teaserlengte, taxonomie, ...

Gebruikers Rollen admin en redactie aanmaken + rechten instellen Gebruikers toevoegen aan een rol

Page 39: Drupal opleiding

WYSYWYG

mogelijkheden– Www.drupal.org/project/ckeditor Of www.drupal.org/project/wysiwyg

– Bueditor of Markdown (geen wysiwyg, betere html)

De editor www.drupal.org/project/wysiwyg

Externe editor downloaden: Ckeditor, Tinymce

Afbeeldingen in de editor www.drupal.org/project/imce

www.drupal.org/project/imce_wysiwyg

Page 40: Drupal opleiding

WYSYWYG installatie & werking

Stappen (ook algemeen voor installeren module) Issues bekijken: critical bugs ea bugs + versie kiezen

Opladen van de module

readme.txt lezen en online handboek

Eventuele core patches installeren

Dependend modules aanvinken op admin/build/modules

Aanvinken op admin/build/modules

Toegangsrechten controleren

Module settings instellen

Kijken als er te activeren blokken zijn bijgekomen

Page 41: Drupal opleiding

Search

Zoekfunctie en instellingen Cron laten lopen om index op te vullen

Page 42: Drupal opleiding

(ingebouwde) CRON

Noodzaak cron Wissen log bestanden

Andere automatische taken

Voordelen Simpel te activeren

Nadelen Niet regelmatig: start na tijd én nadat user inlogt

Niet geschikt voor backups/versturen nieuwsbrieven

Alternatief: crontab op server: aan te raden http://drupal.org/cron

Page 43: Drupal opleiding

HOOFDSTUK

THEMES (basis)

Page 44: Drupal opleiding

Bartik en Seven

Standard frontend en backend theme Drupal 7 Bartik kan uitgebreid worden via een subtheme

Page 45: Drupal opleiding

Prefab themes• Op Drupal.org

• https://drupal.org/project/project_theme

• Elders (betalend)• http://www.designrazzi.com/2014/drupal-7-themes/

• http://themeforest.net/category/cms-themes/drupal

• http://www.templatemonster.com/drupal-themes.php

• http://www.themesnap.com/category/premium-drupal-themes

Page 46: Drupal opleiding

MODULES

WAAR

KEUZE

INSTALLATIE

Page 47: Drupal opleiding

Een module kiezen

Overzicht: Via rechtsboven “download and extend” op drupal.org

https://drupal.org/project/project_module

Full/sandbox en versie instellen

Related projects Populariteit

http://drupal.org/project/usage: populariteit

http://www.acquia.com/products-services/acquia-drupal En Drupal Gardens: geselecteerd & ondersteund door Acquia

Ratings: http://drupalmodules.com

Page 48: Drupal opleiding

Status van een module

Versie 6 of 7 Status:

Official release Pre-alpha, Alpha, beta, rc (release candidate) Dev versies

Opgelet met updates van 7.x-1.x naar 7.x-2.x

Page 49: Drupal opleiding

Factoren kwaliteit module Tijd: maturiteit & actief onderhouden?

Eerste versie

Laatste update/commit

Tijd tussen de updates

Futureproof? Drupal 8 versie

Ontwikkelaar(s) Aantal

Hoelang betrokken bij Drupal

Andere modules waarvoor verantwoordelijk

User profile bekijken / track code

Page 50: Drupal opleiding

Factoren (vervolg) Issue queue

Aantal meldingen (populariteit module)

Aantal bugs & opgeloste bugs

Aantal patches (betrokkenheid externe developers)

Statistieken

Omvang module Een klein probleem vraagt een kleine module

Geen module als je met enkele lijntjes code kunt oplossen

Gevaar voor modulitis: performance site zakt bij elke module die je toevoegt

Module usage statistics Concurrerende modules:

zie blokken related content

Page 51: Drupal opleiding

Issue queue Vragen over één module steeds hier stellen, niet op forum Statussen, category & priority Advanced search Drupal core issues: http://drupal.org/project/issues/drupal Ingeven van een issue

Zoeken naar duplicates

Heel duidelijke omschrijving (reproduceerbaar probleem): versies, browser, andere zaken geinstalleerd, stappen hoe je kunt reproduceren op “fresh install”, screenshots, code, views export, cck export

Verwijzing naar node via filter

Geen titel wijzigen

Subscribe? Hopelijk betere oplossing toekomst. Zie ook my issues.

Page 52: Drupal opleiding

FIELDS EN VIEWS

Page 53: Drupal opleiding

CCK/Fields

Historiek en evolutie Nodes → Flexinode (d5) → cck contributed (d6)→ fields in core (d7)

Doel Eigen content types met eigen velden definiëren

Vanaf Drupal 7: fieldable entity: node/user/vocabulary/shopproduct/mediafile/werkgroep

Download http://drupal.org/project/cck (enkel nodig voor migratie d6->d7)

Extra fields: honderden fields op drupal.org

Page 54: Drupal opleiding

Viewshttp://drupal.org/project/views

• Dynamic query builder, lijsten trekken in ruime zin: lijst kan ook google map zijn of fotogalerij

• D5: Views1: enkel nodes

• D6: Views2: ook users, taxonomie, files, ...

• D6: Views3: elke databron niet enkel db, ook apache Solr, Flickr, RDF, elke bron met api (vb Cultuurnet) + OR mogelijkheid bij filters

• D7: Fields in core, Views3

• D8: Views in core en gedeeltelijk Views Bulk Operations (admin bewerkingen)

Page 55: Drupal opleiding

Basis fields

In core– Imagefield

– Filefield

– Textfield

– Listfield

– Taxonomy reference field

Extra– Emailfield

– Url field (link)

– Datefield

– Entity reference field

– Video embed/Youtube field

Page 56: Drupal opleiding

File en Image

• Filefield

• Imagefield

• Image Styles

• Transliteration

• Filefield paths

• Filefield sources

• Plupload

Page 57: Drupal opleiding

Fotogalerij

● Inhoudstype fotogalerij

● Titel, Inleiding, foto's (multiple)

● Plupload voor bulk upload

– https://drupal.org/project/plupload

– https://drupal.org/project/filefield_sources_plupload

– http://www.plupload.com library● Weergave

– Gallery formatter

– Colorbox

– Flexslider

Page 58: Drupal opleiding

Filefield sources

● Alternatieve bestandsupload mogelijkheden– Remote url

– IMCE filebrowser

– Bulkupload via Plupload

Page 59: Drupal opleiding

Gallery formatter

● https://drupal.org/project/galleryformatter● Fotogallerij weergave via jquery

Page 60: Drupal opleiding

Filefield paths

● Geeft de mogelijkheid om via tokens zowel de mappen als de paden specifieke namen te geven.

● Voordelen– Heel gestructureerde bestandsorganisatie

– Geen “random” filenamen meer van gebruikers

– Cleanup van foute karakters via Pathauto of Transliteration

Page 61: Drupal opleiding

Colorbox

● Www.drupal.org/project/colorbox

● Colorbox is een externe plugin die moet in de sites/all/libraries geïnstalleerd worden

● Geeft een jquery image popup in lightbox

● Voordeel: goed gebruik van ruimte op pagina

● Nadeel: accessibility: http://www.anysurfer.be/nl/blog/detail/lightbox-veel-gebruikt-zelden-voor-iedereen-bruikbaar

Page 62: Drupal opleiding

Image Styles

Voordelen Kan via voorgedefinieerde presets images scalen, resizen en

croppen

Je kunt verschillende varianten van dezelfde foto automatisch laten genereren

Page 63: Drupal opleiding

Default views

● Frontpage view– Eenvoudigste: bootst de homepage /node na

– Teaserlijst van laatste items met vinkje aangeraden op voorpagina aan

– Is vanaf nu wijzigbaar

– Niet vergeten bij websitegegevens frontpage te zetten ipv node voor homepage

Page 64: Drupal opleiding

Nieuwsoverzicht

● Teaserview van nieuwsberichten● Bloklijst van laatste nieuws bij nieuwsitem,

excluden van actuele item via argument.

Page 65: Drupal opleiding

HANDGEPLUKTE en BEINVLOEDE INFORMATIE

Page 66: Drupal opleiding

Drupal core standaard

● Vinkje: vastgeplakt bovenaan de lijst

● Vinkje: aangeraden op de voorpagina

● Via de frontpage view kan hier in beperkte mate promotie van content worden gedaan

● Via i18n: eventueel “aangeraden op de voorpagina” vertalen naar “in de kijker”

● Nadeel: we krijgen slechts 1 indicator/lijst en vaak hebben we op een homepage meerdere nodig

Page 67: Drupal opleiding

Nodequeue

• Voordeel– Mogelijkheid om zelf informatie te kiezen

– Volgorde kan eenvoudig veranderd worden

– Weergave bepalen via een view

– Ideaal voor homepage, in de kijker, …

– Rules: automatisch toevoegen aan nodequeue

• Nodequeue aanmaken• Nodequeue view

– Disablen indien niet nodig

– In block weergeven: rechterkolom content

Page 68: Drupal opleiding

Flag

• Mark as spam, mooie foto, bookmarks, goedgekeurd

• Admin View– Relationship: Flag

– Field: Flag:flaglink, relationship: goedkeuring

– Acties/Triggers: op goedkeuring ook publiceren

• Flag actions• Actions/triggers/rules

Page 69: Drupal opleiding

Ratings

• Voting api– Relationship: node voting results: percent, no filtering,

average

– Sorteren op beste punten: (Voting results) Voting API results: Waarde desc

– Field: (Voting results) Voting API results: Waarde

• Fivestar– Vijf sterretjes voor score

– User generated content

Page 70: Drupal opleiding

STATISTIEKEN

● Statistics module aanzetten: 16 weken● Sort criteria: Most popular● Default view: backlinks

Page 71: Drupal opleiding

EXPOSED FILTERS

Page 72: Drupal opleiding

Exposed filters• Filters wijzigen via code

• Checkboxen gebruiken (views checkboxes module/content taxonomy)

• Hierarchical select

Page 73: Drupal opleiding

VIEWS ARGUMENTEN

Page 74: Drupal opleiding

User argument

• “Mijn inhoud”– Gebruiker: uid

– Provide default argument: uid from url

– Let op: dus best op /user/nummer doen anders is php code nodig om te bepalen wat de uid is of kan ook kiezen voor logged in user.

Page 75: Drupal opleiding

Node argument

● Blok met Meer nieuws– Node:nid, provide default argument: nid from url, exclude the argument

– Zorgen dat pagina zelf niet in de lijst van meer staat => exclude

Page 76: Drupal opleiding

Views embedden

● Verschillende opties– Viewfield of View reference

– Entity Views Attach (https://drupal.org/project/eva )

● Een view weergeven– https://drupal.org/project/insert_view

Page 77: Drupal opleiding

Views Bulk Operations

● Een bepaalde actie/rule uitvoeren op een selectie gemaakt met views

● Voorbeelden– Overzicht inhoud of gebruikers beheren op maat aanpassen

– Trefwoorden aanpassen in bulk

– Email versturen naar een groep mensen (opgelet geen uitschrijflink)

– Corrigeren van indeling na aanpassing sitestructuur

– Goedkeuringsrij verwerken

Page 78: Drupal opleiding

Views bulk operations

● Voordeel– Zeer krachtige tool die toelaat via de interface

makkelijk een hele reeks items aan te passen ineens

● Nadeel– Zeer krachtige tool, neem steeds een backup voor

je ze gebruikt.

Page 79: Drupal opleiding

Views Bulk Operations http://blog.jquery.com/2011/12/08/what-is-happening-to-the-jquery-plugins-site/

Page 80: Drupal opleiding

Actions/Triggers/Rules

● Actions/Triggers: zit in Drupal core: het vinkje bij Trigger module aanzetten

● Rules module: Geeft bijkomende verfijning en condities aan de acties– Een bericht op scherm plaatsen

– Een automatische email versturen

– Een nieuwsbrief nasturen

– Een veld wijzigen

Page 81: Drupal opleiding

Conditional fields

● Bepaalde velden of fieldgroups maar tonen als een ander veld een bepaalde waarde heeft

● Voordeel: – Invulformulier korter maken

– Enkel de velden tonen die moeten ingevuld worden

Page 82: Drupal opleiding

Field Permissions

● https://drupal.org/project/field_permissions

● Velden kiezen waarbij per rol de zichtbaarheid en het bewerken/deleten ervan kan beperkt worden.

● Voorbeelden

– Premium content: inleiding zichtbaar voor iedereen, volledige tekst enkel voor zij die betaald hebben

– Klanten of ledenprofiel: bepaalde velden niet publiek tonen, bepaalde velden enkel aanpasbaar door admins

Page 83: Drupal opleiding

Inline entity form

● Embedden van een node form binnen een andere wrapper node form

● Voorbeelden– Productnode form bevat product entity

– Documentnode of Afbeeldingsnode embedden

– Gereferencete entities direct aanmaken

Page 84: Drupal opleiding

Rules

● Email sturen bij indienen van vacature– Actions: maak de email actie

– Trigger: new content

– Condition: Node type=vacature

– (Condition: Field has value)

– Action: Send email

Page 85: Drupal opleiding

Entity Reference● Een rechtstreekse koppeling tussen twee entities● Gelijkaardige modules

– References (bij upgrade vanaf d6)

– Relation (bidirectioneel, complex)

● Steeds meer gebruikt als alternatief voor taxonomie– Gerelateerde content

– Relatie kan beperkt worden via een view

– Taxonomy geeft geen volwaardige pagina

● Voorbeelden– Artikels bij magazine (inhoudstafel)

– Landenpagina en nieuws over dit land

– Architecten en hun projecten

Page 86: Drupal opleiding

Entity reference view

Gewone entity reference– Ct Pagina heeft nodereference naar

gerelateerde pagina

– View in blok van

• Field: Nodereference field• Argument: Node:nid,Default argument: Nid from

url• Exclude/hide van Nodereference field in het

inhoudstype paginaAndere toepassing: Blogroll: links bij bloghoofdpagina in zijkolom

Opmerking: kan ook via theming

Page 87: Drupal opleiding

Reverse entity reference

• Reverse reference– Ct Nieuws heeft nodereference naar (overzichts)pagina

– Titel: nieuws bij pagina

– Filters:N:Nieuws

– Fields:Titel

– Relationship:Inhoud:entity reference field, require

– Argument:Node:Nid, relationship entity reference field, provide default nid from url

Page 88: Drupal opleiding

Views slideshow

● Slideshow van images afkomstig van verschillende nodes

● Vaak gebruikt voor homepage carousel in combinatie met nodequeue voor de selectie van de content– http://shouldiuseacarousel.com/

– Diverse weergaveplugins

Page 89: Drupal opleiding

Date views

● www.drupal.org/project/date: – Datum veld toevoegen

– Inhoudstype afwerken voor evenement

● View– Filter opties: Selecteer events > now

● www.drupal.org/project/calendar – Display of calendar block

– Nieuwe view vanaf template

Page 90: Drupal opleiding

Views import en export

Page 91: Drupal opleiding

Feeds module● www.drupal.org/project/feeds

– Aggregator van rss feeds maar ook csv, xml, ical, … en kan er nodes of data elementen van maken

– Opvolger van de feedapi module

– node/add/feed

● Youtube feeds: http://www.youtube.com/rssls

● Feeds

– http://drupal.org/project/feeds_imagegrabber● Cron moet werken!

Page 92: Drupal opleiding

Views export csv of xls

http://drupal.org/project/views_data_export ● Feed display toevoegen● Style op csv zetten● Pad geven● Xls module

Voordeel tov views_bonus: batch api

Page 93: Drupal opleiding

DISPLAY SUITE

Page 94: Drupal opleiding

Filosofie achter Display Suite

• Centraal beheer van layout van website inhoud

• Template bestanden overbodig maken

• Focus op gebruiksvriendelijkheid

• Drupal field UI uitbreiden

• Gebruik van PHP beperken = betere veiligheid

• Meer info: http://realize.be

Page 95: Drupal opleiding

Layout beheer met Drupal core

• Mix van template bestanden en Field UI

• Nadelen:

•Template bestanden zijn niet onderhoudbaar

•Field UI is beperkt:

•Geen UI om extra velden toe te voegen (vb. titel, auteur)

•Geen UI om extra View Modes toe te voegen

•Geen gebruik van voorgedefinieerde layouts

Page 96: Drupal opleiding

Layout beheer met DS

• Bouwt verder op Field UI

•Nieuwe View Modes aanmaken

•Voorgedefinieerde layouts aanmaken

•Eigen velden toevoegen

• Integratie met Views en Panels

• Werkt op elke Drupal Entity (Node, gebruiker etc)

• Consistente HTML output

• Oefening 1: DS aanzetten en Node en Teaser layout wijzigen

Page 97: Drupal opleiding

Dynamic field

Page 98: Drupal opleiding

Weergave beheren

Page 99: Drupal opleiding

Select content

Page 100: Drupal opleiding

Overzicht fields

Page 101: Drupal opleiding

Weergave beheren

Page 102: Drupal opleiding

Bloklijst instellen

Page 103: Drupal opleiding

Field group

Page 104: Drupal opleiding

Field collection

Page 105: Drupal opleiding

Panels in ds

Page 106: Drupal opleiding

Display suite extra's: field templates

Page 107: Drupal opleiding

Display fields

Page 108: Drupal opleiding

Andere toepassingen

• Zoekresultaten

• Views slide show met meerdere content types

• Oefening 4: slideshow opzetten: custom View mode en voor alle content types instellen.

Page 109: Drupal opleiding

Alternating view mode

Page 110: Drupal opleiding

Nodequeue

Page 111: Drupal opleiding

Alternating view modes

Page 112: Drupal opleiding

Entity reference: rendered

Page 113: Drupal opleiding

Views content panes

Page 114: Drupal opleiding

View add display content pane

Page 115: Drupal opleiding

Add dynamic field

Page 116: Drupal opleiding

Page manager

Page 117: Drupal opleiding

Add pages

Page 118: Drupal opleiding

Performance

Page 119: Drupal opleiding

PANELS

Page 120: Drupal opleiding

Panels: doel en historiek

● Panels = layoutbuilder in Drupal● Earl Miles (Views)● Sony www.myplay.com● Versies 1,2,3● Toekomst: Drupal 8 misschien een eenvoudige

panels achtige interface voor toevoegen van content in Drupal core

● Documentatie: http://drupal.org/node/496278

Page 121: Drupal opleiding

Panels: voordelen● Point en click Drupal theming zonder html en php, templates opstellen via de

interface

● Slechts 1 soort inhoudsobject: panel waarin blokken, menus, views, velden, ... kunnen weergegeven worden => alles eenvormig op dezelfde manier behandelen

● Complexe pagina layouts mogelijk zonder voorkennis van html/css

● Flexibeler layouts: vb zelfde blok in verschillende regios, ...

● Makkelijker en sneller wijzigingen aanbrengen aan templates

● Ctools: vastleggen van layouts in exportables en features => exporteerbaar dus hergebruikbaar en opgenomen in svn/git revisiesysteem.

● Varianten: andere soorten layouts volgens context, vb ingelogde klanten/leden, mobiele website

● Integreert heel goed met views

Page 122: Drupal opleiding

Panels: nadelen

● Performance: is heel grote module, wel goede caching opties

● Kan complex zijn: is systeem op zich met leercurve en heel veel checkboxen

● Werkt behoorlijk anders dan “the Drupal way” => bloksysteem en regios uitschakelen (vinkje)

● Alles of niets: als je panels gebruikt het voor alles gebruiken

● Moeilijker te debuggen

● Soms trage upgrade bij nieuwe versie van drhttp://www.youtube.com/watch?v=qBGKdnUj4Ywupal core , en upgrades tussen v1, 2 en 3 waren niet vanzelfsprekend, maar ondertussen heel veel gebruikt (> 80.000 installs)

● Overladen html tenzij je eigen custom templates opstelt

Page 123: Drupal opleiding

Submodules en extra

● Page Manager (bij ctools): page layouts (beetje zoals page.tpl.php)

● Mini panels: blok layouts● Panel nodes: node layouts

● Views content panes: views in panels

● Panels Everywhere

Page 124: Drupal opleiding

Layouts

● Standaardlayouts● Bepaalde themes definiëren extra layouts zoals

Adaptive Theme (AT) in d6● http://drupal.org/project/panels_extra_layouts:

extra layouts: ● Best: eigen html templates voor layout

– Advanced help module: help/panels/plugins-layout

– tpl.php, css, inc en png

– Meer docs: http://drupal.org/node/495654

Page 125: Drupal opleiding

Variants

● Andere layout voor zelfde pagina bij andere voorwaarden– Volgens content type: basic page er anders laten uitzien dan

artikels

– Volgens toegangsrol: admin, ingelogden, leden/klanten zien iets anders

– Volgens taal

– Volgens trefwoord, ...

– Mobile themes dank zij integratie met de http://drupal.org/project/mobile_tools module

Page 126: Drupal opleiding

Contexts

● Arguments– /taxonomy/term/%term

– /forum/%forum

– /music/beatles/th

● Andere contexts– Node auteur

– Node reference

Page 127: Drupal opleiding

MEERTALIGE WEBSITES

Page 128: Drupal opleiding

Multilingual Drupal

● Veraalbare delen– i18n: internationalisation: content

– L10n: localisation: interface

● Multilingual settings– Drupal core: basis functionaliteiten

– Drupal contrib: i18n module: vertalen van menu's, blocks, taxonomy, …

● Handbook: http://drupal.org/node/324602

Page 129: Drupal opleiding

Drupal interface vertaling

● Localization server– https://localize.drupal.org/translate/languages/fr

– https://localize.drupal.org/translate/languages/nl

– Po bestand

– Join en download onafgewerkte vertalingen (suggesties) van bepaalde modules

● Plaatsen voor de installatie in /profiles/translations● Drupal kan direct in de juiste taal geïnstalleerd worden● Je eigen localization server: https://drupal.org/project/l10n_server

, vb voor distributies of vast installatieprofiel

Page 130: Drupal opleiding

Localization update modulehttps://drupal.org/project/l10n_update

● Controleert op nieuwe vertalingen van core en module in de translation server en installeert ze

● Alternatief om Drupal interface in andere taal te krijgen– Installeer Drupal in het Engels

– Activeer de locale module en l10n_update module

– Configuration > Languages > add language

– Configuration > Translate interface > update

Page 131: Drupal opleiding

Vertaling van strings

● Configuration > Translate interface– Hoofdlettergevoelig!

– Zoeken naar vertaalbare strings in modules, themes, drupal core

– vertaalbaar=verpakt in t('engelsebrontekst'); function● http://drupal.org/project/l10n_client: makkelijker interface voor vlotte vertaling

● Site enkel in het Engels– Geen locale dus geen meertalig systeem

– Toch soms gewenst om strings te vertalen

– Kan door “eigen” Engelse taal te maken of via https://drupal.org/project/stringoverrides

Page 132: Drupal opleiding

Content translation

● Niet enkel de interface maar ook de eigenlijke content in een andere taal

● Modules– Core: content translation

– Contrib: i18n en https://drupal.org/project/i18nviews● Vertaling blokken● Vertaling trefwoorden● (Vertaling menu)● Vertaling views

Page 133: Drupal opleiding

Vertaling van strings

● Configuration > Translate interface– Hoofdlettergevoelig!

– Zoeken naar vertaalbare strings in modules, themes, drupal core

– vertaalbaar=verpakt in t('engelsebrontekst'); function● http://drupal.org/project/l10n_client: makkelijker interface voor vlotte vertaling

● Site enkel in het Engels– Geen locale dus geen meertalig systeem

– Toch soms gewenst om strings te vertalen

– Kan door “eigen” Engelse taal te maken of via https://drupal.org/project/stringoverrides

Page 134: Drupal opleiding

Toevoegen talen

● Best bij eerste installatie– Unpack language files in root: translation maps with .po files

are created

● /admin/settings/language– Toevoegen nieuwe taal

– Update translations via l10n_update

– Configuration » Regional and language: ● path prefix with language fallback, elke taal, ook Engels een prefix geven● Default taal kiezen en niet meer wijzigen

– Configuration » Regional and language » Languages: alles aanvinken

Page 135: Drupal opleiding

Meertalige menu's

● Maak best 1 menu per taal ● Weergave menu

– Via blok

– Blok taal instellen

Page 136: Drupal opleiding

Entity translationhttps://drupal.org/project/entity_translation

● Vertaling van fieldable entities: producten in webshop, organic groups, users, nodes.

● Vertaling van entities en van velden apart● Gebruiken bij complexere vertaalsituaties

Page 137: Drupal opleiding

STRUCTUURMODULES

Page 138: Drupal opleiding

Menu blockhttps://drupal.org/project/menu_block

● Delen van een menu weergeven in een blok● Menu opsplitsen of dupliceren● Gescheiden hoofd en submenu maken

Page 139: Drupal opleiding

Custom breadcrumbs

● Broodkruimels aanpassen volgens:– Nodetype

– Pad

– Views

– Trefwoorden

Page 140: Drupal opleiding

Context

● Alternatief voor blokkenstructuur– Vertrekkende vanaf pagina en dan de bijhorende

blokken

– Zonder code complexere zichtbaarheidsinstellingen vb combinatie van taal, trefwoord, inhoudstype

– Betere structuur als er veel blokken zijn

– Exporteerbaar

Page 141: Drupal opleiding

WEBFORM

Page 142: Drupal opleiding

Webform

• Mogelijkheid om diverse formulieren aan te maken: bestellingen, contactformulier, inschrijving, wedstrijd, registratie

• Diverse velden

• Verzenden van emails, export xls

• Gelijkaardig: entity form

Page 143: Drupal opleiding

SPAM

Page 144: Drupal opleiding

Spam voorkomen

● Core: – Voorbeeldweergave

– IP blokkeren

● Traditioneel: captcha– Mollom, captcha, recaptcha

● Combinatie zonder gewone gebruiker lastig vallen– Hidden captcha: botcha/spamicide

– Httpbl: Project honeypot

– Trucs: honeypot, ...

Page 145: Drupal opleiding

BACKUPS, ONDERHOUD & UPGRADES

Page 146: Drupal opleiding

Databasestructuur

Via phpmyadmin Cache Nodes Terms Users

Page 147: Drupal opleiding

Nuttige acties

Paswoord en email wijzigen van user 1 Een slechte module uitschakelen Een blok met foute php code uitschakelen Cache tabellen leegmaken Access log leegmaken Optimize tables

Page 148: Drupal opleiding

BACKUP DATABASE

Page 149: Drupal opleiding

BACKUP FILES

Vooral de map sites is van belang, met de map files in het bijzonder

Ftp 2000 files max

Page 150: Drupal opleiding

Backup modules & info

Handbook: http://drupal.org/node/22281 http://drupal.org/project/backup_migrate

Beste en actiefste backup module op dit ogenblik

Scheduled backup

Excluden van grote tabellen: search, cache, sessions

http://www.ozerov.de/bigdump.php: grote databases

Page 151: Drupal opleiding

Upgraden: puntupgrade

Stap 1: Backup sites & database Stap 2: Inloggen als user 1 + Offline mode Stap 3: Alle bestanden verwijderen, behalve sites. Stap 4: Nieuwe bestanden in de plaats zetten Stap 5: Patches herinstalleren Stap 6: update.php laten lopen Stap 7: patches herinstalleren Stap 8: controle installatie en logs

Page 152: Drupal opleiding

Upgrade d6->d7

● Veel werk want alle modules en themes veranderen● Evalueren als een upgrade al nodig is● Drupal ondersteunt 2 versies dus meest stabiele upgrade op

einde van d6 periode (nu dus)● Upgrade status module: evalueren als alle modules

beschikbaar● Eerst niet meer nodige functionaliteiten weghalen● Alternatieven

– Feeds & Views data export

– Migrate module: in Drupal 8

Page 153: Drupal opleiding

Diff & Patch

www.drupal.org/patch Cygwin

Linux omgeving in Windows

http://www.cygwin.com

Nut bij Drupal: diff, patch en cvs

Screencast: http://www.lullabot.com/node/280/play

Patching Screencast:

http://e4.video.blip.tv/1540000325302/Add1sun-RollingPatchesInDrupal517.mov

Page 154: Drupal opleiding

Automatische updates● http://groups.drupal.org/aegir-hosting-system

– Hosting systeem voor meerdere Drupal sites

– Bevat Drush en Dashboard● http://drupal.org/project/plugin_manager

– Zit bij Drupal 7 in core

– Nadeel: geen restore/revert optie● Drush

– Drush up

– Drush site-upgrade

Page 155: Drupal opleiding

DRUSH

Page 156: Drupal opleiding

Drush: Drupal Shell

● Drupal bedienen vanaf de command line

● Voordelen

– Sneller uitvoeren van installaties en updates

– Samenvoegen van commands in installatie en updatescripts, vb meerdere sites tegelijk updaten, distributie installeren via drush make

– Fixen van problemen (drush rr, drush cc all, drush cron)

– Intensieve scripts, exports en migraties laten lopen vanaf de command line (betere performance en php cli kan andere limieten hebben)

Page 157: Drupal opleiding

Drush commando voorbeelden● Drupal installeren in htdocs of www mapje

– drush (help uitleg)

– drush dl drupal (download drupal)

– drush dl cck views nl ckeditor acquia_marina backup_migrate (in drupal map)

– drush en cck views (modules aanleggen, omgekeerd: dis)

– drush cron

– Drush ws (status)

● Drupal updaten met drush– drush bb of drush sql-dump > example10052010.sql

– tar -czf drupal.tgz drupal

– drush variable-set site_offline TRUE

– drush up: update alle modules + backup code

– drush variable-set site_offline FALSE

Page 158: Drupal opleiding

Drush commando voorbeelden● Link voor eenmalige login bekomen

– Drush uli (user 1)

– drush uli 5 (user 5)

● Cache leegmaken– drush cc all

Page 159: Drupal opleiding

NIEUWSBRIEVEN & e-mail integratie

Page 160: Drupal opleiding

Mail interactie

Simplenews Subscriptions of Notify of Watcher Actions & Workflow/Rules & Views Bulk

operations Messenger & Notifications framework Webform Mailhandler

Page 161: Drupal opleiding

Nieuwsbrieven

● 3 voornaamste mogelijkheden– Simplenews: eenvoudig en goedkoop, geen

bounce handling, beperkte statistieken

– Campaignmonitor of Mailchimp integratie: full bounce handling, statistieken, whitelisting, betalend

– Civimail (onderdeel van Civicrm)

Page 162: Drupal opleiding

Simplenews

● www.drupal.org/project/simplenews

● Voor versturen van html mail:

– http://drupal.org/project/htmlmail (Emogrifier helpt)

– http://drupal.org/project/rel_to_abs: absolute paden in links en afbeeldingen in body

– Mimemail niet meer gebruiken: bevat bugs en is niet meer onderhouden

● Extra modules: analytics, on register,...

● Let op: geen poormanscron gebruiken (dubbele verzending! + niet betrouwbare tijdstippen)

Page 163: Drupal opleiding

Nieuwsbrief theming

● http://www.campaignmonitor.com/css/

● http://drupal.org/node/268404

Page 164: Drupal opleiding

Contemplate

● http://drupal.org/project/contemplate

● In database of sites/all/contemplates

● Voordelen:● Geldt voor alle themes (ander niveau dan theme

layer)

● Voor search, rss feeds en nieuwsbrieven

Page 165: Drupal opleiding

Body & footer

● simplenews-newsletter-body--1126.tpl.php

● simplenews-newsletter-footer--1126.tpl.php

● Velden printen● <?php print $node->field_nieuwsbrief_link1[0]['view']; ?>

● $foto = theme('imagecache','square100x100',$node->field_nieuwsbrief_foto1[0]['filepath']); print '<div class="field-field-foto">' . $foto . '</div>';

● <?php print $node->field_nieuwsbrief_intro[0]['view']; ?>

Page 166: Drupal opleiding

DRUPAL SUPPORT

Page 167: Drupal opleiding

Drupal community support Op drupal.org

http://drupal.org/handbook: handboeken

http://drupal.org/forum: forum

http://drupal.org/project/issues: issues

http://groups.drupal.org: werkgroepen

http://www.drupal.org/planet: blogs

Op http://drupal.be en http://drupalfr.be

IRC

http://drupal.org/irc : Freenode

https://addons.mozilla.org/en-US/firefox/addon/16: Chatzilla

Mailinglijsten/newsletter

– http://drupal.org/mailing-lists: Mailman lijsten: security, support, theming

– http://www.theweeklydrop.com: wekelijkse nieuwsbrief met selectie van nieuws

Twitter

– #drupal

Extern

– http://www.reddit.com/r/drupal/ : discussies en ama

– http://drupal.stackexchange.com/: Drupal answers

Page 168: Drupal opleiding

Audio & VideoPodcasts

● http://drupaleasy.com/podcast

● http://www.lullabot.com/blog/podcasts:: lullabot podcasts

● https://www.acquia.com/resources/podcasts: Acquia

● https://modulesunraveled.com/podcast

Video

● Vimeo/Youtube: drupal

● http://mustardseedmedia.com/podcast

● http://drupalize.me (betalend)

● http://buildamodule.com/ (betalend)

● Www.archive.org

Page 169: Drupal opleiding

Conferenties

● http://www.drupical.com ● DUG: Drupal User Group● Drupal Camp: Gent, Leuven, La Roche?, Drupaljam,

Badcamp, Drupal camping● Drupal Developer Days: Szeged● Frontend United● Drupal Government days● Drupal cxo (Business)● Drupalcon: Amsterdam, Austin, www.Drupalcon.org