Andy Balaam from Andy Balaam's Blog
In a previous post I described how to install Flarum locally on Ubuntu.
Here is how I set up my development environment on top of that setup so I was able to write a new Flarum extension and test it on my local machine.
Recap: I installed Apache and PHP and enabled mod_rewrite, installed MariaDB and made a database, installed Composer, and used Composer to install Flarum at /var/www/html/flarum.
More info: Flarum Contribution Guide, extension development guide, extension development quick start, workflow discussion.
I decided to call my extension “rabbitescape/flarum-ext-rabbitescape-leveleditor”, so that is the name you will see below.
Here’s what I did:
cd /var/www/html/flarum
Edit /var/www/html/flarum/composer.json (see the workbench explanation for examples of the full file).
At the end of the “require” section I added a line like this:
“rabbitescape/flarum-ext-rabbitescape-leveleditor”: “*@dev”
(Remembering to add a comma at the end of the previous line so it remained valid JSON.)
After the “require” section, I added this:
"repositories": [
{
"type": "path",
"url": "workbench/*/"
}
],
Next, I made the place where my extension would live:
mkdir workbench
cd workbench
mkdir flarum-ext-rabbitescape-leveleditor
cd flarum-ext-rabbitescape-leveleditor
Now I created a file inside flarum-ext-rabbitescape-leveleditor called composer.json like this:
{
"name": "rabbitescape/flarum-ext-rabbitescape-leveleditor",
"description": "Allow viewing and editing Rabbit Escape levels in posts",
"type": "flarum-extension",
"keywords": ["rabbitescape"],
"license": "MIT",
"authors": [
{
"name": "Andy Balaam",
"email": "andybalaam@artificialworlds.net"
}
],
"support": {
"issues": "https://github.com/andybalaam/flarum-ext-rabbitescape-leveleditor/issues",
"source": "https://github.com/andybalaam/flarum-ext-rabbitescape-leveleditor"
},
"require": {
"flarum/core": "^0.1.0-beta.5"
},
"extra": {
"flarum-extension": {
"title": "Rabbit Escape Level Editor"
}
}
}
In the same directory I created a file bootstrap.php like this:
<?php
return function () {
echo 'Hello, world!';
};
Then I told Composer to refresh the project like this:
cd ../.. # Back up to the main directory
composer update
Among the output I saw a line like this which convinced me it had worked:
- Installing rabbitescape/flarum-ext-rabbitescape-leveleditor (dev-master): Symlinking from workbench/flarum-ext-rabbitescape-leveleditor
Now I went to http://localhost/flarum, signed in as admin, adminpassword (as I set up in the previous post), clicked my username in the top right and chose Administration, then clicked Extensions on the left.
I saw my extension in the list, and turned it on by clicking the check box below it. This made the whole web site disappear, and instead just the text “Hello world!” appeared. This showed my extension was being loaded.
Finally, I edited bootstrap.php and commented out the line starting with “echo”. I refreshed the page in my browser and saw the Flarum site reappear.
Now, my extension is installed and ready to be developed! See flarum.org/docs/extend/start for how to get started making it do cool stuff.