Ready to watch this entire course?
Become a member and get unlimited access to the entire skills library of over 4,900 courses, including more Developer and personalized recommendations.Start Your Free Trial Now
- View Offline
- Creating your first module
- Interacting with hooks
- Working with permissions and roles
- Controlling access
- Adding a menu item to an admin interface
- Using the Form API (FAPI) to quickly create a form
- Creating custom form validation
- Manually creating a custom content type
- Validating user input
- Importing content using feeds
- Creating a block
- Understanding best practices and coding standards
Skill Level Advanced
When developing modules, regardless of the audience, there are number of standard best practices that one should be aware of. First, I recommend using some sort of source revision control software. That way, code changes can be tracked over time, improving collaboration and accountability, providing a mechanism for versioning and facilitating backups. No matter how large or small the project is or how many people are participating, source control is a valuable tool. I personally use git which is a distributed revision control and source code management system used by Drupal, Linux core and many other projects. Drupal.org offers free sandbox git repositories for open source projects for developers looking to experiment.
For more information on git I recommend Git Essential Training with Kevin Skoglund here in the lynda.com online training library. Another extremely popular system is Apache Subversion. There are many other open source and commercial options available beyond git in subversion if you're seeking a particular feature set. Throughout this course, I've made reference to the Drupal Coding Standards several times. Coding Standards which are a series of rules and guidelines used to style the source code exist to enforce a unified structure to the code base.
The Drupal Coding Standards have evolved over years of community discussion and consensus in addition to practical real-world application. The standards applied to indentation, naming conventions, comments, control structures and much more. By writing standardized code, the overhead from interpreting different developer's styles is reduced. Even if the audience is limited to one or two people, using these coding standards makes code easier to maintain and understand. I highly recommend learning and reading the Drupal Coding Standards.
There's a lot of coding standards and especially in large projects it's easy to make mistakes or forget a rule or two. Fortunately there are automating testing suites available that facilitate an algorithmic approach to coding standard enforcement. The Coder project includes a module for assisting with code review using regular expressions to scan source code for things that don't adhere to the Drupal Coding Standards or deprecated functionality that should be updated. The Code Review Module has a user interface that can be used to scan a module or all modules for problems and provides a selectively robust report about what is wrong and what to do to fix it.
Once the Coder project is installed, the Code Review Module can be enabled by going to modules then checking Enabled next to Coder Review. Continue with enabling the dependency. Now the module list has a new option after each description. A link to Code Review which would display a default report. Additionally, I can go to configuration and there will be a new element under DEVELOPMENT named Coder.
This brings me to a Selection Form where I can select specific modules or themes to be reviewed. If you get stuck with an implementation, visit drupal.org/support for a number of options including community documentation, Internet relay chat, forms for discussion and many other resources. I personally make have a use of the Drupal API documentation at api.drupal.org. Often solutions can be found either in the official documentation or in a comment discussion beneath a particular function, class or a method.
If searching the documentation and the Internet doesn't turn up a solution, then I start asking questions. It's always good to research before asking instead of the other way around. An additional form of documentation can be found in the examples project which includes dozens of tiny modules. Each of the example modules implements a particular Drupal functionality with comprehensive in-line documentation and explanation and can be enabled to demonstrate how it works. Finally, to reiterate NEVER HACK CORE. 99% of the time whatever needs to be accomplished can be done so in a cleaner way with hooks or other APIs.