Modifying the Concrete CMS Startup Routine from a Package

Was this information useful?
Thank you for your feedback.

In addition to installing things like block types and themes, packages can inject custom code into the Concrete bootstrap routine. This can be very useful. For example, a statistics package might want to use the on_page_view event to track when pages are viewed and do something with that information. Hooking into the event is easy:

\Events::addListener(
    'on_page_view',
    function ($e) {
        $c = $e->getPageObject();
        // do something with the current page object
    });
);

To make this event listener code run during the Concrete bootstrap routine, simply create a method in the controller.php named "on_start()" and add it there:

public function on_start()
{
    \Events::addListener(
        'on_page_view',
        function ($e) {
            $c = $e->getPageObject();
           // do something with the current page object
        }
   );
}

Now, this code will run every time Concrete runs – but only if this particular package is installed.