PHPackages                             fof/blog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. fof/blog

ActiveFlarum-extension[Utility &amp; Helpers](/categories/utility)

fof/blog
========

Adds a blog section to your forum

1.0.1(1mo ago)52275—0%23[26 issues](https://github.com/FriendsOfFlarum/blog/issues)1MITPHPPHP ^8.2CI passing

Since Apr 30Pushed 1w ago6 watchersCompare

[ Source](https://github.com/FriendsOfFlarum/blog)[ Packagist](https://packagist.org/packages/fof/blog)[ Docs](https://friendsofflarum.org)[ Fund](https://opencollective.com/fof)[ RSS](/packages/fof-blog/feed)WikiDiscussions 2.x Synced 2w ago

READMEChangelog (10)Dependencies (15)Versions (5)Used By (1)

FoF Blog
========

[](#fof-blog)

[![MIT license](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](https://github.com/FriendsOfFlarum/blog/blob/2.x/LICENSE.md) [![Latest Stable Version](https://camo.githubusercontent.com/8733257cc54ca67fe51339677ba42218b3482c6e5d7e58006ba108b844e8a0f6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f666f662f626c6f672e737667)](https://packagist.org/packages/fof/blog) [![Total Downloads](https://camo.githubusercontent.com/a531fe6fe92f23a504663267fab38ffd90d545b010fc44077c1a57660db31ad8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f666f662f626c6f672e737667)](https://packagist.org/packages/fof/blog)

A [Flarum](https://flarum.org) extension that adds a blog section to your forum — a dedicated blog overview, article pages, and an article composer, built on top of your existing discussions and tags.

Documentation
-------------

[](#documentation)

Full documentation lives in the [`docs/`](https://github.com/FriendsOfFlarum/blog/blob/2.x/docs/README.md) folder:

- [Installation](https://github.com/FriendsOfFlarum/blog/blob/2.x/docs/installation.md)
- [Features &amp; configuration](https://github.com/FriendsOfFlarum/blog/blob/2.x/docs/features.md)
- [Permissions &amp; the review workflow](https://github.com/FriendsOfFlarum/blog/blob/2.x/docs/permissions.md)
- [Developer reference](https://github.com/FriendsOfFlarum/blog/blob/2.x/docs/developers.md)

Requirements
------------

[](#requirements)

- Flarum 2.0 or above (PHP requirements follow Flarum's)
- [`flarum/tags`](https://github.com/flarum/tags) — articles are tag-based
- [`flarum/lock`](https://github.com/flarum/lock) — powers per-article comment locking

> Looking for the Flarum 1.x compatible version? Use the [`1.x` branch](https://github.com/FriendsOfFlarum/blog/tree/1.x) / `fof/blog` `^1.0`.

Installation
------------

[](#installation)

```
composer require fof/blog:"*"
```

Updating
--------

[](#updating)

```
composer update fof/blog
php flarum migrate
php flarum cache:clear
```

Migrating from v17development/flarum-blog
-----------------------------------------

[](#migrating-from-v17developmentflarum-blog)

This extension was transferred to FriendsOfFlarum and was previously published as `v17development/flarum-blog`.

For forum admins, migration is a one-line change — swap the package, keep your settings and existing blog articles:

```
composer remove v17development/flarum-blog
composer require fof/blog
php flarum migrate
php flarum cache:clear
php flarum assets:publish
```

`fof/blog` declares `replace: { "v17development/flarum-blog": "*" }`, so anything that depended on the old package is satisfied by the new one, and the two can never be installed at once.

Third-party extension authors should update any references from the `V17Development\FlarumBlog` PHP namespace to `FoF\Blog`, and from the `v17development/blog` / `v17development-flarum-blog` frontend modules to `fof/blog`.

> **Note:** SEO integration now targets [`fof/seo`](https://github.com/FriendsOfFlarum/seo) (`FoF\Seo`). If you relied on SEO tags for your blog, ensure `fof/seo` is installed and enabled.

Upgrading from 1.x
------------------

[](#upgrading-from-1x)

Version 2.0 targets Flarum 2.0 and modernises the extension throughout. Notable changes for integrators and theme authors:

- **CSS classes** were consolidated onto the `FoFBlog-` prefix (previously a mix of `FlarumBlog-`, `Flarum-Blog-` and `V17Blog-`). Custom themes targeting the old classes need updating.
- **API**: the discussion *index* no longer includes `blogMeta`/`firstPost` by default — request `?include=blogMeta` explicitly. Single-discussion responses still include `blogMeta`. When creating an article via `POST /api/discussions`, the blog metadata travels as the write-only `newBlogMeta` attribute (previously `blogMeta`).
- **PHP**: several classes moved to conventional namespaces (e.g. the model is now `FoF\Blog\BlogMeta`). See the [developer reference](https://github.com/FriendsOfFlarum/blog/blob/2.x/docs/developers.md).
- **New domain events** (`ArticleApproved`, `ArticleFeatured`, `ArticleUnfeatured`, `BlogMetaUpdated`) and an optional [flarum/audit](https://github.com/flarum/audit) integration.
- Users with **approve posts** can now publish pending articles without also holding **write articles**.

Features
--------

[](#features)

- Adds a **Blog overview** page and **article detail** pages to your forum
- An article **composer** for writing blog posts
- Builds on the [`flarum/tags`](https://github.com/flarum/tags) extension — articles are tag-driven discussions
- Per-article **summary** and **featured image**
- **Highlighted** (featured) posts on the overview
- **Categories** sidebar, with optional category hierarchy
- Optionally disable or allow **comments** by default
- Optional **review workflow** — articles can require approval before publishing, with dedicated write/approve permissions
- Set the **blog overview as the forum home page**
- Works with already-existing discussions/articles
- Ghost (skeleton) loading states
- Configurable **default article image**, stored on the `flarum-assets` filesystem disk

Works with
----------

[](#works-with)

Compatible — but not required — alongside:

- [flarum/sticky](https://github.com/flarum/sticky) — sticky indicator on articles
- [flarum/audit](https://github.com/flarum/audit) — audit log entries for article creation, approval, (un)featuring and meta edits
- [fof/seo](https://github.com/FriendsOfFlarum/seo) — SEO meta &amp; structured data for blog pages
- [fof/upload](https://github.com/FriendsOfFlarum/upload) — pick a featured image from your uploaded files
- [fof/rich-text](https://github.com/FriendsOfFlarum/rich-text) — rich-text editing in the composer
- [fof/discussion-language](https://github.com/FriendsOfFlarum/discussion-language) — per-language blog overviews

Screenshots
-----------

[](#screenshots)

### Blog overview page

[](#blog-overview-page)

[![Blog overview](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-overview.gif)](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-overview.gif)

### Blog article

[](#blog-article)

[![Blog article](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-article.gif)](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-article.gif)

### Blog tools

[](#blog-tools)

[![Blog tools](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-tools.png)](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-tools.png)

### Blog settings

[](#blog-settings)

[![Blog settings](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-settings.png)](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/blog-settings.png)

### Admin settings

[](#admin-settings)

[![Admin settings](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/admin-settings.png)](https://raw.githubusercontent.com/FriendsOfFlarum/blog/2.x/docs/images/admin-settings.png)

Credits
-------

[](#credits)

This extension was originally created and maintained by [V17 Development](https://v17.dev) as `v17development/flarum-blog`. FriendsOfFlarum is grateful for their work and continues development with their blessing.

Sponsored by [Glowing Blue](https://glowingblue.com/).

Links
-----

[](#links)

- [Packagist](https://packagist.org/packages/fof/blog)
- [GitHub](https://github.com/FriendsOfFlarum/blog)
- [Issues](https://github.com/FriendsOfFlarum/blog/issues)
- [Support](https://discuss.flarum.org/d/39435)

License
-------

[](#license)

This extension is licensed under the MIT License. See the [LICENSE.md](https://github.com/FriendsOfFlarum/blog/blob/2.x/LICENSE.md) file for details.

###  Health Score

54

—

FairBetter than 97% of packages

Maintenance85

Actively maintained with recent releases

Popularity32

Limited adoption so far

Community26

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 53.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

3

Last Release

44d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16573496?v=4)[IanM](/maintainers/imorland)[@imorland](https://github.com/imorland)

---

Top Contributors

[![jaspervriends](https://avatars.githubusercontent.com/u/4417659?v=4)](https://github.com/jaspervriends "jaspervriends (103 commits)")[![flarum-bot](https://avatars.githubusercontent.com/u/39334649?v=4)](https://github.com/flarum-bot "flarum-bot (24 commits)")[![askvortsov1](https://avatars.githubusercontent.com/u/38059171?v=4)](https://github.com/askvortsov1 "askvortsov1 (19 commits)")[![imorland](https://avatars.githubusercontent.com/u/16573496?v=4)](https://github.com/imorland "imorland (19 commits)")[![davwheat](https://avatars.githubusercontent.com/u/7406822?v=4)](https://github.com/davwheat "davwheat (14 commits)")[![iPurpl3x](https://avatars.githubusercontent.com/u/18526076?v=4)](https://github.com/iPurpl3x "iPurpl3x (6 commits)")[![luceos](https://avatars.githubusercontent.com/u/504687?v=4)](https://github.com/luceos "luceos (3 commits)")[![DavideIadeluca](https://avatars.githubusercontent.com/u/146922689?v=4)](https://github.com/DavideIadeluca "DavideIadeluca (1 commits)")[![pboschma](https://avatars.githubusercontent.com/u/25609730?v=4)](https://github.com/pboschma "pboschma (1 commits)")[![datlechin](https://avatars.githubusercontent.com/u/56961917?v=4)](https://github.com/datlechin "datlechin (1 commits)")[![iamdarkle](https://avatars.githubusercontent.com/u/15818451?v=4)](https://github.com/iamdarkle "iamdarkle (1 commits)")[![Ralkage](https://avatars.githubusercontent.com/u/2059356?v=4)](https://github.com/Ralkage "Ralkage (1 commits)")

---

Tags

blogextiverseflarumflarum-blogflarum-forum

### Embed Badge

![Health badge](/badges/fof-blog/health.svg)

```
[![Health](https://phpackages.com/badges/fof-blog/health.svg)](https://phpackages.com/packages/fof-blog)
```

###  Alternatives

[v17development/flarum-blog

Adds a blog section to your forum

5288.0k6](/packages/v17development-flarum-blog)[fof/discussion-language

Specify the language a discussion is written in &amp; sort by language

1034.8k7](/packages/fof-discussion-language)[flarum-lang/russian

Russian language pack for Flarum.

12128.3k](/packages/flarum-lang-russian)[fof/byobu

Well integrated, advanced private discussions.

59120.6k15](/packages/fof-byobu)[michaelbelgium/mybb-to-flarum

Migrate a MyBB Forum to a fresh Flarum instance

261.1k](/packages/michaelbelgium-mybb-to-flarum)[fof/best-answer

Mark a post as the best answer in a discussion

25154.0k22](/packages/fof-best-answer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
