Is there a way to run a specific block of instructions in hook_node_load only when the node is loaded do be displayed and not when it's loaded in the edit form?

The only way I can imagine is analyzing the url and if the pattern is node/%/edit don't execute the code.

I know I can also use hook_node_view, but in this case I have to add render arrays instead of simple values


Yes, you'll need to examine the URL for this.

Loading a node is (correctly), completely de-coupled from displaying a node. node_load() doesn't know what you've loaded the node for; it doesn't care, its only responsibility is to prepare the node object.

So the context you're looking for doesn't conceptually exist when hook_node_load() is invoked, as that by definition has to happen before the object is passed to node_view(), and there's no way to signal your desired intent to node_load()

  • I can't use menu_get_object() because it seems to call node_load() somewhere and go recursively. But your answer is ok for me. Jul 8 '14 at 15:06
  • Oh yeah, dumb moment, sorry about that
    – Clive
    Jul 8 '14 at 15:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.