SANDCamp 2013
         Beginning Drupal Development



           Meghan Sweet (@meghsweet)
          26 January 2013




Saturday, January 26, 2013
How do you learn
                                Drupal?


Saturday, January 26, 2013
Sometimes things are
                   really easy.


Saturday, January 26, 2013
Sometimes things are
                   really hard.


Saturday, January 26, 2013
Choosing Modules
       Stand on the Shoulders of Giants

        - Assess the project page

        - Read the README file (believe me)

        - Check the issue log

        - When in doubt, ask around




Saturday, January 26, 2013
http://drupal.org/project/views/
Saturday, January 26, 2013
Where does Contributed code live?
      Put all contrib modules in
        ../sites/all/modules/
      OR
      ../sites/all/modules/contrib


      Put all custom modules in
      ../sites/all/modules/custom


      Put all themes in
      ../sites/all/themes




Saturday, January 26, 2013
What do you need in your toolbox?
       HTML / CSS / Javascript / PHP

       A good code editor

       Firebug or Chrome Inspector

       Drush

       Drupal Community

       Willingness to break things




Saturday, January 26, 2013
Development Environment
       Work locally!! No more FTPing

       Use version control to push changes.

       Drush is your friend

       You won’t regret learning command line tools

       Be equipped to browser test




Saturday, January 26, 2013
Development Workflow
       Development Environment- Dev > Test > Live

       Where do your clients QA?

       Use Version control to push to production
       - great for rolling back changes
       - great for multi-developer environments

       Code vs Content, do smart migrations

       Set up a workflow to push to production




Saturday, January 26, 2013
The “Drupal Way”?



Saturday, January 26, 2013
Site Development Plan




                                  Typical Drupal Site



Saturday, January 26, 2013
A complex system that works is
      invariably found to have
      evolved from a simple system
      that worked...
       Gall's Law




Saturday, January 26, 2013
Build features zoomed
             in, then pull back and
                see how it all fits
                    together.

Saturday, January 26, 2013
Write a development plan
        Forces you to think through your architecture
        and implications of decisions

        Makes it a lot easier to build quickly- ex: grab
        all your modules at once, understand content
        and layout dependencies

        Build, then theme

        90% of the way there is often enough
        - Don’t be afraid to talk to your clients and get
        to the heart of business needs


Saturday, January 26, 2013
Structure Content
        Break up your content into the pieces you want
        control over.

        Important in mobile theming- content first

        Consider your admins and your visitors.

        Good content is user-centered
        Adopt the cognitive frameworks of your users
        -ERIN KISSANE




Saturday, January 26, 2013
Feature Development
         Its essentially three steps, rinse and repeat.

         1) Build a content type

         2) Build a view

         3) Build a layout

         (Theme)




Saturday, January 26, 2013
Slow Site?



Saturday, January 26, 2013
Common Client-side
        Performance Pitfalls
         Look for the obvious first:

         -Are you caching?

         -Are you aggregating your CSS?

         -Are the images huge?

         These are stupidly easy wins :)



Saturday, January 26, 2013
Theming!
                             Where everything can be overridden.
                               Oh the power and the danger...




Saturday, January 26, 2013
There is no "best"
                                  theme.
                                    -@rupl




Saturday, January 26, 2013
Where to start
        Develop a theming strategy and find
        a theme to match
        - ‘Starter’ themes
        - Base Themes
        - Responsive Theming
        - Click-to-Config




Saturday, January 26, 2013
Control your layout through
         configuration
           Panels, Panelizer, Panopoly

           Context

           Omega

           Display Suite




Saturday, January 26, 2013
Advancing Theming

           Its all about Overriding

           Configuration -> CSS -> PHP

           Keep it clean and organized

           Keep a custom module for small stuff




Saturday, January 26, 2013
You can give back to the
               community.



Saturday, January 26, 2013
Coding Standards
         -Don’t Hack Core! It may seems like a good idea now, but its
         not.

         - Comment heavily! You’ll thank yourself later.

         - Before you do something, consider if you can make it
         easier to understand. Writing code for yourself is a bad
         idea.

         - Use descriptive classes

         - http://drupal.org/coding-standards

         - http://drupal.org/project/coder will check for you

         - http://drupal.org/project/examples

Saturday, January 26, 2013
GIT Standards
         - Commit often, and do single-issue commits

         - Write good commit messages, use real english and
         reference outside information (ticket number, Drupal.org
         issues)

         - Remove things you don’t need with a proper commit, don’t
         just comment them out




Saturday, January 26, 2013
Pay it forward
        - Participate in the issue queue and documentation.

        - If you use a patch (regardless of whether it works or fails),
        comment on the issue.

        - If you write a patch, post it.

        - Write documentation and blog




Saturday, January 26, 2013
Learn More
            Books
                                 Camps and Cons
            Training
                                 IRC
            Documentation
                                 Spirit of willingness, giving
            Blogs                back and helping each other

            Videos

            Meetups


