The default behaviour of Nodequeue is to append new nodes last in its queues. Recently for a client we needed to change this and it turned out to be easy, using Nodequeue’s rich API. Still, someone else might also have this need so I wanted to share the recipe.
/**
* Implementation of hook_nodequeue_add().
*
* Move all added entries to the top of their nodequeue.
*/
function mymodule_nodequeue_add($sqid, $nid) {
$subqueue = subqueue_load($sqid);
nodequeue_queue_front($subqueue, $subqueue->count);
}
This hook is invoked when a node is added to a nodequeue. Then we use the API function to move the last node to the front. You could optionally check the $sqid parameter if you want to limit this behaviour to a select few queues.