fof/forum-widgets-core

Core Extension for Managing Forum Widgets

Maintainers

👁 imorland

Package info

github.com/FriendsOfFlarum/forum-widgets-core

Homepage

Forum

Language:TypeScript

Type:flarum-extension

pkg:composer/fof/forum-widgets-core

Fund package maintenance!

Website

Statistics

Installs: 3 440

Dependents: 11

Suggesters: 0

Stars: 1

Open Issues: 2

2.0.0-beta.3 2026-04-23 13:09 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

MIT 426000f0f269aab94b84630451ae3daac352bb1d

frameworkcorewidgetsflarum

This package is auto-updated.

Last update: 2026-06-23 13:34:13 UTC


README

👁 License
👁 Latest Stable Version
👁 Total Downloads

A Flarum extension. Core framework for managing forum widgets.

👁 animated screenshot

👁 forum screenshot

Note

This package was previously maintained as afrux/forum-widgets-core by @SychO9. It has been transferred to FriendsOfFlarum and is now published as fof/forum-widgets-core. The composer.json replace field ensures existing installs upgrade transparently — no manual removal needed.

Installation

Remember that this is just a forum widgets editor, it doesn't actually come with any widgets.

composer require fof/forum-widgets-core:"*"

Migrating from afrux/forum-widgets-core

If you currently have afrux/forum-widgets-core installed, run:

composer require fof/forum-widgets-core:"*"
composer remove afrux/forum-widgets-core
php flarum cache:clear

Updating

composer update fof/forum-widgets-core:"*"
php flarum migrate
php flarum cache:clear

Extend

Extension developers wanting to create widgets with this small framework, the following explains how you can register a new widget, for now you should only register one widget per extension.

  1. Require this extension in your extension's composer.json:
"require": {
 "flarum/core": "^2.0.0",
 "fof/forum-widgets-core": "^2.0.0"
}
  1. Create your widget's component in common/components by extending the base Widget component:
import Widget from 'ext:fof/forum-widgets-core/common/components/Widget';

export default class MyWidget extends Widget {
 className() {
 // Custom class name.
 // Use "FofWidgets-Widget--flat" for a flat widget (no container block).
 return 'MyWidget';
 }

 icon() {
 return 'fas fa-circle';
 }

 title() {
 return app.translator.trans('my-extension.forum.widget.title');
 }

 content() {
 return <div className="MyWidget-content">...</div>;
 }
}
  1. Register your widget in both frontends. Create common/registerWidget.js:
import Widgets from 'ext:fof/forum-widgets-core/common/extend/Widgets';
import MyWidget from './components/MyWidget';

export default function (app) {
 new Widgets()
 .add({
 key: 'myWidget',
 component: MyWidget,
 // Can be a callback: () => app.forum.attribute('mySetting')
 isDisabled: false,
 // Is this a one-time-use widget? Leave true if unsure.
 isUnique: true,
 // Default values, overridable by the admin.
 placement: 'end',
 position: 1,
 })
 .extend(app, 'my-extension-id');
}

Then in both admin/index.js and forum/index.js:

import registerWidget from '../common/registerWidget';

app.initializers.add('my-extension-id', () => {
 registerWidget(app);
});
  1. For TypeScript, add this to the paths key in your tsconfig.json:
"ext:fof/forum-widgets-core/*": ["../vendor/fof/forum-widgets-core/js/dist-typings/*"]

Links