Drupal opleiding
-
Upload
hans-rossel -
Category
Documents
-
view
916 -
download
4
Transcript of Drupal opleiding
Drupal CMS – Brussel 24/2/2014 [email protected] – Twitter @haro - www.koba.be
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
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
Bron: Cmswire Open Source CMS Market Share Report (2011)
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
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
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
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
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
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.
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
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).
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).
Leercurve developers
Drupal leercurve
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
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.
Basisfunctionaliteiten
Zoekfunctie
RSS
Meertaligheid
Statistieken
Login-systeem met rollen
Reactiesysteem
SEO vriendelijke urls
Taxonomie
Basiselementen
Users Entities Nodes Blokken Menu Taxonomy Fields Views
HOOFDSTUK 2
INSTALLATIE DRUPAL CORE
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
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.
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
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?
Database maken
http://localhost/phpmyadmin/ Home > databases > create new database Users > create new user All privileges
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
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.
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
Bestandsstructuur
Mappen en inhoud Core niet hacken!
Sites map instellen: modules/templates
Files instellen
HOOFDSTUK 3
EEN EENVOUDIGE SITE
MET ENKEL
DRUPAL CORE
EEN WYSYWYG
EEN PREFAB THEME
Navigatiestructuur
Home Nieuws Wat doen we? Over ons Contact: contact module/webform
Performance verhogen
● Instellingen > Prestaties– Alle vinkjes aanleggen
● Modules > Overlay– Afvinken en opslaan onderaan
Inhoud toevoegen● Inhoud toevoegen
– Article: titel, foto, tekst, trefwoorden, comments
– Basic page: titel, tekst
● Verticale tabs– Publicatieopties
– Revisies
– Menu
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
Homepage instelling● Instellingen > Websitegegevens● Ofwel
– Node = overzicht van laatste 10 berichten aangeraden op homepage
– Vaste pagina vb node/5
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
Taxonomy
● Structuur > Taxonomie● Trefwoorden toevoegen
– Vaste lijst
– Free tagging (autoaanvullen)
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
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
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
Search
Zoekfunctie en instellingen Cron laten lopen om index op te vullen
(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
HOOFDSTUK
THEMES (basis)
Bartik en Seven
Standard frontend en backend theme Drupal 7 Bartik kan uitgebreid worden via een subtheme
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
MODULES
WAAR
KEUZE
INSTALLATIE
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
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
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
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
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.
FIELDS EN VIEWS
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
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)
Basis fields
In core– Imagefield
– Filefield
– Textfield
– Listfield
– Taxonomy reference field
Extra– Emailfield
– Url field (link)
– Datefield
– Entity reference field
– Video embed/Youtube field
File en Image
• Filefield
• Imagefield
• Image Styles
• Transliteration
• Filefield paths
• Filefield sources
• Plupload
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
Filefield sources
● Alternatieve bestandsupload mogelijkheden– Remote url
– IMCE filebrowser
– Bulkupload via Plupload
Gallery formatter
● https://drupal.org/project/galleryformatter● Fotogallerij weergave via jquery
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
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
Image Styles
Voordelen Kan via voorgedefinieerde presets images scalen, resizen en
croppen
Je kunt verschillende varianten van dezelfde foto automatisch laten genereren
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
Nieuwsoverzicht
● Teaserview van nieuwsberichten● Bloklijst van laatste nieuws bij nieuwsitem,
excluden van actuele item via argument.
HANDGEPLUKTE en BEINVLOEDE INFORMATIE
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
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
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
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
STATISTIEKEN
● Statistics module aanzetten: 16 weken● Sort criteria: Most popular● Default view: backlinks
EXPOSED FILTERS
Exposed filters• Filters wijzigen via code
• Checkboxen gebruiken (views checkboxes module/content taxonomy)
• Hierarchical select
VIEWS ARGUMENTEN
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.
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
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
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
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.
Views Bulk Operations http://blog.jquery.com/2011/12/08/what-is-happening-to-the-jquery-plugins-site/
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
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
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
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
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
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
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
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
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
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
Views import en export
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!
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
DISPLAY SUITE
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
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
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
Dynamic field
Weergave beheren
Select content
Overzicht fields
Weergave beheren
Bloklijst instellen
Field group
Field collection
Panels in ds
Display suite extra's: field templates
Display fields
Andere toepassingen
• Zoekresultaten
• Views slide show met meerdere content types
• Oefening 4: slideshow opzetten: custom View mode en voor alle content types instellen.
Alternating view mode
Nodequeue
Alternating view modes
Entity reference: rendered
Views content panes
View add display content pane
Add dynamic field
Page manager
Add pages
Performance
PANELS
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
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
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
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
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
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
Contexts
● Arguments– /taxonomy/term/%term
– /forum/%forum
– /music/beatles/th
● Andere contexts– Node auteur
– Node reference
MEERTALIGE WEBSITES
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
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
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
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
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
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
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
Meertalige menu's
● Maak best 1 menu per taal ● Weergave menu
– Via blok
– Blok taal instellen
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
STRUCTUURMODULES
Menu blockhttps://drupal.org/project/menu_block
● Delen van een menu weergeven in een blok● Menu opsplitsen of dupliceren● Gescheiden hoofd en submenu maken
Custom breadcrumbs
● Broodkruimels aanpassen volgens:– Nodetype
– Pad
– Views
– Trefwoorden
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
WEBFORM
Webform
• Mogelijkheid om diverse formulieren aan te maken: bestellingen, contactformulier, inschrijving, wedstrijd, registratie
• Diverse velden
• Verzenden van emails, export xls
• Gelijkaardig: entity form
SPAM
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, ...
BACKUPS, ONDERHOUD & UPGRADES
Databasestructuur
Via phpmyadmin Cache Nodes Terms Users
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
BACKUP DATABASE
BACKUP FILES
Vooral de map sites is van belang, met de map files in het bijzonder
Ftp 2000 files max
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
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
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
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
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
DRUSH
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)
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
Drush commando voorbeelden● Link voor eenmalige login bekomen
– Drush uli (user 1)
– drush uli 5 (user 5)
● Cache leegmaken– drush cc all
NIEUWSBRIEVEN & e-mail integratie
Mail interactie
Simplenews Subscriptions of Notify of Watcher Actions & Workflow/Rules & Views Bulk
operations Messenger & Notifications framework Webform Mailhandler
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)
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)
Nieuwsbrief theming
● http://www.campaignmonitor.com/css/
● http://drupal.org/node/268404
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
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']; ?>
DRUPAL SUPPORT
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
– #drupal
Extern
– http://www.reddit.com/r/drupal/ : discussies en ama
– http://drupal.stackexchange.com/: Drupal answers
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
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