The ignore function works well here and people don’t post anonymously here so it is very effective.
To ignore any user
- go to their profile page
- select Controls > Ignore user.
Then when you go back to the discussion list and if they have posted recently all their posts will be gone from the list and you will see this:

All their posts will be gone from the discussion list. Just a message left showing you how to reshow them.
To reshow you go back to their profile page then to Controls then select Unignore.
The message will only show up for people whose posts are actually hidden in the discussion list you are viewing- it means it is missing entries by them which are hidden from you - if you ignored someone and they are no longer posting you won’t see a message about them any more.
I could have just hidden all the titles without a message but sometimes people want to hide someone’s messages temporarily and then reshow. If I hid their posts without a message in the code, you would have no way to find them again. So you need a way to find the ignored users to unignore them.
Please do ignore others if
- the things they say get you scared too, or
- you just need a break or
- to find it easier to find the things in the group that interest you.
or any other reason.
It’s the only way this forum can function.
We often get someone who comes to the forum who has got scared of so many things over a period building up often for months or years before they found us. And gradually find that most or all the things they are scared of are exaggerated or not true at all.
They may post many times a day to start with and often less and less as they realize they don’t need to be scared of all these things that scared them.
The ignore feature lets them do this without the additional worry that it might be scaring others. Anyone who finds their posts scary can just ignore them.
You don’t need to tell someone that you ignored them.
Also unlike the situation in Facebook, ignoring is one way.
It is NOT a block. You can’t force someone else to ignore you, but you CAN ignore them.
Which is what we want for our group, it’s ideal for our situation.
That is just the way it works here.
If you want to post something that others can’t see you need to use a private discussion and you can then share that with whoever you want to talk to.
It’s based on an extension written by someone else and I just added extra code to hide the titles on the discussion page for ignored users.
This is how I did it in code:
<script>
// Replace discussion titles, excerpts, tags, and hide list item from ignored users and add message at top of page on how to reshow
function replaceIgnoredUserTitles() {
try {
// Check if app and session are ready
if (typeof app === "undefined" || !app.session || !app.session.user) {
return;
}
// Get ignored users list
var ignoredData = app.session.user.data.relationships.ignoredUsers.data;
var ignoredIds = ignoredData ? ignoredData.map(function(u) { return u.id; }) : [];
if (ignoredIds.length === 0) return;
// Find all discussion list items
var items = document.querySelectorAll('.DiscussionListItem');
if (items.length === 0) return;
// Track ignored users with avatar, name, and link
var ignoredUserList = [];
items.forEach(function(item) {
// Skip if already processed
if (item.dataset.ignoredProcessed === 'true') return;
var titleLink = item.querySelector('.DiscussionListItem-main');
if (!titleLink) return;
var href = titleLink.getAttribute('href');
var match = href ? href.match(/\/d\/(\d+)/) : null;
if (!match) return;
var discussion = app.store.getById('discussions', match[1]);
if (!discussion || !discussion.data) return;
var authorData = discussion.data.relationships.user.data;
if (!authorData) return;
// Check if author is ignored
if (ignoredIds.indexOf(authorData.id) !== -1) {
// Gather avatar, username (alt), and profile link
var avatar = item.querySelector('.Avatar');
if (avatar) {
var alt = avatar.getAttribute('alt');
var src = avatar.getAttribute('src');
var userLink = avatar.closest('a'); // Usually the link wraps the avatar
var profileHref = userLink ? userLink.getAttribute('href') : null;
// Only add if alt and profile link exist
if (alt && profileHref) {
var alreadyAdded = ignoredUserList.some(u => u.id === authorData.id);
if (!alreadyAdded) {
ignoredUserList.push({
id: authorData.id,
alt: alt,
src: src,
profileHref: profileHref
});
}
}
}
// Replace title
var title = item.querySelector('.DiscussionListItem-title');
if (title) {
title.textContent = '(title from ignored user)';
}
// Replace synopsis/excerpt if desired
var excerpt = item.querySelector('.Synopsis-excerpt');
if (excerpt) {
excerpt.textContent = '(content from ignored user)';
}
// Remove all tags within the same <a> tag
var tags = titleLink.querySelectorAll('.TagLabel-name');
tags.forEach(function(tag) {
var tagLabel = tag.closest('.TagLabel');
if (tagLabel) {
tagLabel.remove();
}
});
// Hide the entire list item
item.style.display = 'none';
// Mark as processed to avoid re-processing
item.dataset.ignoredProcessed = 'true';
}
});
// Only proceed if there are ignored users with avatar and name
if (ignoredUserList.length > 0) {
var container = document.querySelector('.DiscussionList') || document.querySelector('.DiscussionListItems');
if (container) {
// Remove any existing message LI
var existingMessage = container.querySelector('.ignored-users-message');
if (existingMessage) {
container.removeChild(existingMessage);
}
// Create a new list item for the message
var messageItem = document.createElement('li');
messageItem.className = 'DiscussionListItem ignored-users-message';
messageItem.style.fontStyle = 'italic';
messageItem.style.color = '#666';
messageItem.style.marginBottom = '10px';
messageItem.style.paddingBottom = '10px';
messageItem.style.boxSizing = 'border-box';
// List users with avatars
var userList = ignoredUserList.map(function(user) {
return `
<a href="${user.profileHref}" class="user-link" style="margin-right:8px; display:inline-flex; align-items:center; text-decoration:none;">
<img src="${user.src}" alt="${user.alt}" class="Avatar" style="width: 16px; height: 16px; margin-right: 4px;" loading="lazy">
${user.alt}
</a>
`;
}).join(' ');
// Determine singular or plural for "user(s)"
var userCount = ignoredUserList.length;
var userText = userCount === 1 ? 'user' : 'users';
// Build the message
messageItem.innerHTML = `
<div class="DiscussionListItem-main">
<div class="DiscussionListItem-title">Hidden entries from ignored ${userText}: ${userList} Go to profile > Control > Unignore to show again.</div>
</div>
`;
// Insert the message at the top
container.insertBefore(messageItem, container.firstChild);
}
}
} catch(err) {
console.log('[IgnoredUserTitles] Error:', err);
}
}
// Run on initial page load
document.addEventListener('DOMContentLoaded', replaceIgnoredUserTitles);
// Set up MutationObserver for SPA navigation
var observerForIgnoredTitles = new MutationObserver(function() {
replaceIgnoredUserTitles();
});
document.addEventListener('DOMContentLoaded', function() {
var targetNode = document.querySelector('.App-content') || document.body;
if (targetNode) {
observerForIgnoredTitles.observe(targetNode, {
childList: true,
subtree: true
});
}
});
</script>
Added the code to Admin > Appearance > Custom header
FoF Ignore Users
It is based on this extension which just hides the content of their posts but leaves the titles.
That was no use for us as the title is often the scary part you want to hide.
So I added extra code to hide the titles too.
But the rest is handled in the extension details here:
https://discuss.flarum.org/d/20681