Hello world

This tutorial shows you how to create a new plugin that consists of a new page with the text “Hello world” on it.

Before anything else, you need to install Elgg.

In this tutorial we will pretend your site’s URL is https://elgg.example.com.

First, create a directory that will contain the plugin’s files. It should be located under the mod/ directory which is located in your Elgg installation directory. So in this case, create mod/hello/.

Composer file

Elgg requires that your plugin has a composer file that contains information about the plugin. Therefore, in the directory you just created, create a file called composer.json and copy this code into it:

            "name": "elgg/hello",
            "type": "elgg-plugin",
            "description": "Hello World plugin",
            "license": "GPL-2.0-only",

Registering a route

The next step is to register a route which has the purpose of handling request that users make to the URL https://elgg.example.com/hello.

Update elgg-plugin.php to look like this:


return [
    'routes' => [
                'default:hello' => [
                        'path' => '/hello',
                        'resource' => 'hello',

This registration tells Elgg that it should call the resource view hello when a user navigates to https://elgg.example.com/hello.

View file

Create mod/hello/views/default/resources/hello.php with this content:


echo elgg_view_page('Hello', [
    'title' => 'Hello world!',
    'content' => 'My first page!',

The code creates an array of parameters to be given to the elgg_view_layout() function, including:

  • The title of the page

  • The contents of the page

  • Filter which is left empty because there’s currently nothing to filter

This creates the basic layout for the page. The layout is then run through elgg_view_page() which assembles and outputs the full page.

Last step

Finally, activate the plugin through your Elgg administrator page: https://elgg.example.com/admin/plugins (the new plugin appears at the bottom).

You can now go to the address https://elgg.example.com/hello/ and you should see your new page!