Upgrade Your Drupal Skills
We trained 1,000+ Drupal Developers over the last decade.
See Advanced Courses NAH, I know Enoughdrupal hooks not firing for cck content types
a common path followed by advanced drupal developers using cck is the following
- create a content type using cck
- create a supporting custom module to handle advanced customizations. typically, the module is given the same name as the content type
in this custom module, developers then attempt to implement standard drupal hooks like hook_access
and hook_submit
. much confusion then arises as to why the drupal hook is not firing for the cck content type.
the reason is the following. hook_access
, hook_insert
, hook_submit
, hook_update
and hook_view
only fire for the module that owns the content type. for cck content types, the module that owns the content type is content
(e.g. cck) not your supporting custom module. therefore, drupal leaves your supporting custom module totally out of the loop!
so what's a developer supposed to do? for hook_insert
, hook_submit
, hook_update
and hook_view
use hook_nodeapi
instead. let's say your content type is called food, and your module is also called food. then, the hook_nodeapi
method might look something like
function food_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
switch ($op) {
case 'view':
if($node->type == 'food') {
food_view($node);
}
break;
case 'validate':
if($node->type == 'food') {
food_validate($node);
}
break;
}
}
in which food_view and food_validate are just normal methods that you also implement in your module.
unfortunately, hook_access
is an entirely different story, now addressed in a later chapter.
About Drupal Sun
Drupal Sun is an Evolving Web project. It allows you to:
- Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
- Facet based on tags, author, or feed
- Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
- View the entire article text inline, or in the context of the site where it was created
See the blog post at Evolving Web