Overview

Xcomm3x2 min readPage 1 of 11
On this page 3

Xcomm3x is a comment system for MODX 3: nested replies, moderation, spam protection, voting and email notifications. On the site it runs on the Fetch API without jQuery or other libraries; the markup is made with MODX chunks (ready-made themes: built-in, Bootstrap 5, UIkit 3).

Key features

  • Nested comments — threaded replies with a configurable nesting depth
  • Three ready-made themes — built-in (xcomm3x-*), Bootstrap 5, UIKit 3; customisation through chunks
  • Guests and logged-in users — guests enter a name and email; logged-in users’ data comes from their MODX profile
  • Moderation — pre-moderation of new comments, manual approve/reject/spam in the manager
  • Email notifications — a queue sent by cron: to the manager, the page author and the author of the parent comment
  • Unsubscribing — users can unsubscribe from each notification channel separately
  • Stop words — filtering by words and phrases: moderation, rejection or spam
  • IP blocking — by address or CIDR mask; a silent mode (fake success)
  • CAPTCHA — an image with 6 digits; the user enters the first or the last 3 (the task is random on every load); modes: guests only, everyone, off
  • Rate limiting — a limit on the number of comments within a sliding time window
  • Voting — likes/dislikes; each user votes once
  • Editing and deleting — authors can change their comments within a set time window
  • Pagination — a “Load more” button with cursor navigation
  • Several blocks per page — via the block_key parameter

Requirements

  • MODX3 (Revolution 3.x)
  • PHP 8.2+
  • MySQL 5.7+ / MariaDB 10.3+

Manager page

Available from the MODX components menu (Extras → Xcomm3x). Tabs:

TabPurpose
Moderation queueComments with the “Pending” and “Spam” statuses. Approve, reject, mark as spam
All commentsThe full list; search, status filter; edit by double click
Stop wordsThe stop word list and reaction modes
IP blocksBlocked addresses and masks
Email queueThe email queue; filter by status and channel; resend on error
UnsubscribersUsers who unsubscribed from notifications
SettingsAll system settings of the component in one form
DocumentationBuilt-in help with snippet call examples