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_keyparameter
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:
| Tab | Purpose |
|---|---|
| Moderation queue | Comments with the “Pending” and “Spam” statuses. Approve, reject, mark as spam |
| All comments | The full list; search, status filter; edit by double click |
| Stop words | The stop word list and reaction modes |
| IP blocks | Blocked addresses and masks |
| Email queue | The email queue; filter by status and channel; resend on error |
| Unsubscribers | Users who unsubscribed from notifications |
| Settings | All system settings of the component in one form |
| Documentation | Built-in help with snippet call examples |