Presentation is loading. Please wait.

Presentation is loading. Please wait.

Drupal 7 as an enterprise web application framework Why as a developer you should use Drupal to build web applications? Klaus Harris DrupalCon Munich 2012.

Similar presentations


Presentation on theme: "Drupal 7 as an enterprise web application framework Why as a developer you should use Drupal to build web applications? Klaus Harris DrupalCon Munich 2012."— Presentation transcript:

1 Drupal 7 as an enterprise web application framework Why as a developer you should use Drupal to build web applications? Klaus Harris DrupalCon Munich 2012

2 Brief bio Who am I? What‘s my Drupal story?

3 Why this talk? 1. Address some preconceptions that developers have about Drupal 2. Why should I as a developer use Drupal 7

4 Part 1 Preconceptions

5 Developer preconceptions 1.Drupal is just a CMS 2.Drupal isn’t suitable for large enterprise sites 3.It’s old fashioned procedural code 4.I’ll have to learn some hideous plugin architecture 5.I’ll have to fit around the Drupal data model 6.What I can do is limited (it’s just a CMS) 7.Theming is difficult 8.Drupal is slow 9.I can write something like this but better

6 1. Drupal is just a CMS We see a lot of comparisons like this: Drupal vs Joomla vs WordPress Open Source CMS Comparison CMS Comparison: Drupal, Joomla and Wordpress by Ashleigh Davis on 27 March 2011 | 6 Comments CMS-Battle: TYPO3 vs Drupal fight over 20 rounds

7 But not this: Drupal vs Symfony Drupal vs Zend Framework

8 And according to Wikipedia a web framework has: Web template system Caching Security Database access, mapping and configuration Url mapping Ajax Web services http://en.wikipedia.org/wiki/Web_application_framework

9 So why is Drupal is only seen as a CMS? Drupal‘s origins Comparisons with Joomla, Wordpress and Typo3 No comparisons with PHP frameworks like Zend Installable software on some hosters Very node centric data structure in < Drupal 7 Admin interface (horror!) All those modules, it must be a CMS Ignorance

10 node Teaser Full Drupal 6 was less flexible There was only really one content data type built in, namely the node. Nodes could be sub- typed and had only basic view modes. type A page is a node for example. type

11 NodeNode revisions And that data lived in two tables

12 Drupal 7 changes all this! Entity API, make: your own data table(s) different view modes sub-types fields AND you get all the goodneess you know from node API

13 So now.. node TeaserFull Entity usercustom type Top 5 RSS comment and… type TeaserFull RSS

14 We aren‘t tied to the Drupal database We can can override the data operation methods. meaning…

15 node Entity custom type custom type Drupal DB Another DB Web service Our data can come from anywhere…

16 Add fields Control displayed fields depending on view mode Get the data into search and define which fields to index Use our own view modes Add custom sub-types Be data source agnostic Use all the hooks you are used to from nodes Entities are new in Drupal 7

17

18 BUT! You aren‘t tied to entities. If you want, just write your own CRUD code.

19 What else makes Drupal more web framework?

20 URL routing / menu Actions and triggers Queue mechanism Database API Caching Form API Theme system File API Roles and permissions and more.. Internationalistion Web services Testing framework Contrib gold such as.. Views Flag Rules Search API

21 We use actions and triggers extensively Great for decoupling

22 2. Drupal isn’t suitable for large enterprise sites Wrong! Look at big sites using it and explore case studies. Look at the architecture. http://www.examiner.com/ http://www.acquia.com/resources/case-study/examinercom http://www.govtech.com/policy-management/Why-Big-Sites-Run- Drupal.html?page=1http://www.govtech.com/policy-management/Why-Big-Sites-Run- Drupal.html?page=1 http://buytaert.net/tag/drupal-sites

23 3. It’s old fashioned procedural code „It‘s not all OOP“ True. Is that bad? * „It has global variables“ True, live with it. „There are so many arrays“ So what? It‘s PHP. * http://drupal.org/node/547518http://drupal.org/node/547518

24 4. I’ll have to learn some hideous plugin architecture You will find it: Well architected Simple Powerful Intuitive Wrong! Yes! You will need to learn about hooks, overrides and preprocessing but..

25 It is easy, you will like it For example, making a module:

26 Menu hook and page callback

27 Enable the new module.

28 Simple!

29 Let‘s make a block

30

31 Simple!

32 Form API is gold

33

34

35

36 As a developer you will write a LOT of form code You should use a Form API that you like.

