Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
PageListActionHook example module to hook into page list actions
* ProcessWire example demonstration module
* PageListActionHook autoload module once installed will remove "new" action from second level pages
* using the template "basic-page"
class PageListActionHook extends WireData implements Module, ConfigurableModule {
* getModuleInfo is a module required by all modules to tell ProcessWire about them
* @return array
public static function getModuleInfo() {
return array(
'title' => 'PageListActionHook',
'version' => 1,
'summary' => 'An example module on how to hook into Page List Actions.',
'href' => '',
'singular' => true,
'autoload' => true,
* Initialize the module
* ProcessWire calls this when the module is loaded. For 'autoload' modules, this will be called
* when ProcessWire's API is ready. As a result, this is a good place to attach hooks.
public function init() {
// important here is to hook into ProcessPageListRender and not ProcessPageList
$this->addHookAfter("ProcessPageListRender::getPageActions", $this, "hookPageActions");
public function hookPageActions($event) {
// get the argument named
$page = $event->arguments("page");
// only for pages that use the basic-page template
if($page->template == "basic-page") {
// only allow 2 levels of basic-page
// we count the parents of the current child
if($page->parents->count() > 1){
// catch the actions array returned by the hooked method
// ProcessPageListRender::getPageActions
$actions = $event->return;
// find new action to remove it from array
foreach($actions as $key => $action){
if($action['cn'] == 'New') {
// remove action from actions array
array_splice($actions, $key, 1);
// send back the modified $actions array back to the event object
$event->return = $actions;

This comment has been minimized.

Copy link

@alanfluff alanfluff commented Mar 11, 2014

FAB! Thanks for the code to learn from Soma, gonna try this ^_^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.