Everything you need to set up JR Comments. This guide covers installing, choosing where comments appear, posting, moderation and spam control, email notifications, importing from CComment or JComments, privacy, and troubleshooting. Features marked Pro are in the Pro edition.
On this page
- 1. Install
- 2. Where comments appear
- 3. Posting
- 4. Moderation
- 5. Email notifications
- 6. Import from CComment or JComments
- 7. Privacy: what is stored and for how long
- 8. Options overview
- 9. Look and feel
- 10. Pro features
- 11. Known limitations
- 12. Troubleshooting
JR Comments adds native, privacy-first comments to Joomla 5 and 6 articles. It imports your old CComment or JComments comments, fights spam without external services, and keeps your data in your own database.
- JR Comments Lite — free, from the Joomla Extensions Directory.
- JR Comments Pro — adds voting, light formatting, pinned comments, user reports and a latest-comments module (see Pro features).
Requirements: Joomla 5.2+ or 6.x, PHP 8.1+ (Joomla 6 needs PHP 8.3+), MySQL 8.0+ or MariaDB 10.4+.
1. Install
- System → Install → Extensions, upload
pkg_jrcomments_lite_v<version>.zip(or the Pro zip). - The installer enables the five plugins, sets safe permissions, registers three Mail Templates, creates a daily JR Comments housekeeping scheduled task, and shows a link to the dashboard.
- Open Components → JR Comments. Comments now appear under your articles.
The package contains:
| Extension | What it does |
|---|---|
| JR Comments (component) | Data, admin screens (dashboard, comments, bans, import, options), the comment form and threads |
| Content - JR Comments | Shows the thread under articles, the "N comments" link in blog views, the per-article Comments option |
| System - JR Comments | Fills all comment counts of a blog page with one query; pending badge in the admin menu |
| Privacy - JR Comments | Joins Joomla's privacy requests (export / removal) |
| Task - JR Comments | Housekeeping routine for the Task Scheduler |
| Action Log - JR Comments | Writes moderation actions to Users → User Actions Log |
| Latest Comments module (Pro) | Latest comments, most discussed articles, top commenters |
Upgrading Lite → Pro
Install the Pro package over Lite. All comments, settings and permissions stay; the Pro-only parts are added and enabled.
Downgrading Pro → Lite
Install the Lite package over Pro. Your data stays (votes and reports are kept in their tables); the Pro code is removed, the Latest Comments module is uninstalled, and Pro features stop.
Uninstall
Uninstalling the package deletes all comments, bans and settings (the tables are dropped), removes the Mail Templates, the scheduled task and the Action Log registration. Export what you need first.
2. Where comments appear
Set in System → Plugins → Content - JR Comments:
- Comments on articles — global switch.
- Categories — all categories, only the listed ones, or all except the listed ones; optionally including their child categories.
- Close threads after (days) — older articles become read-only (existing comments stay visible). 0 = never.
- Comment count in blog views — the "N comments" link under each article in category blog and featured views.
Each article has its own Comments option (Options tab of the article editor): Use global, Enabled (shows comments even in an excluded category or when the global switch is off), Disabled, Closed (read-only).
3. Posting
- Guests and registered users can post when they have the Post comments permission (default: Public).
- Guests give a name and an email (never shown), optionally a website (off by default — it attracts spam). A guest cannot use the email, display name or username of a registered user (they are asked to log in).
- Registered users post under their account name.
- The form works without JavaScript (normal submit and redirect). With JavaScript it posts in the background, shows the result in a live region and inserts the new comment without reloading.
- Optional: a privacy-consent checkbox (choose the privacy article in Options → Posting), and any installed captcha plugin (Options → Posting → Captcha, default: the site's captcha). With the core Proof of Work captcha and System - Page Cache both on, add
com_ajaxas a line in the plugin's Exclude URLs field and clear the cache. Otherwise the cache stores the captcha challenge and guests' posts are refused (see Known limitations). - Comments are plain text. Line breaks are kept and
http(s)://links becomenofollow ugclinks; no HTML. (Pro: light formatting, see below.)
Threads
Replies nest up to the maximum reply depth (default 3); a reply to a comment at the maximum depth is attached next to it. Pages show 20 top-level comments with their replies, with a Load more link. Comments show an initials avatar (or Gravatar / a user-profile field, if you enable those), the author and moderator badges, the relative and exact date, a permalink and an edited marker.
Editing your own comment
Registered authors can edit or delete their comment for 15 minutes (Options → Posting → Edit window). Deleting a comment that has replies replaces its text with "[deleted]" so the replies stay readable.
4. Moderation
- Who is published at once: groups with Publish without moderation (default: Manager, Administrator, Super Users) and registered users with at least N approved comments (Options → Moderation, default 1). Everyone else — including all guests — waits for a moderator. The spam score can still send a comment to moderation or to spam.
- Comments screen: filter by status, article, content type, author, dates (Pro: reports), search in text, name, email or IP (or
id:123), sort, and apply Approve / Unpublish / Spam / Trash / Delete / Ban author to many comments at once. The edit screen shows the spam score and its reasons, the IP and browser, an internal note, and a box to reply as moderator. - On the site, moderators see pending comments in the thread with Approve / Spam / Trash buttons.
- Bans screen: ban an email, a whole email domain, an IP address or a user, optionally until a date. Banned people get a neutral "could not be posted" message and nothing is stored. IP addresses are stored as a keyed hash, not as the address.
- The admin menu shows a badge with the number of pending comments; the dashboard shows the counts and the latest comments, pending ones included.
- Every moderation action is written to Users → User Actions Log.
Anti-spam
Each comment gets a local spam score (no external service): hidden honeypot field (a hit is rejected and nothing is stored), sent too fast after the page loaded, too many comments per IP/email in 5 minutes or a day, too many links, banned words, the same text posted again within 24 hours, mostly links or symbols, and IPs/emails you marked as spam before. Score ≥ 10 → spam, ≥ 5 → moderation (Options → Anti-spam). Moderators see the score and the reasons.
5. Email notifications
All wording is editable in System → Mail Templates (JR Comments).
| Sent to | When | |
|---|---|---|
| Comment waiting for moderation | Users of the moderator group (default Super Users) | At most one per article every 15 minutes, with the number waiting |
| Confirm reply notifications | A guest who ticked "email me when someone replies" | Once, after their comment is published |
| New reply | The author of the comment that was answered | Only for published replies, only to members or guests who clicked the confirmation link, at most one per person per article per hour |
Every reply and confirmation email has a one-click unsubscribe link. Links contain a signed token, never the email address.
6. Import from CComment or JComments
Components → JR Comments → Import. The importer reads the old tables directly — the old extension does not need to be installed (common after a Joomla 3 migration).
- Choose the time zone the old dates were stored in (UTC for recent versions).
- Dry run — shows how many comments would be imported per status, what would be skipped and why, and five converted examples. Nothing is written.
- Import — runs in batches of 500 with a progress bar, then rebuilds threads and counts.
- Running it again never creates duplicates; an interrupted import can simply be started again.
- Only comments on Joomla articles are imported; comments on other components are counted as skipped.
- HTML and BBCode are converted to plain text (line breaks and link URLs kept).
- Confirmed JComments subscriptions keep reply notifications; unconfirmed guest flags are not carried over.
- A table that is missing columns the importer needs is reported and nothing is imported from it.
7. Privacy: what is stored and for how long
| Data | Why | How long |
|---|---|---|
| Name, comment text, date | To show the comment | Until the comment is deleted |
| Email (never shown) | Reply notifications, recognising returning posters, spam rules | Until the comment is deleted or a privacy removal |
| Website (if the field is on) | Shown as the author link | Until deleted |
| IP address and browser string (if "Store IP addresses" is on) | Moderation and spam fighting | Cleared after 30 days (Options → Privacy) |
| Keyed hash of the IP | Rate limits and bans after the IP is cleared | With the comment |
| Spam comments / trashed comments | Moderator review | Deleted after 30 / 90 days |
| Hashed mail log (no addresses) | Email throttles | 30 days |
The clean-up runs through the JR Comments housekeeping task in System → Scheduled Tasks (created at install, daily). The dashboard warns if it is missing or disabled.
Privacy requests (Users → Privacy): an export contains every comment written with the requester's email or account. A removal anonymises them: the name becomes "Deleted user"; email, website, IP, IP hash and browser string are cleared. The text stays unless you enable Delete bodies on removal.
Optional features that contact other servers, and only when you turn them on: Gravatar (sends a hash of each commenter's email to gravatar.com when the page is viewed). Lite and Pro make no other outbound calls.
8. Options overview
Display (order, comments per page, reply depth, link target, structured data, badges; Pro: voting, formatting, "best" order) · Posting · Moderation (Pro: hide after N reports) · Anti-spam · Notifications · Privacy · Avatars · Advanced (clean page cache on publish) · Permissions (post, moderate, edit own, publish without moderation, import, manage bans).
9. Look and feel
The thread uses Bootstrap 5 classes and your template's colours, works right-to-left, and is keyboard accessible. Override the markup in your template:
templates/<template>/html/layouts/com_jrcomments/jrcomments/thread.php…/jrcomments/comment.php…/jrcomments/form.php
CSS classes start with .jrc-.
10. Pro features
- Voting — up/down or like-only, one vote per member or IP, optional Best first order (Wilson score).
- Light formatting —
**bold**,*italic*,`code`,> quotes, lists and fenced code blocks; everything else stays plain text. - Pinned comments — moderators pin top-level comments; pinned show first with a badge.
- Reports — visitors report a comment with a reason; after N reports (default 3) it goes back to moderation; the Comments screen can filter on reported comments.
- Latest Comments module — latest comments, most discussed articles or top commenters, by category and language, respecting article access levels.
11. Known limitations
- Only Joomla articles can have threads in this version.
- Proof of Work captcha + System - Page Cache: the page cache also caches the captcha's challenge request (a
com_ajaxrequest), so every guest gets the same challenge and the post fails with "The captcha answer was not correct". In System - Page Cache, addcom_ajaxas a line in Exclude URLs, then clear the cache.com_ajaxmatches with search engine friendly URLs on and off;component/ajaxmatches only with them on. This affects any form that uses this captcha on a cached site, not only comments.
12. Troubleshooting
The error log
JR Comments writes its warnings and errors to jrcomments.php in the site's log folder. The folder is set in System → Global Configuration → System → Path to Log Folder; the default is administrator/logs. Open the file with a text editor or download it over FTP. The file is created the first time something is logged, so a missing file means nothing has gone wrong yet.
The log records these levels: warning, error, critical, alert and emergency. A message can contain the error text from the database or the mail server, and that text can include an email address. These events are logged:
| Level | Message starts with | Meaning |
|---|---|---|
| Error | Comment insert failed: |
The database refused a new comment. The visitor sees "Your comment could not be saved". |
| Warning | Mail <template> failed: |
Joomla could not send a notification email. The comment itself was saved. |
| Warning | User Actions Log entry failed: |
A moderation action worked but was not written to the User Actions Log. |
Errors that come from Joomla itself (for example a database outage) go to Joomla's own logs in the same folder, not to jrcomments.php.
Common problems
No comments or comment form under an article
- Check that System → Plugins → Content - JR Comments is enabled and Comments on articles is on.
- Check the plugin's Categories setting and the article's own Comments option (see Where comments appear).
- Check Close threads after (days): an older article shows its comments but no form.
- The form needs the Post comments permission. A guest without it sees "Please log in to comment"; a logged-in user without it sees the comments but no form.
A new comment does not appear
- Guests and new members wait for moderation (see Moderation). Look in Components → JR Comments → Comments with the status filter on Pending or Spam.
- With System - Page Cache on, keep Options → Advanced → Clean page cache on (the default), or clear the cache after you approve a comment.
"The most recent request was denied because it had an invalid security token"
- The visitor's session expired before they posted. Reloading the page and posting again fixes it.
- If it happens to every guest, a cache outside Joomla (a CDN, Varnish, LiteSpeed or a host cache) is serving pages with an old form token. Exclude article pages from that cache or set it to bypass the cache for POST requests. System - Page Cache does not cause this: Joomla refreshes the token in cached pages.
"The captcha answer was not correct" for every guest
See the Proof of Work captcha item in Known limitations.
"Your comment could not be saved"
Look in jrcomments.php for a Comment insert failed: line. It names the database error. A common cause is an unfinished install or upgrade; install the package again over itself.
Notification emails are not sent
- Send a test mail from System → Global Configuration → Server → Mail. If that fails, fix the site's mail settings first.
- Look in
jrcomments.phpforMail … failed:lines. - Check that the three JR Comments templates exist in System → Mail Templates.
- Remember the limits in Email notifications: the moderator email goes at most once per article every 15 minutes, a guest gets reply emails only after they click the confirmation link, and reply emails go out only for published replies.
Old IP addresses, spam or trash are not cleaned up
- The dashboard shows a warning when the JR Comments - Housekeeping task is missing or disabled. Follow its link, or open System → Scheduled Tasks.
- Check that the task is enabled and look at its last run and last exit code.
- Joomla runs scheduled tasks on page visits by default. On a site with few visitors, turn on Web Cron in System → Scheduled Tasks → Options, or run
php cli/joomla.php scheduler:runfrom a server cron job.
The import reports problems
- Run the Dry run first. It lists what would be skipped and why, and it reports an old table that is missing columns.
- Dates an hour or more off mean the wrong time zone was chosen. Running the import again does not fix this: a second run skips every comment it already imported and leaves its date unchanged. The importer has no undo. Restore the database backup from before the import, then import again with the right time zone. Take a backup before you import, and check the dates in the dry run's examples first.
Asking for support
Send this information to support:
- The Joomla, PHP and database versions (System → System Information).
- The JR Comments version and edition (Lite or Pro), from System → Manage → Extensions.
- The steps that cause the problem and the exact message shown.
- The lines of
jrcomments.phpfrom the time of the problem. Remove email addresses before you send them.