diff options
author | Jennifer Hodgdon <yahgrp@poplarware.com> | 2012-09-25 11:24:35 -0700 |
---|---|---|
committer | Jennifer Hodgdon <yahgrp@poplarware.com> | 2012-09-25 11:24:35 -0700 |
commit | 06271db913ae5a49ea2f14c61259134e52dfa294 (patch) | |
tree | 1d2dba629bf05fca998a8becfe1ec7aa3ffc03fa /modules/node/node.api.php | |
parent | b1536cf0318de9a542ce8a928fe8ac449572a7e6 (diff) | |
download | brdo-06271db913ae5a49ea2f14c61259134e52dfa294.tar.gz brdo-06271db913ae5a49ea2f14c61259134e52dfa294.tar.bz2 |
Issue #1186886 by Albert Volkman, Mile23: Fix up docs for hook_node_load
Diffstat (limited to 'modules/node/node.api.php')
-rw-r--r-- | modules/node/node.api.php | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/modules/node/node.api.php b/modules/node/node.api.php index 6d14a0737..87194576f 100644 --- a/modules/node/node.api.php +++ b/modules/node/node.api.php @@ -517,40 +517,43 @@ function hook_node_insert($node) { } /** - * Act on nodes being loaded from the database. + * Act on arbitrary nodes being loaded from the database. + * + * This hook should be used to add information that is not in the node or + * node revisions table, not to replace information that is in these tables + * (which could interfere with the entity cache). For performance reasons, + * information for all available nodes should be loaded in a single query where + * possible. * * This hook is invoked during node loading, which is handled by entity_load(), * via classes NodeController and DrupalDefaultEntityController. After the node * information is read from the database or the entity cache, hook_load() is - * invoked on the node's content type module, then field_attach_node_revision() + * invoked on the node's content type module, then field_attach_load_revision() * or field_attach_load() is called, then hook_entity_load() is invoked on all * implementing modules, and finally hook_node_load() is invoked on all * implementing modules. * - * This hook should only be used to add information that is not in the node or - * node revisions table, not to replace information that is in these tables - * (which could interfere with the entity cache). For performance reasons, - * information for all available nodes should be loaded in a single query where - * possible. - * - * The $types parameter allows for your module to have an early return (for - * efficiency) if your module only supports certain node types. However, if your - * module defines a content type, you can use hook_load() to respond to loading - * of just that content type. - * * @param $nodes * An array of the nodes being loaded, keyed by nid. * @param $types - * An array containing the types of the nodes. + * An array containing the node types present in $nodes. Allows for an early + * return for modules that only support certain node types. However, if your + * module defines a content type, you can use hook_load() to respond to + * loading of just that content type. * * For a detailed usage example, see nodeapi_example.module. * * @ingroup node_api_hooks */ function hook_node_load($nodes, $types) { - $result = db_query('SELECT nid, foo FROM {mytable} WHERE nid IN(:nids)', array(':nids' => array_keys($nodes))); - foreach ($result as $record) { - $nodes[$record->nid]->foo = $record->foo; + // Decide whether any of $types are relevant to our purposes. + if (count(array_intersect($types_we_want_to_process, $types))) { + // Gather our extra data for each of these nodes. + $result = db_query('SELECT nid, foo FROM {mytable} WHERE nid IN(:nids)', array(':nids' => array_keys($nodes))); + // Add our extra data to the node objects. + foreach ($result as $record) { + $nodes[$record->nid]->foo = $record->foo; + } } } |