37 5. I’ll have to fit around the Drupal data model Wrong! Think of Drupal as a web framework with some default data structures set up for you. Create data structures via Entities Just make DB tables and write your own CRUD code Get data from entirely different DBs Get data from web services Power to you!

38 6. What I can do is limited (it’s just a CMS) Wrong! Anything you can build with: Zend Framework Symfony and so on you can build with Drupal. With reduced development time!

39 This search uses Zend Framework Lucene libraries. Don‘t forget! You can use Zend Framework components in Drupal too!

40 7. Theming is difficult No it‘s not. Themer - http://drupal.org/project/devel_themerhttp://drupal.org/project/devel_themer Devel - http://drupal.org/project/develhttp://drupal.org/project/devel Examples - http://drupal.org/project/exampleshttp://drupal.org/project/examples Try simple starter theme Zen theme - http://drupal.org/project/zenhttp://drupal.org/project/zen Basic theme - http://drupal.org/project/basichttp://drupal.org/project/basic

41 Theming is easy

42

43 Renderable arrays, theming is even easier.

44 Devel Themer module

45 8. I can write something like this but better Really?

46 9. Drupal is slow Full page caching Partial page caching e.g. blocks Static caching with function calls More efficient Entity loading Javascript aggregation CSS aggregation Master / Slave database configurations Different caching backends e.g. memcache

47 Drupal performance greatly benefits from: An opcode cache like APC Memcache Check out the Drupal performance group: http://groups.drupal.org/high-performance and some performance related modules such as: http://drupal.org/project/memcache http://drupal.org/project/mongodb http://drupal.org/project/varnish

48 Worth looking here.. on any module page.

49 Part 2 Why should I as a developer use Drupal 7?

50 1.What is good about coding Drupal 7? 2.What should I be aware of? 3.What mindset change do I need? 4.Where do I go from here?

51 1. What is good about coding Drupal 7? It is amazing what you can build just with modules Rapid results Fully featured Code organisation Community and resources There‘s a module for that Really nice APIs Developer tools

52 2. What should I be aware of? Shock!! Zend Framework Drupal

53 Organising code Up to you

54 Configuration

55 And.. Works the same

56 Deployment can be easier and trickier Easier through hooks and install pofiles. Trickier with configuration in the DB. Explore Features module. Flush the theme registry after theme changes Flush the menu registry after menu changes

57 3. What mindset change do I need? You will combine modules AND custom code. Don‘t look for MVC, it‘s more PAC * Don‘t look for a Zend / Symfony file structure Understand OO principles in the API ** and see past the procedural code. Embrace the Drupal way * http://www.garfieldtech.com/blog/mvc-vs-pac http://www.dossier-andreas.net/software_architecture/pac.html http://www.garfieldtech.com/blog/mvc-vs-pac http://www.dossier-andreas.net/software_architecture/pac.html ** http://drupal.org/node/547518http://drupal.org/node/547518

58 4. Where do I go from here? Explore Drupal.org Buy a book Who uses Drupal? Experiment Install Drupal Try some cookbook site builds Experiment with programming devel, drush, schema, devel_themer modules Explore the examples module Write a module

59 Where could you use Drupal to get started? Personal site An intranet tool e.g. wiki / bug tracker / CRM New business project Part of a business presence Or a hybrid form The trick is to gain experience. I started with Drupal via a hybrid model..

60 Drupal An established B2C website News, help & FAQ Main DB Main DBs Drupal DB IntranetInternet Views Multi-lingual content for news, help and FAQs built in Drupal.

61 I liked Drupal so much we built on it for a startup

62 It was a good decision and is fun!

63 Thank you for listening Klaus Harris klaus@klausharris.de www.distribly.com

64 Appendix Some good books Drupal 6 Using Drupal - First edition 1, O'Reilly Press Pro Drupal 6 Development - Second Edition Apress Drupal 7 Drupal 7 Module Development - Packt Pro Drupal 7 Development, Apress The Definitive Guide to Drupal 7 - Apress

65 Some links http://drupal.org Developer modules http://drupal.org/project/admin_menu http://drupal.org/project/devel http://drupal.org/project/devel_themer http://drupal.org/project/schema http://drupal.org/project/drush http://drupal.org/project/examples

66 Recommended starter themes http://drupal.org/project/basic http://drupal.org/project/zen MVC vs PAC http://www.garfieldtech.com/blog/mvc-vs-pac http://www.dossier-andreas.net/software_architecture/pac.html Drupal and OOP http://drupal.org/node/547518


Download ppt "Drupal 7 as an enterprise web application framework Why as a developer you should use Drupal to build web applications? Klaus Harris DrupalCon Munich 2012."

Similar presentations


Ads by Google