Drupal Cursus Hans Rossel

  • 21,663 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
21,663
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
298
Comments
0
Likes
11

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Drupal CMS - v17hans.rossel@koba.be – Twitter @haro - www.koba.be Informatics Hans Rossel - www.koba.be
  • 2. Wat is DrupalCMF (W)CMSContent Management Content Management Systeem Framework www.drupal.orghttp://api.drupal.org www.drupal.comhooks, callbacks & overrides www.drupal.be Informatics Hans Rossel - www.koba.be
  • 3. Situering: CMS concurrentenGesloten: Tridion, Sharepoint, Documentum,StellentOpen sourceJava: Alfresco, Liferay, OpenCMSPython: Plone (Zope webserver, ZODB)Php:Joomla (Mambo)WordpressTypo3Asp: Dotnetnuke Informatics Hans Rossel - www.koba.be
  • 4. Bron: Cmswire Open Source CMS Market Share Report (2009) Informatics Hans Rossel - www.koba.be
  • 5. Trends Open Source CMS www.google.com/trends en www.indeed.com/jobtrends Informatics Hans Rossel - www.koba.be
  • 6. Informatics Hans Rossel - www.koba.be
  • 7. Referenties Media/EntertainmentVRT, VTM, VT4, Vitaya, RTBFSony BMG Music, Universal Music Group, Warner Bros, 20th Century Fox, Michael Jackson, Eric Clapton and Robbie Williams, Grammy awards, Emmy awardsThe Examiner, The Economist, Le Figaro, Edipresse, Infoworld, Aj JazeeraStudio Brussel, Radio Netherlands Worldwide, Australian Broadcast Company, BBC, CNN, ReutersVirgin, Slate, Monthy Python and Lucas Arts Informatics Hans Rossel - www.koba.be
  • 8. NGO, Gov & eduHuman Rights watch, AmnestyWorld Food Programme, World Bank, United Nations, Europese Unie, World Economic ForumWitte 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 HarvardUitinVlaanderen, FARO, Louvre, Tate, Vlaamse KunstcollectieNASA (http://themis.asu.edu/)Linux Foundation, JAVA.net en Internet Systems Consortium Informatics Hans Rossel - www.koba.be
  • 9. Enterprises using DrupalTelenet, 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), IKEAZenito (svmb/admb)Meer referenties:http://www.buytaert.net/tag/drupal-sites Informatics Hans Rossel - www.koba.be
  • 10. Voordelen DrupalOpen Source GPLv2: broncode vrij downloadbaar en aanpasbaarGeen licentiekosten.Geen Vendor Lock-In. Veel bedrijven. Geen “eenmans” Open Source CMSGrote community & sterke groei: veel support, testen, activiteitUp-to-date, mee met nieuwe ontwikkelingenPhp = meest gebruikte webprogrammeertaalUitvoerig getest: 3.2 miljoen keer/jaar gedownload, grote sites gebruiken het10000 Modules = Veel kostefficiënte uitbreidingen http://drupal.org/project/Modules Informatics Hans Rossel - www.koba.be
  • 11. Troeven DrupalKwaliteit 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 functionaliteitenVolledig 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 AssociationCommunity & 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 Informatics Hans Rossel - www.koba.be
  • 12. Integratie DrupalDMS: 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 modulesProject Management Drupal Modules: Storm, Casetracker, ProjectWebshop Ubercart/Drupalcommerce module of integratie met MagentoWebservices SOAP, Rest, XMLRPC, Services module. Informatics Hans Rossel - www.koba.be
  • 13. Geschiedenis1999 Dries BuytaertRecente versies focus4.7: Form API, admin interface5: Mature & Stable, CCK, Views6: Multilingual support, theming layer7: Usability (image), Unit testing, php5.2.6, Semantic web,fields API8: Webservices (Symfony 2, OO php), Configurationmanagement, mobile, html5, design, multilingual. Ziehttp://groups.drupal.org/drupal-initiatives Informatics Hans Rossel - www.koba.be
  • 14. Omvang Drupal project> 10000 Modules (= plugins, extensies)> 1.6 miljoen paginas en > 850.000 users op drupal.orgDrupal core werd 3.2 miljoen keer gedownload in 2009 endraagt meer dan 600.000 actieve websites(http://drupal.org/project/usage)Twee delenCore: >700 ontwikkelaars (D6), 62 duizend lijnen code (=15persoonjaren = 837 duizend dollar, bron ohloh.net).Contributed: >1300 ontwikkelaars, 2.6 miljoen lijnen code (=765persoonjaren = 42 miljoen dollar, bron ohloh.net)42 talen, >1000 gratis Themes (meer vbTemplatemonster, ...) Informatics Hans Rossel - www.koba.be
  • 15. Groei Informatics Hans Rossel - www.koba.be
  • 16. Leercurve developers Informatics Hans Rossel - www.koba.be
  • 17. CommunityInternationaal www.drupal.org http://planet.drupal.org: Blogs http://groups.drupal.org: WerkgroepenBelgië Www.drupal.be Www.drupal.be/support: Bedrijven Informatics Hans Rossel - www.koba.be
  • 18. SysteemvereistenStandaard AlternatievenApache Lighttpd IIS mits aanpassingen voor php> MySQL 5.0.15 PostgreSQL> Php 5.2 (+pdo) MSSQL, Oracle via php PDO.Php RAM > 50MBmin Informatics Hans Rossel - www.koba.be
  • 19. BasisfunctionaliteitenZoekfunctieRSSMeertaligheidStatistiekenLogin-systeem met rollenReactiesysteemSEO vriendelijke urlsTaxonomie Informatics Hans Rossel - www.koba.be
  • 20. BasiselementenUsersEntities NodesBlokkenMenuTaxonomyFieldsViews Informatics Hans Rossel - www.koba.be
  • 21. BasisfunctionaliteitenZoekfunctieRSSMeertaligheidStatistiekenLogin-systeem met rollenReactiesysteemSEO vriendelijke urlsTaxonomie Informatics Hans Rossel - www.koba.be
  • 22. HOOFDSTUK 2INSTALLATIE DRUPAL CORE Informatics Hans Rossel - www.koba.be
  • 23. Origineel of voorverpaktOrigineel drupal.orgVia Windows installer:http://acquia.com/downloads/windows-installerVia controlepaneel: Installatron, FantasticoDrupal gardensDistributies (http://drupal.org/project/distributions)Open AtriumOpen PublishPressflowNodestreamCommerce KickstartOpen Public Informatics Hans Rossel - www.koba.be
  • 24. SysteemvereistenStandaard AlternatievenApache LighttpdMySQL 5 IIS mits aanpassingenPhp 5.2 (nog geen PostgreSQL5.3) Sinds D7: nieuwe abstraction layer die andere databases (MSSQL, Oracle) ondersteunt via php PDO. Informatics Hans Rossel - www.koba.be
  • 25. Installatie nodigHosting of LAMP op localhost> Mysql 5: database> php 5.2: programmeertaalApache mod rewrite bruikbaar in .htaccessVoldoende geheugenhttp://drupal.be/documentatie/drupal-hosting Informatics Hans Rossel - www.koba.be
  • 26. Lamp server op Ubuntu (debian)sudo aptitude install php5 apache2 mysql- server phpmyadmin php5-mysql libapache2-mod-php5 php5-cli (voor drush)root user paswoord instellen voor mysqlphpmyadmin: spatiebalk drukken om apache2 te kiezen + oktesten: localhost, localhost/phpmyadminsudo /etc/init.d/apache2 restartAlternatief: sudo tasksel install lamp-serverMeer info: https://help.ubuntu.com/community/ApacheMySQLPHP Informatics Hans Rossel - www.koba.be
  • 27. Mod rewrite installeren1) sudo a2enmod rewrite2) sudo pico /etc/apache2/sites-enabled/000-default3) Change AllowOverride None toAllowOverride All4) Restart Apache: sudo/etc/init.d/apache2 force-reload Informatics Hans Rossel - www.koba.be
  • 28. Drupal core downloadenOp drupal.orgDrupal 6... downloaden (of Drupal 5...)Nederlandse taal downloaden (eerst doen!)Gebundeld www.drupal.beOp alternatieve lokatie (oudere versies)http://ftp.drupal.org/files/projects/ Informatics Hans Rossel - www.koba.be
  • 29. Softwarehttp://www.mozilla-europe.org/en/firefox/https://addons.mozilla.org/en-US/firefox/addon/1843http://www.wampserver.com/en/download.phpInstalleren in c:wamp Informatics Hans Rossel - www.koba.be
  • 30. WampserverSkype uitschakelenStart all servicesApache rewrite module aanLocalhost testenBestanden in C:wampwwwhttp://drupal.org/drupal-6.5En http://drupal.org/project/nl extract in rootUnpack (7-zip)Localhost: drupal6-5 Informatics Hans Rossel - www.koba.be
  • 31. Database makenhttp://localhost/phpmyadmin/Home > databases > create new databaseUsers > create new userAll privileges Informatics Hans Rossel - www.koba.be
  • 32. Installatie# Copy the ./sites/default/default.settings.phpfile to ./sites/default/settings.php.# Change file permissions so that it iswritable by the web server. Informatics Hans Rossel - www.koba.be
  • 33. Installatie zelfDatabase gegevens invullenGegevens site invullen Informatics Hans Rossel - www.koba.be
  • 34. BestandsstructuurMappen en inhoudCore niet hacken!Sites map instellen: modules/templatesFiles instellen Informatics Hans Rossel - www.koba.be
  • 35. php.iniFoutreportage & securityregister_globals = OffUpload en timout limietenmemory_limit = 128Mupload_max_filesize = 150Mpost_max_size = 150Mmax_input_time = 300max_execution_time = 300 Informatics Hans Rossel - www.koba.be
  • 36. php.ini settingsKunnen ingesteld worden opEen bestandje php.ini uploaden in rootIn .htaccessphp_flag register_globals offphp_value memory_limit "128M"php_value max_execution_time 300In settings.php van DrupalIn een gewoon stukje php code: http://www.php.net/ini_set (enkel geldigtijdens script)Let opSyntax verschilt tussen werkwijzenAls .htaccess error 500 geeft staat hosting dit niet toe Informatics Hans Rossel - www.koba.be
  • 37. Installatie op cpanel hostingDrupal 7 uploaden methttp://filezilla-project.org/download.php?type=clientEen database aanmaken bij databases (niet in phpmyadmin)Eerst database makenDan user makenDan user toevoegen aan database, all privilegesDrupal installatieDatabasenaam en username worden vaak geprefixt metaccountname bij hosting: dus accountname_username enaccountname_databasename gebruikenPermissies files en settings instellen Informatics Hans Rossel - www.koba.be
  • 38. Admin: BasiselementenUsersNodesBlokkenMenuTaxonomyCCKViews Informatics Hans Rossel - www.koba.be
  • 39. HOOFDSTUK 3EEN SIMPELE BROCHURESITE MET ENKEL DRUPAL CORE EEN WYSYWYG EEN PREFAB THEME Informatics Hans Rossel - www.koba.be
  • 40. Basisinstellingen installatieSite instellingenBestands uploadBestandssysteemDatum en tijdFoutrapportageSite onderhoudWebsitegegevensInhoudelijk beheerTeaserlengte, taxonomie, ...GebruikersRollen admin en redactie aanmaken + rechten instellenGebruikers toevoegen aan een rol Informatics Hans Rossel - www.koba.be
  • 41. NavigatieBlokken: keuze plaats menuMenusPrimary & secundary linksSettingsItems toevoegenTijdens het invoeren/bewerken van een paginaVia de menu interface Informatics Hans Rossel - www.koba.be
  • 42. Gewone paginas toevoegenOpbouwen structuurHome: promoted itemsOver onsProductenReferentiesContact: contact module Informatics Hans Rossel - www.koba.be
  • 43. WYSYWYGDe editorwww.drupal.org/project/wysiwygExterne editor downloaden: Ckeditor, TinymceAlternatief Bueditor, Markdown of Aloha editor (html5)Afbeeldingen in de editorwww.drupal.org/project/imcewww.drupal.org/project/imce_wysiwyg Informatics Hans Rossel - www.koba.be
  • 44. WYSYWYG installatie & werkingStappen (ook algemeen voor installeren module)Issues bekijken: critical bugs ea bugs + versie kiezenOpladen van de modulereadme.txt lezen en online handboekEventuele core patches installerenDependend modules aanvinken op admin/build/modulesAanvinken op admin/build/modulesToegangsrechten controlerenModule settings instellenKijken als er te activeren blokken zijn bijgekomen Informatics Hans Rossel - www.koba.be
  • 45. SearchZoekfunctie en instellingenCron laten lopen om index op te vullen Informatics Hans Rossel - www.koba.be
  • 46. POORMANSCRONNoodzaak cronWissen log bestandenAndere automatische takenVoordelenSimpel te installerenNadelenNiet regelmatig: start na tijd én nadat user inlogtNiet geschikt voor versturen nieuwsbrievenAlternatief: crontab op server: aan te radenhttp://drupal.org/cronKan makkelijk op cpanel hosting Informatics Hans Rossel - www.koba.be
  • 47. HOOFDSTUKTHEMES (basis) Informatics Hans Rossel - www.koba.be
  • 48. Bartik en SevenStandard frontend en backend theme Drupal7Bartik is bedoeld om uitgebreid te worden viaeen subtheme (zie theme les) Informatics Hans Rossel - www.koba.be
  • 49. Prefab themesOp Drupal.orghttp://drupal.org/project/ThemesCommercieel http://fusiondrupalthemes.com/ http://www.topnotchthemes.com/portfolio http://www.templatemonster.com/drupal-themes.php Informatics Hans Rossel - www.koba.be
  • 50. MODULES WAAR KEUZEINSTALLATIE Informatics Hans Rossel - www.koba.be
  • 51. Een module kiezenOverzicht:http://drupal.org/project/Modules: thematischhttp://drupal.org/project/Modules/name: alfabetischRelated projects & discussionsPopulariteithttp://drupal.org/project/usage: populariteithttp://acquia.com/products-services/acquia-drupal-modules:geselecteerd & ondersteund door AcquiaRatings: http://drupalmodules.comNieuwe modules: http://drupal.org/taxonomy/term/14Video http://www.lullabot.com/node/439/play Informatics Hans Rossel - www.koba.be
  • 52. Status van een moduleVersie 6 of 7Status:Official releasePre-alpha, Alpha, beta, rc (release candidate)Dev versiesOpgelet met updates van 7.x-1.x naar 7.x-2.x Informatics Hans Rossel - www.koba.be
  • 53. Factoren kwaliteit moduleTijd: maturiteit & actief onderhouden?Eerste versieLaatste update/commit (+ view cvs messages: most active projects)Tijd tussen de updatesFutureproof?Drupal 6/7 versieOntwikkelaar(s)AantalHoelang betrokken bij DrupalAndere modules waarvoor verantwoordelijk (cvs messages: most activedevelopers)User profile + track & track code Informatics Hans Rossel - www.koba.be
  • 54. Factoren (vervolg)Issue queueAantal meldingen (populariteit module)Aantal bugs & opgeloste bugsAantal patches (betrokkenheid externe developers)StatistiekenOmvang moduleEen klein probleem vraagt een kleine moduleGeen module als je met enkele lijntjes code kunt oplossenGevaar voor modulitis: performance site zakt bij elke module die je toevoegtModule usage statisticsConcurrerende modules:zie blokken related content Informatics Hans Rossel - www.koba.be
  • 55. Issue queueVragen over één module steeds hier stellen, niet op forumStatussen, category & priorityAdvanced searchDrupal core issues: http://drupal.org/project/issues/drupalIngeven van een issueZoeken naar duplicatesHeel duidelijke omschrijving (reproduceerbaar probleem): versies, browser, anderezaken geinstalleerd, stappen hoe je kunt reproduceren op “fresh install”,screenshots, code, views export, cck exportVerwijzing naar node via filterGeen titel wijzigenSubscribe? Hopelijk betere oplossing toekomst. Zie ook my issues.Video: http://www.lullabot.com/node/386/play Informatics Hans Rossel - www.koba.be
  • 56. BASIS MODULES TOPMODULESNODIG VOOR bijna ELKE INSTALLATIE Informatics Hans Rossel - www.koba.be
  • 57. CCK EN VIEWS Informatics Hans Rossel - www.koba.be
  • 58. CCK/FieldsHistoriek en evolutieNodes → Flexinode → cck contributed (→ fields in core)DoelEigen content types met eigen velden definiërenDownloadhttp://drupal.org/project/cckExtra fields: http://drupal.org/project/Modules/category/88 Informatics Hans Rossel - www.koba.be
  • 59. Basis cck fieldsVoornaamste extra fieldshttp://drupal.org/project/imagefieldhttp://drupal.org/project/filefieldhttp://drupal.org/project/datehttp://drupal.org/project/emailhttp://drupal.org/project/linkhttp://drupal.org/project/emfield Informatics Hans Rossel - www.koba.be
  • 60. AfbeeldingenModules: CCK afbeeldingsveldImagefieldImageAPIImagecacheFotoalbumLightbox2In combinatie met imagecache (vaste hoogte),views grid view, of css float left Informatics Hans Rossel - www.koba.be
  • 61. Imagecachewww.drupal.org/project/imagecacheVoordelenKan via voorgedefinieerde presets images scalen, resizenen croppenJe kunt verschillende varianten van dezelfde fotoautomatisch laten genereren Informatics Hans Rossel - www.koba.be
  • 62. VIEWSVersiesViews 1: Drupal 5: enkel van nodesViews 2: Drupal 6: http://views-help.doc.logrus.com/Downloadhttp://drupal.org/project/viewshttp://drupal.org/project/simpleviews: eenvoudig via viewsapiDoelLijsten trekken van titels, teksten, fotos, ...WorkshopEnkele basisviews aanmaken Informatics Hans Rossel - www.koba.be
  • 63. Informatics Hans Rossel - www.koba.be
  • 64. Views2http://blip.tv/file/995855http://blip.tv/file/1257026/http://views-help.doc.logrus.com/admin/advance Informatics Hans Rossel - www.koba.be
  • 65. Relationshipshttp://blip.tv/file/1593750 Informatics Hans Rossel - www.koba.be
  • 66. Theming Basics & Instellingen Informatics Hans Rossel - www.koba.be
  • 67. Theme instellingen Informatics Hans Rossel - www.koba.be
  • 68. Instellingen & Keuze themeTemplates: admin/build/themesCore themes en nutVariabelen, logo, snelkoppelingsikoonBerichtinformatie weergeven overZen ea: extra theme settingsExtra variabelen: admin/settings/site-informationEigen template: user/uid/edit (toegangsrechten)Beheertemplate: admin/settings/adminBlokken en menus Informatics Hans Rossel - www.koba.be
  • 69. Prefab themes installerenLocatie: sites/all/themesOp Drupal.orghttp://drupal.org/project/ThemesAlternatieve weergavehttp://themegarden.org/drupal6/http://www.osskins.com/main/category/drupal/http://www.siteground.com/drupal-hosting/drupal-themes.htmhttp://themebot.com/website-templates/drupal-themesOntwerpershttp://alldrupalthemes.com/: ADThttp://www.roopletheme.com/: roopletheme Informatics Hans Rossel - www.koba.be
  • 70. Mooie Drupal Themeshttp://drupal.org/project/acquia_slatehttp://drupal.org/project/marinellihttp://drupal.org/project/absynthehttp://drupal.org/project/acquia_marinahttp://drupal.org/project/addarihttp://drupal.org/project/analytichttp://drupal.org/project/colorpaperhttp://drupal.org/project/darkelegancehttp://drupal.org/project/fervenshttp://drupal.org/project/magazeenhttp://drupal.org/project/scruffyhttp://drupal.org/project/tma Informatics Hans Rossel - www.koba.be
  • 71. Betalende ThemesTop Notch Themes: goede themes van een bedrijfgegroeid uit de Drupal community, wat een goedeintegratie garandeertTemplatemonster: Drupal themes van een grote templateaanbiederhttp://www.fordrupal.comhttp://danaythemes.comhttp://www.drupalshark.com/catalog/themeshttp://www.themesnap.com/drupal-themes.html Informatics Hans Rossel - www.koba.be
  • 72. Starter Themeshttp://drupal.org/project/zenhttp://drupal.org/project/genesishttp://drupal.org/project/frameworkhttp://drupal.org/project/starkhttp://drupal.org/project/studiohttp://drupal.org/project/cleanstatehttp://drupal.org/project/hunchbaque Informatics Hans Rossel - www.koba.be
  • 73. CSS Framework Starter Themescss frameworks zijn erg handig om snel complexe layouts te maken die standard compliant zijn. Bekende voorbeelden zijn Blueprint en 960.gs. Bij Drupal vind je de volgende themes die hierop gebaseerd zijn:http://drupal.org/project/blueprinthttp://drupal.org/project/ninesixtyhttp://drupal.org/project/ninesixtyfluid Informatics Hans Rossel - www.koba.be
  • 74. Admin ThemesNu er erg wordt gewerkt aan het verbeteren van de User Experience en Usability van Drupal zijn er recent heel wat mooie admin themes beschikbaar. Ze zijn bedoeld als theme voor de backend van Drupal en je stelt ze in als beheertemplate.http://drupal.org/project/rootcandyhttp://drupal.org/project/adminhttp://drupal.org/project/controlpanel Informatics Hans Rossel - www.koba.be
  • 75. Betalende Theme servicesTop Notch Themes: goede themes van een bedrijf gegroeid uit de Drupal community, wateen goede integratie garandeertTemplatemonster: Drupal themes van een grote template aanbiederhttp://www.fordrupal.comhttp://danaythemes.comhttp://www.drupalshark.com/catalog/themeshttp://www.themesnap.com/drupal-themes.htmlBepaalde bedrijven kunnen ook een psd omzetten naar een Drupal theme:http://vandelaydesign.com/blog/design/psd-to-html-serviceshttp://www.psd2html.com/about-us.html (http://drupal.org/node/242847)https://w3-markup.com/order#drupalSoftware zoals http://www.artisteer.com kan een standaard maar aanpasbaar Drupal theme opzetten. Informatics Hans Rossel - www.koba.be
  • 76. Bestandsstructuur van een theme Informatics Hans Rossel - www.koba.be
  • 77. Basisbestanden: phptemplate.info: definitie van themescreenshot.pngCss: Gewoonlijk: style, print, ie6Template filespage.tpl.php, node.tpl.php, block.tpl.php31 template bestanden in core in D6(http://drupal.org/node/190815#default-templates)template.php Informatics Hans Rossel - www.koba.be
  • 78. Theme anatomie Informatics Hans Rossel - www.koba.be
  • 79. Customizen themeTemplate files: 31 in coreIn theme mapIn modules map: te overschrijvenCSSIn theme map: style.css of meer volgens .infoIn modules map: te overschrijven30 stylesheets IE: http://drupal.org/project/unlimited_css ofhttp://adaptivethemes.com/load-unlimited-stylesheets-in-ie7Theme functionsIn theme map: template.php voor overschrijven theme_ functies enpreprocess varsIn modules map: in code theme_... (core zie api.drupal.org ofhttp://api.freestylesystems.co.uk voor contrib) Informatics Hans Rossel - www.koba.be
  • 80. .info; $Id: garland.info,v 1.5 2007/07/01 23:27:32 goba Exp $name = Garlanddescription = Tableless, recolorable, multi-column, fluid width theme (default).version = VERSIONcore = 6.xengine = phptemplatestylesheets[all][] = style.cssstylesheets[print][] = print.css; Information added by drupal.org packaging script on 2008-10-08version = "6.5"project = "drupal"datestamp = "1223497210" Informatics Hans Rossel - www.koba.be
  • 81. page.tpl.phpGebruik van variabelen:<?php if ($left): ?> <?php print $left; ?><?php endif; ?><?php if ($is_front): ?> <?php print t(Welkom op de homepage!); ? ><?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 82. Weergave theme functionsVoorbeeld:<?php if ($primary_links): ?> <?php print theme(links, $primary_links); ?><?php endif; ?>Gebruikt http://api.drupal.org/api/function/theme_links/6AlternatiefMenu tree: <?php print theme(menu_tree, menu_tree(primary- links)); ?>Gebruikt: http://api.drupal.org/api/function/theme_menu_tree/6 Informatics Hans Rossel - www.koba.be
  • 83. Een nieuw theme ontwikkelen Informatics Hans Rossel - www.koba.be
  • 84. VertrekpuntenStarten vanaf een bestaande statische htmlprototype/wireframe (from scratch of http://www.oswd.org)Starten vanaf Zen theme: hacken via subthemeStarten vanaf een bestaand (of eigen basistheme) Drupaltheme: hacken of subtheme Informatics Hans Rossel - www.koba.be
  • 85. Een nieuw theme ontwerpen METHODE 1:Starten vanaf een statische prototype Informatics Hans Rossel - www.koba.be
  • 86. Wireframe Informatics Hans Rossel - www.koba.be
  • 87. file:///D:/HANSWERKMAP/KOBA/klanten%20en%20offerteaanvragen/gentverwent/wireframes/wireframes_detailfiche%20copy.jpg Informatics Hans Rossel - www.koba.be
  • 88. Statische prototypeEen gewone html pagina of versie van dehoofdpaginas van je siteHtml en css voor DrupalGebruik geen .content, .links, .menu, .header, .picture:worden reeds gebruikt door Drupal & geeft conflictenBedenken wat regions en wat blokken zullen zijnRekening houden met .item-list en andere door coregegenereerde html en stylesGebruik – ipv _ in class en id namen Informatics Hans Rossel - www.koba.be
  • 89. Belangrijke css aspectenBox modelDisplay:inline; en display:block; Wat standaard & Verschil margins.Problemen met float drupping bij IE padding: dus .inner of marginFloatsFloat design: alles floaten en tussendoor clearenVerschil display:inline; en float:left; voor listsFloated image eerst en blok die het omvat moet ook gefloat zijnLijsten:Koppig wegens inheritance, geen !importantDrupal .item-list class overridenConditional comments ipv hacks Informatics Hans Rossel - www.koba.be
  • 90. Opgelet: CachingNa elke wijziging in template, cache wissen.6 Manieren:Klik op de "cache data opschonen" knop op Beheren > Site-instellingen >Prestatie.Klik in Devel block op de "Empty cache" link.Bezoek de Beheren > Site-constructie > Templates pagina (werkt niet altijd)Views theme informationtemplate.php: drupal_rebuild_theme_registry();Zen theme settings Informatics Hans Rossel - www.koba.be
  • 91. STAP 1: Theme folderMaak een mapje in sites/all/themes met denaam van je theme vb abcStel admin theme in op Garland Informatics Hans Rossel - www.koba.be
  • 92. STAP 2: .info file: basis.info handbook: http://drupal.org/node/171205Maak abc.info file met inhoud; $Id$name = abcdescription = ABC themeversion = 1.0core = 6.xengine = phptemplate Informatics Hans Rossel - www.koba.be
  • 93. .info file: regionsStandaard:regions[left] = Left sidebarregions[right] = Right sidebarregions[content] = Contentregions[header] = Headerregions[footer] = Footer Informatics Hans Rossel - www.koba.be
  • 94. .info file: eigen regionsregions[left] = Left sidebarregions[right] = Right sidebarregions[header] = Headerregions[footer] = Footerregions[content_top] = Content topregions[content_bottom] = Content bottomregions[navbar] = Navbarregions[helemaalrechtsboven] = Helemaal rechts bovenOpm: Bestaande naamgeving best behouden, maar eigen nieuwe toevoegen Informatics Hans Rossel - www.koba.be
  • 95. STAP 3: cssIn .info file:stylesheets[all][] = style.cssstylesheets[print][] = print.cssOude methode (d5):in template.php viavb: drupal_add_css(drupal_get_path(theme, abc) . /mystyle.css,theme);In page.tpl.php:<?php print $styles; ?> Informatics Hans Rossel - www.koba.be
  • 96. STAP 4: page.tpl.phpSla je statische pagina op onder de naam page.tpl.php.Dynamisch maken: $title, $content en $tabs invoegen.Constructie invoegen variabelen(Theme coding conventions: http://drupal.org/node/1965)<?php if ($tabs): ?> <div class="tabs"> <?php print $tabs; ?> </div><?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 97. Regions (blokken) invoegenZoals gedefinieerd in .info file: $header, $left, $right, $footer, $content_top, $content_bottom, $navbar <?php if ($content_top): ?> <div id="content-top" class="region"> <?php print $content_top; ?> </div> <?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 98. Navigatie invoegen<?php if ($primary_links): ?> <div id="primary"> <?php print theme(links, $primary_links); ?> </div><?php endif; ?><?php if ($secondary_links): ?> <div id="secondary"> <?php print theme(links, $secondary_links); ?> </div><?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 99. Logo<?php if ($logo): ?> <div id="logo"> <a href="<?php print $base_path; ?>" title="<?php print t(Home); ?>"> <img src="<?php print $logo; ?>" alt="<?php print t(Home); ?>" title="<?php print t(Home); ?>" /> </a> </div><?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 100. Breadcrumbs<?php if ($breadcrumb): ?> <div class="breadcrumb"> <?php print $breadcrumb ?> &raquo; <?php print $title; ?> </div><?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 101. Zoekbox<?php if ($search_box): ?> <div class="search-box"> <?php print $search_box ?> </div><?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 102. Drupal zaken<?php if ($help): print $help; endif; ?>$help: Dynamische help tekst van admin paginas<?php if ($messages): print $messages; endif; ?>$messages: html voor status, fouten en waarschuwingen, fouten hierin uit te schakelen via foutrapportageScreenshot.pnghttp://drupal.org/node/11637 Informatics Hans Rossel - www.koba.be
  • 103. Doctype & Head<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict// EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<? php print $language->language; ?>" lang="<?php print $language->language; ?>" dir="<?php print $language- >dir; ?>"><title><?php print $head_title; ?></title><?php print $head; ?> Informatics Hans Rossel - www.koba.be
  • 104. Footer$feed_icons: RSS feed ikoontjes voor de huidige pagina$footer_message: Voetbericht zoals ingesteld bijwebsitegegevens$footer : De voet region zoals gedefinieerd in template.php.$closure: Eind html van modules die de pagina gewijzigdhebben. Moet altijd na op het einde komen na alle anderedynamische content. Problemen met javascript als dezevariabele vergeten wordt. Informatics Hans Rossel - www.koba.be
  • 105. page.tpl.php: identiteit$front_page: url van de homepage, inclusief detaalprefix of taaldomein$logo: Pad naar logo image, zoals opgeladen in admin/build/themes/settings$site_name: Naam van de site, zoals ingesteld inwebsitegegevens$site_slogan: Slogan van de site, zoals ingesteld inwebsitegegevens$mission: Missie van de site, zoals ingesteld inwebsitegegevens Informatics Hans Rossel - www.koba.be
  • 106. STAP 4: JavascriptIn .info file:scripts[] = myscript.jsOude methode (d5):in template.php viavb: drupal_add_js(drupal_get_path(theme, abc) . /myscripts.js,theme)In page.tpl.php:<?php print $scripts; ?> Informatics Hans Rossel - www.koba.be
  • 107. Een nieuw theme ontwerpen METHODE 2:Een subtheme van het Zen theme Informatics Hans Rossel - www.koba.be
  • 108. ZEN Themewww.drupal.org/project/zenNet als Garland gebaseerd op dehttp://www.positioniseverything.net/articles/jello.hJello Mold techniekVoordelenEnorm goede documentatie in commentsExtra functies (theme settings, block editing)Perfect full option hackable via subtheme Informatics Hans Rossel - www.koba.be
  • 109. Een Zen subtheme - #226507Kopieer STARTERKIT en hernoem het.info: mijntheme.info + verwijzingenCSSlayout-liquid.css of layout-fixed.css → layout.csszen.css → mijntheme.cssOptie: html-elements.css + ;weghalen uit .info fileKopieer tpl.php files indien gewenst Informatics Hans Rossel - www.koba.be
  • 110. Een nieuw theme ontwerpen METHODE 3:Hacken via subtheme van bestaand theme Informatics Hans Rossel - www.koba.be
  • 111. Een subtheme makenMaak een map met naam van de thememorelli.info (#171205)name = MorelliDescription = Mooi themeVersion = 1.0Core = 6.xBase theme = garlandstylesheets[all][] = morelli.css Informatics Hans Rossel - www.koba.be
  • 112. DYNAMISCH THEMENTheme wijzigen volgens voorwaarden Informatics Hans Rossel - www.koba.be
  • 113. Dynamisch sturen Diverse mogelijkhedenVia css: oa $body_classesVia block visibility settingsVia dynamische variabelenVia meerdere templates: volgens url, user,content typeIntercept & override variables Informatics Hans Rossel - www.koba.be
  • 114. Drupal paden, classes voor cssStandaard: node/nidOpvragen via:http://api.drupal.org/api/function/arg/6VoorbeeldDrupal path: node/11<?php print arg(0); ?> geeft node<?php print arg(1); ?> geeft 11<?php if (arg(2) == edit) { echo $content; } Informatics Hans Rossel - www.koba.be
  • 115. URL Aliassen opvragenZie: http://api.drupal.org/api/function/drupal_get_path_alias/6 en http://www.php.net/manual/en/reserved.variables.get.php<?php // $_GET[q] geeft node/nid en explode() splitst de string op bij / en plaatst de stukken in een array $path_pieces = explode(/, drupal_get_path_alias($_GET[q])); // dus als het pad is /abc/def, $path_pieces is dan Array ( [0] => abc, [1] => def ) // Dus, $path_pieces[0] geeft abc print $path_pieces[0];?>vb andere headers volgens content indien pathauto blogs of block visibility settings<body class="<?php print $body_classes . . $path_pieces[0]; ?>">body.node-type-blog #header, body.page-nl-blogger-list #header, body.blogs #header, body.blog #header { background-image:url(images/blogheader.jpg);} Informatics Hans Rossel - www.koba.be
  • 116. PATHAUTODownload:http://drupal.org/project/pathautoDoel:Automatische urlsHackable urls: http://drupal.org/node/247205Sturen: vb op basis van url themenAfstelleni18n-ascii.txt bestand (niet vergeten bij update)Bulk delete en bulk generate aliassen Informatics Hans Rossel - www.koba.be
  • 117. Spelen met blokkenVolgens urlwww.drupal.org/project/pathautoZichtbaarheid voor blog/*, videos/*, nieuws/*Volgens rolAdmin blokken: redactie, whos online, statistiekenPhp zichtbaarheidEnkel voor bepaalde cts Informatics Hans Rossel - www.koba.be
  • 118. Block visibility settings:$match = FALSE; php$types = array(onderwijsmap => 1, campagne => 2); //Inhoudstypes waarvoor we het blok willen tonenif (arg(0) == node && is_numeric(arg(1))) { $nid = arg(1); $node = node_load(array(nid => $nid)); $type = $node->type; if (isset($types[$type])) { $match = TRUE; }}$url = request_uri();if (strpos($url, "wat-we-doen")) { //url waarvoor we het blok willen tonen, dus wat-we-doen/* $match = TRUE;}return $match;Meer: http://drupal.org/node/134425 Informatics Hans Rossel - www.koba.be
  • 119. Extra page.tpl.php filesVorm: page-url-stukjes.tpl.phpHandig, lijkt goed op html templating, maarvermijden indien mogelijkOnderhoudbaarheid: header enfootergedeelte via includes Informatics Hans Rossel - www.koba.be
  • 120. Meerdere page.tpl.php filesFrontpage page-front.tpl.phpVoor node pad (url)Page-node-edit.tpl.php of page-node-add.tpl.php > page-node-1.tpl.php > page-node.tpl.php > page.tpl.phpVolgens userspage-user-1.tpl.phpVolgens url (view of module)page-blog-tpl.php, page-viewpagename.tpl.php, page-node-add.tpl.php,page-admin.tpl.php, page-admin-build-block.tpl.php, page-civicrm.tpl.php, page-googlemap.tpl.php, ...Let op: volgens url niet voor node aliassen, steeds Drupal path vb node/ 2 Informatics Hans Rossel - www.koba.be
  • 121. Page.tpl.php extraVia preprocess functie in template.php kanondersteuning toegevoegd worden voorpage.tpl.php bestanden voor aliassen envoor taxonomy Informatics Hans Rossel - www.koba.be
  • 122. Dynamische variabelenDeze variabelen zijn beschikbaar voor alle template files, zie theme.inc$id: positie van de template. Telkens de template is gebruikt, wordt dit cijfer verhoogd met 1. Gedefinieerd als $variables[id] = $count[$hook]++;$zebra: odd of even, wisselt telkens de template wordt gebruikt. Gedefinieerd als $variables[zebra] = ($count[$hook] % 2) ? odd : even;$directory: het pad van de theme tov de base van de installatie: vb "sites/all/themes/myTheme". Gedefinieerd als $variables[directory] = path_to_theme();$is_admin: TRUE als de bezoeker een site administrator is. Gedefinieerd als $variables[is_admin] = user_access(access administration pages);$is_front: TRUE als de frontpage van de site wordt bekeken. Gebruiken als alternatief voor page-front.tpl.php. De homepage is standaard /node (=promoted to frontpage teasers) of zoals ingesteld op admin/settings/site-information. Gedefinieerd als $variables[is_front] = drupal_is_front_page();$logged_in: TRUE als de bezoeker ingelogd is. Gedefinieerd als $variables[logged_in] = ($user->uid > 0);)$user: Het volledige user object met de data van de huidige bezoeker. Sommige data kan onveilig zijn, dus moet in check_plain verpakt worden (of t functie) vooraleer weergegeven.$base_path: Basis url van de Drupal installatie, meestal / Informatics Hans Rossel - www.koba.be
  • 123. Variabelen opvragenIn een template file<?phpprint_r(get_defined_vars());?>Via Devel module: excecute php blockdsm($node); Informatics Hans Rossel - www.koba.be
  • 124. Node en User ObjectNode object User object<?php print_r($node); ?> <?php print_r($user); ?><?php <?php var_export($node); ?> var_export($user); ?><?php <?php var_dump($user); ? var_dump($node); ?> >Veiligheid: Veiligheidcheck_url($front_page); check_url($user → ...);check_plain($node->body); check_plain($user → name);check_markup($node->body); Informatics Hans Rossel - www.koba.be
  • 125. Theme SecurityGevaren: xss, …Functies ter beveiliging Informatics Hans Rossel - www.koba.be
  • 126. Toegangsrechtenglobal $user;if (!user_access(toegang tot mijn code)){print "Geen toegang tot mijn code"; }if (in_array(hoofdredactie,$user->roles) || ($user->uid == 1)){print “Code die alleen mensen met rol hoofdredactie of user nr 1 zien”; }<!--<?php print_r($node); ?>--> Informatics Hans Rossel - www.koba.be
  • 127. User zaken<?phpglobal $user;$uid = $user->uid; if (!in_array("lid", $user->roles)){ print <a href="/word-lid">Word lid </a>;}if ($uid) { Print Welkom, je bent nu ingelogd als ; print $user->name; print <a href="/logout"> Uitloggen</a>; }?> Informatics Hans Rossel - www.koba.be
  • 128. Node object ladenVoor execute php in devel<?phpif (arg(0) == node && is_numeric(arg(1))) { $node = node_load(arg(1)); print_r($node);}?> Informatics Hans Rossel - www.koba.be
  • 129. Node controlerenfunction phptemplate_preprocess(&$variables, $hook) { global $theme; $variables[ifnode] = ( (arg(0) == node) && is_numeric(arg(1)) ) && (arg(2) != edit || arg(2) != delete);} Informatics Hans Rossel - www.koba.be
  • 130. $user_agent = $_SERVER[HTTP_USER_AGENT]; if($user_agent) { Browser controleren if (strpos($user_agent, MSIE)) { $body_classes[] = browser-ie; } else if (strpos($user_agent, MSIE 6.0)) { $body_classes[] = browser-ie6; } else if (strpos($user_agent, MSIE 7.0)) { $body_classes[] = browser-ie7; } else if (strpos($user_agent, MSIE 8.0)) { $body_classes[] = browser-ie8; } else if (strpos($user_agent, Firefox/2)) { $body_classes[] = browser-firefox2; } else if (strpos($user_agent, Firefox/3)) { $body_classes[] = browser-firefox3; }else if (strpos($user_agent, Safari)) { $body_classes[] = browser-safari; } else if (strpos($user_agent, Opera)) { $body_classes[] = browser-opera; } } $vars[body_classes] = implode( , $body_classes); // Concatenate with spaces} Informatics Hans Rossel - www.koba.be
  • 131. SubmittedStandaard:<?php if ($submitted): ?> <?php print $submitted; ?><?php endif; ?>Beter<?php if ($submitted): ?> <div class="submitted"> <?php print t(Door ) . theme(username, $node) . t( - Ingediend op ) . format_date($node->created, custom, "F jS, Y"); ?> </div><?php endif; ?> Informatics Hans Rossel - www.koba.be
  • 132. Preprocess functiesOpvolger van function phptemplate_preprocess_page(&$vars) { _phptemplate_variables() in Drupal $vars[tabs2] = menu_secondary_local_tasks(); 5Zie ook: Preprocess functions // Hook into color.module http://drupal.org/node/223430 http://api.drupal.org/api/function/template_preprocess/6 if (module_exists(color)) { _color_page_alter($vars); } } Informatics Hans Rossel - www.koba.be
  • 133. Taxonomy themingThe value of $terms is generated in the theme layer so itshttp://api.drupal.org/api/function/template_preprocess_node/6First, a $taxonomy variable is created with: $variables[taxonomy] =taxonomy_link(taxonomy terms, $node);The value of $terms is created with: $variables[terms] =theme(links, $variables[taxonomy], array(class => links inline));Check out the theme_links doc (http://api.drupal.org/api/function/theme_links/6). If you cant addyour CSS the way you want to using the $attributes parameter, youll need to create a custom function. Informatics Hans Rossel - www.koba.be
  • 134. ANDERE TEMPLATE BESTANDEN Informatics Hans Rossel - www.koba.be
  • 135. node.tpl.php: algemeen$title: de titel van de pagina$content: Node body of teaser afhankelijk van de $teaser vlag.$picture: foto van de auteur, zoals ingesteld in mijn account na toelating opadmin/user/settings, opgemaakt volgens theme_user_picture().$date: Themed datum van aanmaak (gebruik $created om te herformatteren metformat_date()).$links: Themed Links al "Lees meer", "Reactie toevoegen", ... opgemaakt volgenstheme_links().$name: Themed gebruikersnaam van auteur van theme_user().$node_url: directe url van de huidige node.$terms: Themed links van taxonomie termen opgemaakt volgens theme_links().$submitted: Themed indieninformatie opgemaakt volgens theme_node_submitted(). Informatics Hans Rossel - www.koba.be
  • 136. node.tpl.php: andere$node: Volledige node object, kan data bevatten die niet veilig is. Ziehttp://drupal.org/node/28984$type: Node type, i.e. story, page, blog, etc.$comment_count: Aantal comments bij deze node$uid: User ID van de auteur van de node.$created: Unix tijdsstamp van het tijdstip waarop de node was gepubliceerd.$zebra: Geeft "even" of "odd". Voor zebra striping in teaser listings.$id: Positie van de node, neemt toe met 1 telkens een node wordt weergegeven,vb om op de homepage lijst van promoted to frontpage content het eerste item$id=1 anders te themen. Informatics Hans Rossel - www.koba.be
  • 137. node.tpl.php: status$teaser: Vlag voor teaser status.$page: Vlag voor full node status.$promote: Vlag voor aangeraden op de voorpagina status$sticky: Vlag voor vastgeplakt bovenaan de lijst status$status: Vlag voor publicatie status$comment: Vlag voor comment setting van de node$readmore: Vlag geeft true als de volledige hoofdcontent van de paginais groter dan het ingekorte teaser gedeelte.$is_front: Vlag geeft true als in frontpage.$logged_in: Vlag geeft true als de huidige gebruiker is ingelogds$is_admin: Vlag geeft true als de huidige gebruiker een administrator is. Informatics Hans Rossel - www.koba.be
  • 138. Blocks in node.tpl.phpBlokken worden normaal geprint inpage.tpl.php.Soms liever printen in node.tpl.phpvb: Bij het weergeven van $content_bottomviews staan links fout Informatics Hans Rossel - www.koba.be
  • 139. Blocks in subthemesfunction phptemplate_preprocess(&$variables, $hook) { $variables[node_region] = theme(blocks, node_region);}Voor subthemes (oa Zen)function subtheme_preprocess_node(&$variables) { $variables[node_region] = theme(blocks, node_region);} Informatics Hans Rossel - www.koba.be
  • 140. Meerdere node.tpl.phpVolgens content typenode-blog.tpl.phpnode-forum.tpl.phpnode-page.tpl.phpnode-ccknieuwsbericht.tpl.php Informatics Hans Rossel - www.koba.be
  • 141. Block.tpl.phpOpsplitsen in meerdereModuleblok: block-modulename-delta.tpl.php >block-modulename.tpl.php > block-region.tpl.php >block.tpl.phpEigen blok: block-block-bloknummer.tpl.phpVoorbeeldblock-user-2.tpl.phpblock-user.tpl.phpblock-left.tpl.php Informatics Hans Rossel - www.koba.be
  • 142. Nieuwe tpl.php bestandenNaast comment en box sinds Drupal 6: in mapje vancore en andere modulesOverride = Kopiëren naar theme map + aanpassenVia Theme Developer (Devel) Informatics Hans Rossel - www.koba.be
  • 143. THEME FUNCTIES Informatics Hans Rossel - www.koba.be
  • 144. Theme overrides Informatics Hans Rossel - www.koba.be
  • 145. Intercept & overrideBasisprincipe: core niet hackenNiet akkoord met de html en css? Css: css door core gedefinieerd overriden in style.css of andere .css bestanden (via .info). http://www.drupalcoder.com/story/495- overriding-css-stylesheets-in-drupal-themesHtml:Template files: zie eerdertheme overrides: html die wordt gegenereerd door demodules theme_... functies Informatics Hans Rossel - www.koba.be
  • 146. Theme functies zoekenLijst: http://api.drupal.org/api/group/themeable/6Themable functies vinden theme_Zoeken api.drupal.org (core) ofhttp://api.freestylesystems.co.uk/api/6 (contibuted)of eigen via http://drupal.org/project/apiIn een .module file: zoeken naar theme_... Informatics Hans Rossel - www.koba.be
  • 147. Theme functies overridenOverriden in template.phpPhptemplate_...: voor alle themesMytheme_...: voor mytheme (veiliger) Informatics Hans Rossel - www.koba.be
  • 148. IMAGE CACHE THEMING Informatics Hans Rossel - www.koba.be
  • 149. On the fly creation: Image cache/PATH/TO/files/imagecache/YOUR_PRESET_NAME/YOUR_FILE_PATH<?phpprint <img src=” . check_url(/sites/default/files/imagecache/YOUR_PRESET_NAME/files/YOUR_FILE_PATH) . “>;?>Voorbeeldsites/default/files/imagecache/PaginaVasteBreedte/afbeeldingen/fotos/sized_Tajine_0.JPGhttp://www.example.com/sites/default/files/imagecache/width200/fotos/zonsondergang.jpg$output .= <img src="/; $output .= files/imagecache/bloggers70x70/; $output .= $user_info->picture; $output .= " />; Informatics Hans Rossel - www.koba.be
  • 150. Theming Image Cache<?php print_r($field_fotoveldnaam); ?>$foto = theme(imagecache,resize310208, $node->field_fotoveldnaam[0][filepath]);print $foto;ofprint <img src=” . $base_path . sites/default/files/imagecache/resize310208/files/fotomap/ . $node->field_fotoveldnaam[0][filename] . ” id=”gallery_big” alt=” . $title . ” title=” . $title . ” />”; Informatics Hans Rossel - www.koba.be
  • 151. LOGIN FORM THEMING Informatics Hans Rossel - www.koba.be
  • 152. Login form themingZie http://thefaultandfracture.blogspot.com/2009/04/theming-drupal-user-login-form.html Informatics Hans Rossel - www.koba.be
  • 153. Css wisselenfunction [themename]_preprocess_node(&$vars, $hook) { if ($vars[type] == adcoupon) { // Node type is adcoupondrupal_add_css(drupal_get_path(theme,[themename])./adcoupon.css,theme);}In this case the node type (adcoupon) is actually a cck type. I havethe specific css file in the theme directory. Informatics Hans Rossel - www.koba.be
  • 154. BASIS THEME FUNCTIES Informatics Hans Rossel - www.koba.be
  • 155. Theme developer Informatics Hans Rossel - www.koba.be
  • 156. Themeable functionshttp://api.drupal.org/api/group/themeable/6 Informatics Hans Rossel - www.koba.be
  • 157. L functie: een link makenhttp://api.drupal.org/api/function/l/6Vorm: l($text, $path, $options = array());Eenvoudig voorbeeldl(t(klik hier), “node/1”);Voorbeeld uit blog modulel(t(View recent blog entries), "blog/$user->uid", array(attributes => array(title => t("Read @usernames latest blog entries.", array(@username => $user- >name))))); Informatics Hans Rossel - www.koba.be
  • 158. theme_item_list: een lijsthttp://api.drupal.org/api/function/theme_item_list/6Vorm: theme_item_list($items = array(), $title = NULL, $type = ul,$attributes = NULL)Voorbeeld<?php$items = array(jan,piet,joris);print theme(item_list, $items, NULL, ul, array(class => mijn-lijst, id => de-lijst))?> Informatics Hans Rossel - www.koba.be
  • 159. theme_tablehttp://api.drupal.org/api/function/theme_table/6Vorm: theme_table($header, $rows, $attributes = array(),$caption = NULL)Voorbeelden: zie http://drupal.org/node/156863 Informatics Hans Rossel - www.koba.be
  • 160. theme_linkshttp://api.drupal.org/api/function/theme_links/6Vorm: theme_links($links, $attributes = array(class =>links))Voorbeeldtheme(links, $primary_links, array(class => links primary-links, id => primary)) Informatics Hans Rossel - www.koba.be
  • 161. HOMEPAGE Informatics Hans Rossel - www.koba.be
  • 162. Homepage theming(via wysiwyg)Standaard Drupal met blokken en extraregionsAls eigen content typeAls page-front.tpl.phpVia Panels Informatics Hans Rossel - www.koba.be
  • 163. PermissiesIf ($logged_in) {…}If (!$logged_in) {…}If ($is_admin) {…}If (in_array(redactie), array_values($user->roles)) {...} Informatics Hans Rossel - www.koba.be
  • 164. THEME SWITCHING (ADVANCED) Informatics Hans Rossel - www.koba.be
  • 165. <?php Wisselen van theme/** * Implementation of hook_menu (D5 code) */function SOMEMODULE_menu($may_cache) {if (!$may_cache) {if ($theme = $_GET[theme]) {$themes = list_themes();if (isset($themes[$theme])) {$GLOBALS[custom_theme] = $theme;}}}}?>With this you can amuse yourself by browsing to /node/1?theme=marvinI was thinking this could actually be useful- for example you could make an all xml theme and have Flash get data from path/to/page?theme=xml_theme Informatics Hans Rossel - www.koba.be
  • 166. Theme op basis van urlIn settings.php// if the url is an administration pageif (strpos($_GET[q], admin) === 0) { $conf[theme_default] = garland;}<?php$args = explode(/, $_GET[q]);if ($args[0] == admin) { $GLOBALS[custom_theme] = mytheme/admin;}?> Informatics Hans Rossel - www.koba.be
  • 167. Nog codeZie http://drupal.org/node/26357$parts = explode(., $_SERVER[HTTP_HOST]);if ($parts[0] == mobile) { $GLOBALS[custom_theme] = mobile;} Informatics Hans Rossel - www.koba.be
  • 168. Theme switching moduleshttp://drupal.org/project/switchthemehttp://drupal.org/project/role_theme_switcherhttp://drupal.org/node/86751 Informatics Hans Rossel - www.koba.be
  • 169. BACKUPS, ONDERHOUD & UPGRADES Informatics Hans Rossel - www.koba.be
  • 170. DatabasestructuurVia phpmyadminCacheNodesTermsUsers Informatics Hans Rossel - www.koba.be
  • 171. Nuttige actiesPaswoord en email wijzigen van user 1Een slechte module uitschakelenEen blok met foute php code uitschakelenCache tabellen leegmakenAccess log leegmakenOptimize tables Informatics Hans Rossel - www.koba.be
  • 172. BACKUP DATABASE Informatics Hans Rossel - www.koba.be
  • 173. BACKUP FILESVooral de map sites is van belang, met demap files in het bijzonderFtp 2000 files max Informatics Hans Rossel - www.koba.be
  • 174. Backup modules & infoHandbook: http://drupal.org/node/22281http://drupal.org/project/backup_migrateBeste en actiefste backup module op dit ogenblikScheduled backupExcluden van grote tabellen: search, cache, sessionshttp://www.ozerov.de/bigdump.php: grote databases Informatics Hans Rossel - www.koba.be
  • 175. Upgraden: puntupgradeStap 1: Backup sites & databaseStap 2: Inloggen als user 1 + Offline modeStap 3: Alle bestanden verwijderen, behalve sites.Stap 4: Nieuwe bestanden in de plaats zettenStap 5: Patches herinstallerenStap 6: update.php laten lopenStap 7: patches herinstallerenStap 8: controle installatie en logs Informatics Hans Rossel - www.koba.be
  • 176. Diff & Patchwww.drupal.org/patchCygwinLinux omgeving in Windowshttp://www.cygwin.comNut bij Drupal: diff, patch en cvsScreencast: http://www.lullabot.com/node/280/playPatchingScreencast:http://e4.video.blip.tv/1540000325302/Add1sun-RollingPatchesInDrupal517.mov Informatics Hans Rossel - www.koba.be
  • 177. Automatische updateshttp://groups.drupal.org/aegir-hosting-system Hosting systeem voor meerdere Drupal sites Bevat Drush en Dashboardhttp://drupal.org/project/plugin_manager Zit bij Drupal 7 in core Informatics Hans Rossel - www.koba.be
  • 178. Drush: Drupal Shellhttp://drupal.org/project/drush (ook voor windows) http://vimeo.com/5207683 Extra http://drupal.org/taxonomy/term/4654 http://www.archive.org/details/DrupalconSf2010Drush http://www.archive.org/details/DrupalconSf2010AdvancedDrush Informatics Hans Rossel - www.koba.be
  • 179. Drush commando voorbeeldenDrupal 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 cronDrupal updaten met drush drush bam backup 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 updb: run update.php drush variable-set site_offline FALSE Informatics Hans Rossel - www.koba.be
  • 180. Drush makeDrush make: bundelen van de automatisatiesInstalleren: drush dl drush_makeMakefile opstellen: Drush generate makefile /opt/lampp/htdocs/makefiles/example.make Drush convert makefile example.make example.makedrush make example.make example (maakt een drupal site op /example) Informatics Hans Rossel - www.koba.be
  • 181. Drush make structuurcore = 6.xprojects[] = drupalprojects[] = cckprojects[] = viewsUitgebreid voorbeeld: http://drupalcode.org/viewvc/drupal/contributions/profiles/openatrium/openatrium.make?revision=1 Informatics Hans Rossel - www.koba.be
  • 182. TAXONOMY Informatics Hans Rossel - www.koba.be
  • 183. TaxonomyIndelen in woordenschatten (taxonomies, trefwoordgroepen) Termen (trefwoorden)Beheren > TaxonomyExtra modules Taxonomy manager Taxonomy_csv: importeren van trefwoordlijsten http://drupal.org/project/modules? Informatics Hans Rossel - www.koba.be
  • 184. TaxonomyIndeling in categorieënHierarchieFree tagging of controlledUrls of views argumentsContent taxonomy moduleHierachical select module Informatics Hans Rossel - www.koba.be
  • 185. TaxonomyIndeling in categorieënHierarchieFree tagging of controlledUrls of views argumentsContent taxonomy moduleHierachical select module Informatics Hans Rossel - www.koba.be
  • 186. TaxonomyIndeling in categorieënHierarchieFree tagging of controlledUrls of views argumentsContent taxonomy moduleHierachical select module Informatics Hans Rossel - www.koba.be
  • 187. MEERTALIGE WEBSITES Informatics Hans Rossel - www.koba.be
  • 188. Multilingual DrupalVeraalbare delen i18n: internationalisation: content L10n: localisation: interfaceMultilingual settings Drupal core: basis functionaliteiten Drupal contrib: i18n module: vertalen van menus, blocks, taxonomy, …Handbook: http://drupal.org/node/324602 Informatics Hans Rossel - www.koba.be
  • 189. Vertalen core & moduleshttp://drupal.org/project/Translations http://drupal.org/project/nl http://drupal.org/project/fr Uitpakken in rootAanleggen modules Locale: interface translation Content translation: content translation Informatics Hans Rossel - www.koba.be
  • 190. Toevoegen talenBest bij eerste installatie Unpack language files in root: translation maps with .po files are created/admin/settings/language Toevoegen nieuwe taal Import translation: 1 or more .po files /admin/settings/language/configure: path prefix with language fallback /nl/admin/settings/language/edit/nl: edit language: choose prefix Informatics Hans Rossel - www.koba.be
  • 191. Interface vertalen/admin/build/translate/search: Zoeken naar vertaalbare strings in modules, themes, drupal core vertaalbaar=verpakt in t(test); functionhttp://drupal.org/project/l10n_client: makkelijker interface voor vlotte vertalingImport: /admin/build/translate/import Volledig of aparte po bestanden downloaden van drupal.org Informatics Hans Rossel - www.koba.be
  • 192. ModulesContributed http://drupal.org/project/l10n_client: makkelijker interface vertaling http://drupal.org/project/i18n: meer opties voor content vertalingTranslation server: http://localize.drupal.org Export: http://localize.drupal.org/translate/languages/nl/export?project=drupal All in one file: po file Je eigen translation server: http://drupal.org/project/l10n_server Informatics Hans Rossel - www.koba.be
  • 193. Evenementen Informatics Hans Rossel - www.koba.be
  • 194. Date viewswww.drupal.org/project/date: Datum veld toevoegen Inhoudstype afwerken voor evenementView Filter opties: Selecteer events > nowwww.drupal.org/project/calendar Display of calendar block Advanced views: argument op juiste datumveld zetten Informatics Hans Rossel - www.koba.be
  • 195. Fotogallerij met viewsInhoudstype Titel en 1 foto veld Comments aanView maken van alle fotoshttp://drupal.org/project/custom_pagers: volgende vorige links Informatics Hans Rossel - www.koba.be
  • 196. Featureswww.drupal.org/project/features Verpakken van settings als herbruikbare module Feature servershttp://www.lullabot.com/articles/photo-galleries-v Downloaden en in sites/all/modules Views Gallery Module activeren Nodige dependent modules activeren Informatics Hans Rossel - www.koba.be
  • 197. WEBFORM Informatics Hans Rossel - www.koba.be
  • 198. Webformwww.drupal.org/project/webform Uitgebreide contact, bestel, inschrijving, enquete formulieren Diverse elementen: multistep form, grid, email Export naar Excel en statistieken Geen views integratie (wel in dev of via extra module tijdelijk) Minder integratie dan cck Informatics Hans Rossel - www.koba.be
  • 199. MULTISITE INSTALLATION Informatics Hans Rossel - www.koba.be
  • 200. MultisiteSetup: Zelfde codebase (Drupal download) voor meerdere websites 1 aparte database (settings.php) per site (aanbevolen)Voordelen Onderhoud/updating van code is makkelijker (maar 1 codebasis updaten)Nadeel Alle sites moeten op dezelfde snelheid upgedated worden (je kunt uitzonderingen maken, maar verliest dan een beetje het voordeel van de multisite) => Werkt best met gelijkaardige sitesHandbook Commentaar in settings.php http://drupal.org/getting-started/6/install/multi-site Informatics Hans Rossel - www.koba.be
  • 201. Code structureVoor een fictieve site op http://www.example.be/mysite/test/, de settings.php wordt gezocht in de volgende mappen:sites/www.example.be.mysite.testsites/example.be.mysite.testsites/be.mysite.testsites/www.example.be.mysitesites/example.be.mysitesites/be.mysitesites/www.example.besites/example.besites/besites/default Informatics Hans Rossel - www.koba.be
  • 202. Code structuresites/all: /modules and /themes for all sitessites/default: settings.php hier is default voor alle sites, niet nodigsites/site1.be sites/site1.be/modules: enkele modules die alleen maar gebruikt worden op site 1 sites/site1.be/themes: een of meer themes alleen maar gebruikt op site 1 sites/site1.be/files: bestanden in te stellen bij admin/settings/ file-system (sites kunnen files sharen; goed nadenken over filestructure/permissions op voorhand als je wil sharen) sites/site1.be/settings.php: database details voor site1. Fresh copy of default.settings.php: ga naar elke site om de installer te lanceren en I settings.php in te stellen.- www.koba.be nformatics Hans Rossel
  • 203. Setup on serverCpanel Maak “parked domain” site1.be (check domain root = /public_html) Maak symlink van site1 naar root indien niet zo of bij addon domeinDedicated server Setup virtual hosts Maak symlink Informatics Hans Rossel - www.koba.be
  • 204. Create Virtual HostsBelangrijk elk domein moet naar zelfde set Drupal files richtenSetup dns entries for site1.be and site2.be/etc/apache2/sites-available/ or httpd.confListen 80<VirtualHost *:80> DocumentRoot /absolute/path/to/drupal ServerName site.be</VirtualHost><VirtualHost site1.be:80> DocumentRoot /absolute/path/to/drupal ServerName site1.be</VirtualHost><VirtualHost site2.be:80> DocumentRoot /absolute/path/to/drupal ServerName site2.be</VirtualHost> Informatics Hans Rossel - www.koba.be
  • 205. Symlink makenZie ook http://drupal.org/getting-started/6/install/multi-site<?php/*werkwijze:* 1. Maak via cpanel een addon of subdomain* 2. Delete dit subdomain* 3. Doe de symlink voor dit subdomain/addon vb hieronder voor abc.com waarvoor we /abc hebben gedeleted* De bedoeling is dat de subdomeinen verwijzen naar de root via een symlink*/symlink(".", "./abc");print "Done";?> Informatics Hans Rossel - www.koba.be
  • 206. Make symlink with shell access ls -s . abc Informatics Hans Rossel - www.koba.be
  • 207. OnderhoudAls alle sites dezelfde modules hebben, moet je slechts eenmaal update status aanzettenLaat update.php lopen op alle sites Informatics Hans Rossel - www.koba.be
  • 208. UBERCARTshopping cart voor Drupal Informatics Hans Rossel - www.koba.be
  • 209. UbercartProject: http://drupal.org/project/ubercartHoofdsite: www.ubercart.orghttp://www.ubercart.org/docshttp://www.ubercart.org/forumVertaling:http://l10n.privnet.biz/translate/languages/nl ofhttp://drupal.org/project/l10n_clientExtra pluginshttp://www.ubercart.org/contribvb http://www.ubercart.org/contrib/140 Informatics Hans Rossel - www.koba.be
  • 210. Ubercart core modulesCart (ubercart/uc_cart)De shopping cartOrder (ubercart/uc_order)Laat je toe bestellingen te ontvangenProduct (ubercart/uc_product)Laat je toe producten te maken voor je winkel. Imagecache en cckImagefield worden gebruikt om afbeeldingen van producten weer tegevenStore (ubercart/uc_store)Laat je toe de winkel te beheren. Informatics Hans Rossel - www.koba.be
  • 211. Andere Ubercart core modulesAttribute (ubercart/uc_attribute)Geef extra selectiemogelijkheden voor producten. Vb bij verkoop van T-shirts degrootte selecteren.Catalog (ubercart/uc_catalog)Geeft een blok en pagina met producten volgens categorieFile Downloads (ubercart/uc_file)Voor verkoop van bestanden (software, e-books, fotos)Notify (ubercart/uc_notify)Verstuur e-mail verwittigingen naar klanten bij checkout en als ze hun bestellingwijzigen. Informatics Hans Rossel - www.koba.be
  • 212. Andere core (vervolg)Payment (ubercart/payment/uc_payment)Payment API activeren om betalingen te kunnen ontvangen en opvolgen. Alle gerelateerdemodules zitten in de ubercart/payment map.Reports (ubercart/uc_reports)Bekijk rapporten van je verkopen, klanten en producten.Roles (ubercart/uc_roles)Ken permantente of tijdelijke rollen toe gebaseerd op aankopen.Shipping Quotes (ubercart/shipping/uc_quote)Geef transportkosten weer voor klanten bij het uitchecken. Alle gerelateerde modules zitten inde ubercart/shipping map.Shipping (ubercart/shipping/uc_shipping)Zet verzendingen op voor transportbedrijven met geintegreerde webservices.Taxes (ubercart/uc_taxes)Bereken tax op bestellingen Informatics Hans Rossel - www.koba.be
  • 213. Extra modulesGoogle Analytics for Ubercart (ubercart/uc_googleanalytics)Stuur e-commerce gegevens naar Google Analytics voor rapporten en opvolging.Importer (ubercart/uc_importer)Een interface om producten te importeren via XMLProduct Kit (ubercart/uc_product_kit)Maak producten die een verzameling zijn van andere producten. Create productsthat represent collections of other products. For example, if you sold TVs, youcould create a collection of CRT, LCD, and Plasma TV products. Informatics Hans Rossel - www.koba.be
  • 214. TOEGANGSCONTROLE Informatics Hans Rossel - www.koba.be
  • 215. Toegangscontrole modulesContent access of node privacy by roleTaxonomy accessContent field permissionsMasquerade (of devel) Informatics Hans Rossel - www.koba.be
  • 216. Organic groupsOnline werkgroepenMogelijkheid eigen kalender/forumOpen of geslotenMail integratieToegangsrechten Informatics Hans Rossel - www.koba.be
  • 217. IMPORT-EXPORT Informatics Hans Rossel - www.koba.be
  • 218. Import - ExportViews bulk operations + views bonus: csvmakenNode import en user import: csv importerenAdvanced moduleshttp://drupal.org/project/twhttp://drupal.org/project/migrate Informatics Hans Rossel - www.koba.be
  • 219. FEEDAPIhttp://drupal.org/project/feedapihttp://drupal.org/project/feedapi_commentsScreencastshttp://www.drupaltherapy.com/node/34http://www.developmentseed.org/sites/default/files/feed_element_mapper_1.swf Informatics Hans Rossel - www.koba.be
  • 220. FEEDAPI + youtubeNodigCckFeedapiFeedapiFeedapi nodeSimplepie parser (3rd party)Feedelement mapperFeedapi mapperFeedapi node viewsViewsViews bonusemfield Informatics Hans Rossel - www.koba.be
  • 221. SPAM Informatics Hans Rossel - www.koba.be
  • 222. SpamcontroleCore: ip blokkerenSpam moduleVoorbeeldweergaveCaptchasMollom of akismetCaptcha module, recaptcha Informatics Hans Rossel - www.koba.be
  • 223. PERFORMANCE Informatics Hans Rossel - www.koba.be
  • 224. Performancewww.drupal-check.orgAggregation van js en cssOngebruikte modules af + db tables wissenCachingGevorderdStatic views“light” modulesLijntje code ipv moduleServer side:MemcacheApache solrBoosthttp://drupal.org/project/advcacheFront side:Yslowhttp://wimleers.com/article/improving-drupals-page-loading-performance Informatics Hans Rossel - www.koba.be
  • 225. VIDEO Informatics Hans Rossel - www.koba.be
  • 226. VideoEmfieldFlash video & ffmpegKaltura, openvideoJquery mediaGewoon cck fieldhttp://drupal.org/project/video_uploadNieuw: via php stream wrapperhttp://drupal.org/project/mediahttp://www.lullabot.com/drupal-voices/drupal-voices-43-aaron-winborn-media-module Informatics Hans Rossel - www.koba.be
  • 227. ACQUIA Informatics Hans Rossel - www.koba.be
  • 228. Acquiahttp://acquia.com/products-serviceshttp://acquia.com/downloadshttp://acquia.com/products-services/acquia-drupal-modules Informatics Hans Rossel - www.koba.be
  • 229. HOOFDSTUKWegwijs op drupal.org & drupal.be Informatics Hans Rossel - www.koba.be
  • 230. Community / drupal.orgRedesign: http://www.disambiguity.com/category/planet-drupal/Drupal.orghttp://groups.drupal.org : themagroepenhttp://drupal.org/planet : aggregator Drupal blogsWww.drupalcon.org Informatics Hans Rossel - www.koba.be
  • 231. Drupal community supportOp drupal.orghttp://drupal.org/handbook: handboekenhttp://drupal.org/forum: forumhttp://drupal.org/project/issues: issuesOp drupal.behttp://www.drupal.be/forum: forum beginnerBinnenkort ook beginners handboek voor ontwikkelaars in NederlandsIRChttp://drupal.org/irc : Freenodehttps://addons.mozilla.org/en-US/firefox/addon/16: ChatzillaMailinglijstenhttp://drupal.org/mailing-lists: Mailman lijsten Informatics Hans Rossel - www.koba.be
  • 232. Community in Belgiewww.drupal.be:Redesign:wat is Drupal, referenties, showcases, handboek, forum, agenda,... (voorjaar2009)http://www.drupal.be/forum/19Community meetingsDrupal gebruikers groepdrupaljam.nlEen Drupal ontwikkelaar zoeken/kiezenDrupal referentiesdrupal.org username: http://drupal.org/profile/country/Belgium: gesorteerd op, meritocracy,lid sindsdrupal.be username:http://drupal.be/profile/profile_kennis/Expert+(gebruik+drupal+dagelijks): idem sortering, lid sindsDrupal.be: begin 2009: lijst service providers Informatics Hans Rossel - www.koba.be
  • 233. Audio & VideoAudiohttp://www.lullabot.com/audiocasthttp://www.volacci.com/seo-podcast: SEOVideohttp://drupal.org/handbook/customization/videocastshttp://drupal.org/videocasts: videohttp://www.drupaltherapy.com: multimedia receptenhttp://mustardseedmedia.com/podcast: Voor churches & ministrieshttp://www.drupaldojo.com/ Community opleidinghttp://www.archive.org/search.php?query=drupal%20OR%20drupalcon DrupalconsOp blip.tv: http://blip.tv/search?q=drupal&x=0&y=0http://drupalmao.com: gossiphttp://movielibrary.lynda.com/html/modPage.asp?ID=620: Tutorials reekswww.doitwithdrupal.com: van de conferentie dec 2008 (95$)http://lvb.net/item/7098: FOSDEM februari 2009 Informatics Hans Rossel - www.koba.be
  • 234. FREELANCERS Informatics Hans Rossel - www.koba.be
  • 235. JOBTRENDS Informatics Hans Rossel - www.koba.be
  • 236. FreelancersHoe kan je developers contacteren die tegen betaling customs modules maken en hoe zit het dan met de intellectuele eigendom, contaminatieprincipe van OpenSource.drupal.be: http://drupal.be/supportdrupal.org developers van modules + paid services forum(http://drupal.org/paid-services)groups.drupal.org: marketplacehttp://www.drupaljob.com/http://www.drupalancers.com/http://sourceforge.net/services/buy/service_providers.php?words=drupalhttp://drupalsn.com/companieswww.getafreelancer.comhttp://www.odesk.com Informatics Hans Rossel - www.koba.be
  • 237. ForumCore forumAdvanced forum module: Extra author pane: foto en extra informatie, integreert met veel andere social networking modules User points User titles Informatics Hans Rossel - www.koba.be
  • 238. NIEUWSBRIEVEN & e-mail integratie Informatics Hans Rossel - www.koba.be
  • 239. Mail interactieSimplenewsSubscriptions of Notify of WatcherActions & Workflow/Rules & Views BulkoperationsMessenger & Notifications frameworkWebformMailhandler Informatics Hans Rossel - www.koba.be
  • 240. Nieuwsbrieven3 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) Informatics Hans Rossel - www.koba.be
  • 241. Simplenewswww.drupal.org/project/simplenewsVoor 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 onderhoudenExtra modules: analytics, on register,...Let op: geen poormanscron gebruiken (dubbele verzending! + nietbetrouwbare tijdstippen) Informatics Hans Rossel - www.koba.be
  • 242. Nieuwsbrief theminghttp://www.campaignmonitor.com/css/http://drupal.org/node/268404 Informatics Hans Rossel - www.koba.be
  • 243. Contemplatehttp://drupal.org/project/contemplateIn database of sites/all/contemplatesVoordelen:Geldt voor alle themes (ander niveau dan themelayer)Voor search, rss feeds en nieuwsbrieven Informatics Hans Rossel - www.koba.be
  • 244. Body & footersimplenews-newsletter-body--1126.tpl.phpsimplenews-newsletter-footer--1126.tpl.phpVelden 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]; ?> Informatics Hans Rossel - www.koba.be
  • 245. JQUERY Informatics Hans Rossel - www.koba.be
  • 246. JqueryVoordelenUnobtrusiveKlein en lichtTrekt goed op css, eenvoudig te lerenBrowser compatibiliteitIn Drupal core, wederzijds verbonden met DrupalConcurrentenMooTools, Prototype/ScriptaculousLet op: conflicten en performance bij 2 frameworks Informatics Hans Rossel - www.koba.be
  • 247. Populairiteit jquery groeit B:http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx Bron:http://www.google.com/trends?q=jquery%2C+mootools%2C+yahoo+ui%2C+dojo+(toolkit%7Cjavascript%7Clibrary%7Cframework)%2C+prototype+(toolkit%7Cjavascript%7Clibrary%7C Informatics Hans Rossel - www.koba.be
  • 248. JqueryNadelenIn sommige tests & Browsers trager dan deconcurrentenIn snelle evolutie waardoor de met Drupal coregeleverde versie niet meer up-to-date is. Drupal 6.0to 6.2 hebben jQuery 1.2.3. Vanaf Drupal 6.3 wasdit jQuery 1.2.6 (laatste versie). Andere optie:http://drupal.org/project/jquery_update, maarEigenlijk een core hack (misc folder aanpassen)Versie en compatibiliteitsproblemen Informatics Hans Rossel - www.koba.be
  • 249. Jquery toevoegenhttp://www.learningjquery.com/2008/06/updated-jquery-bookmarkletscripts.js maken in theme map met$(document).ready( function() { $(‘p’).hide(‘slow’); });In template.phpdrupal_add_js(path_to_theme().‘scripts.js’, ‘theme’, ‘header’);of via .info file toevoegen aan theme mapJquery wordt automatisch geladen bij drupal_add_js Informatics Hans Rossel - www.koba.be
  • 250. Voorbeelden Informatics Hans Rossel - www.koba.be
  • 251. Core functionaliteithttp://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/02/jquery12_api_reference.png Informatics Hans Rossel - www.koba.be
  • 252. Meer jqueryhttp://docs.jquery.comhttp://api.drupal.org/api/function/drupal_add_js/6http://learningjquery.comhttp://ajaxian.com/archives/hacking-digg-with-firebug-and-jquery Informatics Hans Rossel - www.koba.be
  • 253. Jquery pluginshttp://plugins.jquery.com/Drupal Jquery pluging managerhttp://drupal.org/project/jquery_pluginhttp://drupal.org/project/jqphttp://drupal.org/project/jqDrupal 7 in core: http://drupal.org/node/315100 Informatics Hans Rossel - www.koba.be
  • 254. PRAKTIJK Informatics Hans Rossel - www.koba.be
  • 255. Bekijken installatiesWelk is de gebruikte methode om je homepagina eenandere layout te geven dan je onderliggende paginas?Meerdere websites hosten vanop één drupal installatie.Principe van dynamisch themen. Informatics Hans Rossel - www.koba.be
  • 256. Drupal 7: NieuwBetere installerPaswoord encryptie: betere bescherming van rainbow tablesIngebouwde automatische module en theme installer en updaterVerbeterde meertaligheidVerbeterde tijdzone supportPHP stream wrappersJavascript overlays (jquery ui in core) Informatics Hans Rossel - www.koba.be
  • 257. Drupal 7: Usability & UXWat? Gebruiksvriendelijkheid “Given two functionally equivalent content management systems, the simplest one should be selected.” (http://buytaert.net/ockhams-razor- principle-of-content-management-systems) Reactie op “van developers voor developers” imago & tests in 2008 van University Minnesota ( http://buytaert.net/first-results-from-usability-testing ) Mark Bolton: Redesign van drupal.org en UX Drupal 7. Informatics Hans Rossel - www.koba.be
  • 258. Drupal 7: Database laagWat? Drupal gebruikt nu de php pdo (php data objects) database abstractielaagVoordeel? Drupal zal niet enkel op MySQL/PostGreSQL kunnen draaien maar ook op MSSQL, Oracle, SQLite, … Microsoft (hoofdsponsor Drupalcon SF 2010) reageerde positief en sponsorde alvast de afwerking van de MSSQL pdo en de corresponderende Drupal module Master slave en transactionmsupport Infor atics Hans Rossel - www.koba.be
  • 259. Drupal 7: Unit testingWat? Automatische tests: http://drupal.org/node/363580#comment-2665246 18202 tests automatisch uitgevoerd http://qa.drupal.org/pifr/test/35713Voordeel Informatics Hans Rossel - www.koba.be
  • 260. Drupal 7: Semantic webWat? Het toevoegen van betekenis (semantiek) aan data door machines wordt gedaan door deze met ontologieën, beschrijvingen van concepten en de relaties daartussen, in metadata uit te breiden. Zo kunnen er automatisch relaties tussen concepten gelegd worden. Het W3C heeft hiervoor onder andere de RDF-standaard (Resource Description Framework) ontwikkeld. Automatisch toevoegen van RDFa data aan de html van Drupal: auteursinformatie, indiendatum, ...Voordeel? Met SPARQL & FOAF verbanden leggen tussen data Informatics Hans Rossel - www.koba.be
  • 261. Drupal 7: Fields in coreWat? CCK in core, was een van de basiscomponenten van uitgebreidere sitesVoordeel? Stabielere basis Conceptueel geabstraheerd: fields op content, taxonomie, users, elk object door module gedefinieerd (hoeft niet in mysql te zitten) Vb The Examiner: MongoDB dank zij Fields API Combinatie met Views3 query builder is zeer krachtig.s Informatics Hans Rossel - www.koba.be
  • 262. Drupal als Product Distributies & InstallatieprofielenProbleem:Een basisinstallatie van Drupal heeft geen full-option mogelijkheden (low-end kritiek).Drupal mag niet te zwaar zijn, enkel noodzakelijke in core, moet vooral bruikbaar zijn als framework (high-end kritiek).Oplossing: Distributies/Installatieprofielen aangepast aan doelgroep Informatics Hans Rossel - www.koba.be
  • 263. Drupal 7 Demo Informatics Hans Rossel - www.koba.be
  • 264. Wordt vervolgd... hans.rossel@koba.be Twitter: @haro www.koba.be Informatics Hans Rossel - www.koba.be