<!DOCTYPE html> <html class="no-js" lang="en-GB"> <head> <title>Getting Started with Drupal 8 Module Development | Oliver Davies</title> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta property="og:url" content="https://opdavies.github.io/oliverdavies.uk/talks/getting-started-with-drupal-8-module-development"> <meta property="og:title" content="Getting Started with Drupal 8 Module Development"/> <meta property="og:image" content="https://opdavies.github.io/oliverdavies.uk/assets/images/talks/dclondon16.png"/> <meta property="og:image:type" content="image/png"/> <meta property="og:image:width" content="960"/> <meta property="og:image:height" content="540"/> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:image:src" content="https://opdavies.github.io/oliverdavies.uk/assets/images/talks/dclondon16.png"> <meta name="twitter:creator" content="@opdavies"/> <meta name="twitter:title" content="Getting Started with Drupal 8 Module Development"/> <meta name="twitter:text:description" content=""/> <meta name="twitter:site" content="@opdavies"/> <link rel="stylesheet" href="https://opdavies.github.io/oliverdavies.uk/assets/css/main.css"> <link rel="stylesheet" href="https://opdavies.github.io/oliverdavies.uk/assets/css/talk.css"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=57" sizes="57x57"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=114" sizes="114x114"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=72" sizes="72x72"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=144" sizes="144x144"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=60" sizes="60x60"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=120" sizes="120x120"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=76" sizes="76x76"> <link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=152" sizes="152x152"> <link rel="icon" href="/assets/images/me-precedent.jpg?s=160" sizes="160x160"> <link rel="icon" href="/assets/images/me-precedent.jpg?s=96" sizes="96x96"> <link rel="icon" href="/assets/images/me-precedent.jpg?s=32" sizes="32x32"> <link rel="icon" href="/assets/images/me-precedent.jpg?s=16" sizes="16x16"> </head> <body class="talk talk-full"> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="https://opdavies.github.io/oliverdavies.uk/">Oliver Davies</a> </div> <div id="navbar" class="collapse navbar-collapse" role="navigation"> <ul class="nav navbar-nav"> <li class=""> <a href="/">About</a> </li> <li class=""> <a href="/experience">Experience</a> </li> <li class=""> <a href="/testimonials">Testimonials</a> </li> <li class="active"> <a href="/talks">Talks</a> </li> <li class=""> <a href="/blog">Blog</a> </li> <li class=""> <a href="/contact">Contact</a> </li> </ul> </div> </div> </nav> <div class="container"> <div class="row"> <main class="col-md-9"> <h1>Getting Started with Drupal 8 Module Development</h1> <div class="talk-description"> <p>New to object-orientated PHP, Symfony or YAML, and want to get started building modules in Drupal 8? This is the session for you!</p> <p>In this session, we’ll cover:</p> <ul> <li>Where Drupal 8 modules are located, and how they are structured.</li> <li>How to build a simple module, including our own permissions and routes.</li> <li>How to add your own controller and service classes.</li> <li>What is the service/dependency injection container, and how do we use it?</li> <li>How we can use tools such as PhpStorm and Drupal Console to speed up the process.</li> </ul> <p>What we won’t be covering:</p> <ul> <li>Automated testing in PHPUnit or Simpletest.</li> <li>Adding third party libraries and external dependencies via Composer.</li> </ul> </div> <div class="talk-slides"> <h2>Slides</h2> <div class="presentation"> <script async class="speakerdeck-embed" data-id="0041804e52664d12a8e31cd118264813" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script> </div> </div> <div class="talk-video"> <h2>Video</h2> <div class="embed-container"> <iframe width="560" height="315" src="https://www.youtube.com/embed/qO_Wh5WE3VA" frameborder="0" allowfullscreen></iframe> </div> </div> <div class="talk-events"> <h2>Events</h2> <div class="table-responsive"> <table class="table table-striped talks-table"> <thead> <tr> <th style="width: 20%">Date</th> <th>Event</th> <th style="width: 10%">Feedback</th> </tr> </thead> <tbody> <tr> <td class="vertical-middle"> 5 March 2016 </td> <td class="vertical-middle"> DrupalCamp London 2016 <small class="display-block"> London, UK </small> </td> <td class="vertical-middle"> </td> </tr> </tbody> </table> </div> </div> </main> <div class="col-md-3"> <div class="panel badges text-center"> <a class="badge--da-member" href="https://assoc.drupal.org/membership" title="I’m a Drupal Association member."> <img src="https://opdavies.github.io/oliverdavies.uk/assets/images/da-individual-member.png" alt="Drupal Association Individual Member" width="152" > </a> <a href="http://drupalcores.com/#opdavies"> <img alt="I built Drupal 8 with hand holding a wrench on blue background" src="https://opdavies.github.io/oliverdavies.uk/assets/images/drupal-8.jpg" /> </a> <img src="https://opdavies.github.io/oliverdavies.uk/assets/images/badges/acquia-certified-developer-drupal-8.png" alt="Acquia Certified Developer - Drupal 8 Exam Badge" height="147" width="147" /> <a href="http://conference.phpnw.org.uk/phpnw17"> <img src="https://opdavies.github.io/oliverdavies.uk/assets/images/badges/phpnw17.png" alt=""> </a> </div> <div class="availability panel panel-default"> <div class="panel-heading">Availability</div> <div class="panel-body"> <p> <i class="fa fa-thumbs-o-up text-warning"></i> Currently have limited part-time capacity </p> <p> <i class="fa fa-thumbs-o-down text-danger"></i> Currently no spare full-time capacity. </p> </div> </div> </div> </div> </div> <footer class="container"> <p class="copyright"> © 2010-2017 Oliver Davies. Built with <a href="https://sculpin.io">Sculpin</a>. </p> <div class="meetups"> <h2>Things that I organise</h2> <ul> <li class="meetups--drupal-bristol"> <a href="http://www.drupalbristol.org.uk" title="Drupal Bristol"> <img src="https://opdavies.github.io/oliverdavies.uk/assets/images/meetups/drupal-bristol.jpeg" alt="Drupal Bristol logo" > </a> </li> <li class="meetups--drupalcamp-bristol"> <a href="http://www.drupalcampbristol.co.uk" title="DrupalCamp Bristol"> <img src="https://opdavies.github.io/oliverdavies.uk/assets/images/meetups/drupalcamp-bristol.png" alt="DrupalCamp Bristol logo" > </a> </li> <li class="meetups--phpsw"> <a href="http://phpsw.uk" title="PHPSW"> <img src="https://opdavies.github.io/oliverdavies.uk/assets/images/meetups/phpsw.jpeg" alt="PHPSW logo" > </a> </li> </ul> </div> </footer> <script src="https://opdavies.github.io/oliverdavies.uk/assets/js/site.js"></script> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11967257-1', 'auto'); ga('send', 'pageview');</script> </body> </html>