2.2 KiB
Definitively slay the mythology that module-making is a mystic domain of Drupal druids.
https://api.drupal.org/api/drupal/core%21core.api.php/group/extending/
https://api.drupal.org/api/drupal/core!core.api.php/group/hooks/
Use Git: don't be afraid to change things.
Use a debugger.
Hooks work by naming convention.
To implement a hook, take the 'hook' part off the hook name and replace it with your module's (machine) name.
When to Contribute?
When your module fills a need larger than your precise use case.
Note: If you just want to build a module, finding a module idea that one or more people have been asking for is a good way to meet a need and avoid duplication.
See also http://groups.drupal.org/ contributed-module-ideas
Finding a Drupal Function that Does What You Need
- Identify a page that produces output like what you want to see.
- Look up the page callback function for that page's menu item.
- See what functions are used (or database queries made) in the page callback function.
grep -nHR --include=*.module 'admin/appearance' modules
Error messages mean progress!
Parse error: syntax error, unexpected ';', expecting ')'
You are having an effect on the world. Or at least your local site.
Getting help
The Internet.
It's good.
Tip: Looking up Hooks
We can look up hook definitions and their function signatures the same way we look up Drupal functions, at api.drupal.org:
api.drupal.org/hook_help
api.drupal.org drupalcontrib.org
Examples project
Tip: grep
grep -nHR module_implements_alter .
./includes/module.inc:646: if ($hook != 'module_implements_alter') {
./modules/system/system.api.php:1775:function hook_module_implements_alter(&$implementations, $hook) {
Tip: Clear Caches
If something you do has no effect...
drush cr
Coding Standards
drupal.org/coding-standards
Automated Nagging
drupal.org/project/coder
Automatic Adherence
drupal.org/project/grammar_parser (obsolete?)
The most important thing about this code is that i stole it.
I looked at how another module did it.
Implementing hooks is simply following patterns, it would be crazy not to copy.