On 7/1/06, Augustin (a.k.a. Beginner) <drupal.beginner@wechange.org> wrote:
I see many implementations of hook_block who declare
   global $user
but none with
   global $node

I tried it but $node is still not set, so I cannot access the node object
directly.

That is because there is no global $node. There is a global $user viewing the page, but not every page has a $node that it needs to display (eg all kinds of "listing" pages or the admin pages etc). Blocks can appear on any page, not only node-pages. So hook_block() doesn't have direct access to a $node variable.

Note that the functions that need $node always have a $node parameter passed. There is no global $node that I'm aware of (with maybe the exception of theming, but that is then handled by phptemplate).

the solution would be to do like in book_hook() and check on arg():
    if (arg(0) == 'node' && is_numeric(arg(1)))
but it looks like a hack and for what I have in mind, it makes things more
complicated.

I think this is the correct way of doing this. And I don't really see how this makes things more complicated. The test checks if we are on a node-page, and if you are you can load the node needed. node.module makes sure the node is loaded only once, so there is no overload either.

Isn't there a possibility to have directly access to the $node object?
How?

Don't think so.

Kind regards,
Robrecht