How-To #2 – Status Page and Publishing Shortcut in the BearBlog Dashboard
Although the plan to internalize the status system on the site had already been on paper, I only put it into practice after someone pointed out an interesting detail that I hadn’t even considered.
Status Café, the system I previously used to publish statuses, has no option to request account deletion, nor does it offer any kind of bulk delete for all statuses. Not that I particularly cared about that. My intention to internalize this feature was always about ensuring my statuses would be محفوظ and wouldn’t be lost, something that could happen if the platform’s creator simply decided to shut it down.
But since I found this odd, and also because I couldn’t track down any contact information for the admin or creator of the platform, I decided to implement the internalization of both the feature and the status page on my blog as soon as possible.
With that, I invite you to create and edit a Status page from scratch, separate from your regular posts, with a shortcut in the dashboard to speed up publishing.
Index
What is a Status page?
The idea is simple: a feed of short posts, with no elaborate title and no pressure to write a full article.
Think of it as a post on Twitter (R.I.P.), but hosted on your own blog.
On BearBlog, I achieved this using the tag system. Each post marked with a specific tag, in my case Status, automatically appears on your status page, with no extra configuration after implementation.
Note: although I call it "Status", some people also refer to this type of content as Microblog.
Part 1 — Creating the Status page
1.1 Create a new page
In your dashboard, go to Pages → New Page and create a new page, configuring the header however you prefer.
In my case, I used the following:
title: Status
link: status
is_page: true
lang: pt-BR
make_discoverable: false
In the body of the page, use BearBlog’s embedded post list shortcode to automatically display all posts with the defined tag, in my case Status:
{{ posts | tag:Status }}
Keep in mind this is just a simple configuration to display only posts with the Status tag. You can further customize it by following the post embedding rules available in the official documentation.
Publish the page. Your status feed will already be live.
1.2 Hiding statuses from the homepage
By default, status posts will appear mixed with your regular posts, especially if you use a recent posts block on your homepage.
To avoid this kind of clutter, replace the default shortcode with one that excludes the Status tag:
{{ posts | tag:-Status }}
This way:
Your homepage continues to display only regular posts
Statuses remain restricted to the
/statuspage
1.3 Creating status posts
Each status is just a regular post, but with the tag applied.
Example of the header I use:
title: ☕ #0
link: status0
published_date:
lang: pt-BR
tags: Status
make_discoverable: false
The numbering #0, #1, #2, etc., is just a convention I use to identify each status chronologically.
The emoji in the title is also a personal choice.
The body of the post is simply the status content. I chose to keep a plain text pattern.
Part 2 — Quick Status Plugin (dashboard shortcut)
Manually publishing a status following the correct template can be tedious, annoying, and impractical.
So I created a small plugin that adds a "New Status 💭" button directly to the dashboard. This button opens the new post form already filled with the correct template and even automatically calculates the next sequential status number.
Note: this plugin is configured to use the template I personally use. Feel free to edit the code and adapt it to your own pattern, including removing the sequential numbering if you prefer.
2.1 Configuring the plugin
In the dashboard, go to:
Customise → Dashboard footer content
Paste the code below, making sure to include the script tag:
/*
Plugin name: Quick Status
Description: Adds a button to the Dashboard to speed up Status posts.
Author: TechDemo aka. Felipe.
*/
(function () {
'use strict';
const isNewPost = window.location.pathname.includes('/dashboard/posts/new') ||
window.location.pathname.endsWith('/dashboard/new/');
const isPostList = window.location.pathname.includes('/dashboard/posts/') &&
!window.location.pathname.includes('/new') &&
!window.location.pathname.match(/\/posts\/\d+\//);
// ===== BUTTON ON POST LIST =====
if (isPostList) {
document.addEventListener('DOMContentLoaded', function () {
const nav = document.querySelector('header nav') || document.querySelector('nav');
if (!nav) return;
const btn = document.createElement('a');
btn.href = window.location.pathname + 'new/?quick_status=1';
btn.textContent = 'New Status 💭';
btn.style.cssText = `
display: inline-block;
margin-left: 12px;
padding: 4px 10px;
background: #3273dc;
color: #fff;
border-radius: 4px;
font-size: 0.85em;
text-decoration: none;
`;
btn.addEventListener('mouseover', () => btn.style.opacity = '0.85');
btn.addEventListener('mouseout', () => btn.style.opacity = '1');
nav.appendChild(btn);
});
return;
}
// ===== TEMPLATE ON NEW POST PAGE =====
if (!isNewPost) return;
const params = new URLSearchParams(window.location.search);
if (!params.has('quick_status')) return;
document.addEventListener('DOMContentLoaded', function () {
const headerContent = document.getElementById('header_content');
const bodyContent = document.getElementById('body_content');
if (!headerContent || !bodyContent) return;
fetch(window.location.pathname.replace('/posts/new/', '/posts/'))
.then(res => res.text())
.then(html => {
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const posts = Array.from(doc.querySelectorAll('ul.post-list li a, ul li a'));
const statusNumbers = posts
.map(a => a.textContent.match(/#(\d+)/))
.filter(Boolean)
.map(m => parseInt(m[1]));
const nextNumber = statusNumbers.length > 0
? Math.max(...statusNumbers) + 1
: 0;
fillTemplate(nextNumber);
})
.catch(() => fillTemplate('?'));
function fillTemplate(number) {
headerContent.innerText =
`title: ☕ #${number}\n` +
`link: status${number}\n` +
`published_date: \n` +
`lang: pt-BR\n` +
`tags: Status\n` +
`make_discoverable: false\n`;
bodyContent.value = '';
}
});
})();
Attention: replace "/dashboard/posts/" with your own dashboard path if it is different.
2.2 How to use it
Go to Dashboard → Posts
The "New Status 💭" button will appear in the dashboard navigation
Click it and the form will open already filled with:
title with emoji and automatic sequential number
link in the format
statusNStatustagmake_discoverable: falseempty text field for writing the status
Write your status and publish it
2.3 Direct shortcut
For even more convenience, bookmark the "New Status 💭" page in your browser.
Summary
With this process, you:
create a dedicated status/microblog page
keep statuses separate from regular posts
avoid cluttering your homepage
add a direct dashboard shortcut
automate the template and status numbering
The result is a simple status or microblog system hosted on your own site, without relying on external platforms.
I hope this quick tutorial gives you a clear direction if you want to build your own status or microblog page. Explore the code, make your own adjustments, and if you create an improved version, let me know!
See you next time ( ̄︶ ̄)↗