Saturday, January 26, 2013
Thank You!
                             @meghsweet


                              @chapter_three
Saturday, January 26, 2013

Sand camp beginner drupal development

  • 1.
    SANDCamp 2013 Beginning Drupal Development Meghan Sweet (@meghsweet) 26 January 2013 Saturday, January 26, 2013
  • 2.
    How do youlearn Drupal? Saturday, January 26, 2013
  • 3.
    Sometimes things are really easy. Saturday, January 26, 2013
  • 4.
    Sometimes things are really hard. Saturday, January 26, 2013
  • 5.
    Choosing Modules Stand on the Shoulders of Giants - Assess the project page - Read the README file (believe me) - Check the issue log - When in doubt, ask around Saturday, January 26, 2013
  • 6.
  • 7.
    Where does Contributedcode live? Put all contrib modules in ../sites/all/modules/ OR ../sites/all/modules/contrib Put all custom modules in ../sites/all/modules/custom Put all themes in ../sites/all/themes Saturday, January 26, 2013
  • 8.
    What do youneed in your toolbox? HTML / CSS / Javascript / PHP A good code editor Firebug or Chrome Inspector Drush Drupal Community Willingness to break things Saturday, January 26, 2013
  • 9.
    Development Environment Work locally!! No more FTPing Use version control to push changes. Drush is your friend You won’t regret learning command line tools Be equipped to browser test Saturday, January 26, 2013
  • 10.
    Development Workflow Development Environment- Dev > Test > Live Where do your clients QA? Use Version control to push to production - great for rolling back changes - great for multi-developer environments Code vs Content, do smart migrations Set up a workflow to push to production Saturday, January 26, 2013
  • 11.
  • 12.
    Site Development Plan Typical Drupal Site Saturday, January 26, 2013
  • 13.
    A complex systemthat works is invariably found to have evolved from a simple system that worked... Gall's Law Saturday, January 26, 2013
  • 14.
    Build features zoomed in, then pull back and see how it all fits together. Saturday, January 26, 2013
  • 15.
    Write a developmentplan Forces you to think through your architecture and implications of decisions Makes it a lot easier to build quickly- ex: grab all your modules at once, understand content and layout dependencies Build, then theme 90% of the way there is often enough - Don’t be afraid to talk to your clients and get to the heart of business needs Saturday, January 26, 2013
  • 16.
    Structure Content Break up your content into the pieces you want control over. Important in mobile theming- content first Consider your admins and your visitors. Good content is user-centered Adopt the cognitive frameworks of your users -ERIN KISSANE Saturday, January 26, 2013
  • 17.
    Feature Development Its essentially three steps, rinse and repeat. 1) Build a content type 2) Build a view 3) Build a layout (Theme) Saturday, January 26, 2013
  • 18.
  • 19.
    Common Client-side Performance Pitfalls Look for the obvious first: -Are you caching? -Are you aggregating your CSS? -Are the images huge? These are stupidly easy wins :) Saturday, January 26, 2013
  • 20.
    Theming! Where everything can be overridden. Oh the power and the danger... Saturday, January 26, 2013
  • 21.
    There is no"best" theme. -@rupl Saturday, January 26, 2013
  • 22.
    Where to start Develop a theming strategy and find a theme to match - ‘Starter’ themes - Base Themes - Responsive Theming - Click-to-Config Saturday, January 26, 2013
  • 23.
    Control your layoutthrough configuration Panels, Panelizer, Panopoly Context Omega Display Suite Saturday, January 26, 2013
  • 24.
    Advancing Theming Its all about Overriding Configuration -> CSS -> PHP Keep it clean and organized Keep a custom module for small stuff Saturday, January 26, 2013
  • 25.
    You can giveback to the community. Saturday, January 26, 2013
  • 26.
    Coding Standards -Don’t Hack Core! It may seems like a good idea now, but its not. - Comment heavily! You’ll thank yourself later. - Before you do something, consider if you can make it easier to understand. Writing code for yourself is a bad idea. - Use descriptive classes - http://drupal.org/coding-standards - http://drupal.org/project/coder will check for you - http://drupal.org/project/examples Saturday, January 26, 2013
  • 27.
    GIT Standards - Commit often, and do single-issue commits - Write good commit messages, use real english and reference outside information (ticket number, Drupal.org issues) - Remove things you don’t need with a proper commit, don’t just comment them out Saturday, January 26, 2013
  • 28.
    Pay it forward - Participate in the issue queue and documentation. - If you use a patch (regardless of whether it works or fails), comment on the issue. - If you write a patch, post it. - Write documentation and blog Saturday, January 26, 2013
  • 29.
    Learn More Books Camps and Cons Training IRC Documentation Spirit of willingness, giving Blogs back and helping each other Videos Meetups Saturday, January 26, 2013
  • 30.
    Thank You! @meghsweet @chapter_three Saturday, January 26, 2013