Skip to content
Reactions
Reactions
Universal reactions for MODX 3 — likes, GitHub-style sets, tops and trending on any object
  1. Extras
  2. Reactions

Reactions

Universal reactions for MODX Revolution 3. From a simple like/dislike pair to a GitHub-style set — on a resource, miniShop3 product, or any other object.

The component is headless: no manager UI. You configure it via system settings, REST API, and CLI.

Source: Ibochkarev/Reactions (MIT).

Features

  • Three built-in sets: updown, github, full (24 types)
  • Compact picker for github / full (layout=auto): chips + + button. layout=bar for the full strip
  • Custom types and sets via CLI or admin API
  • Reactions on any object (class / class_key, DB field object_class)
  • Click again to remove. In an exclusive set another reaction replaces the previous one
  • Identity strategies: auth_only, ip, ip_cookie, session
  • Tops for day / week / month / year / all time. Trending with a Reddit-style score
  • Rate limit, bot blocking, CSRF, Origin check
  • MODX events, webhooks (Telegram, Discord, Slack), author notifications

Requirements

RequirementVersion
MODX Revolution3.0+
PHP8.2–8.4
DatabaseMySQL / MariaDB (InnoDB)

Installation

  1. Install the Reactions transport package via Package Management.
  2. The package creates tables, presets (updown, github, full), snippets, chunks, and system settings.
  3. Manage → Clear Cache.

Build from source (needs Node.js and npm):

bash
composer install
php _build/build.php

build.php builds the widget from frontend/ into assets/components/reactions/js/web/.

Short path

  1. Load CSS/JS and call the Reactions snippet — Quick start.
  2. Change the set or identity strategy if needed — System settings.
  3. For the storefront: miniShop3, pdoTools, SEO.

Built-in sets

KeyReactionsMode
updown👍 like, 👎 dislikeMutually exclusive (exclusive)
github👍 👎 ❤️ 😂 😮 😢 😡 🎉Multiple reactions at once
fullgithub + 🚀👀🔥👏🤔🥳⭐🍺✨💯🙏💪😎😍😕🙌24 types. Subset via reactions_full_types

Custom types and sets: CLI or admin API.

Snippets

SnippetPurpose
ReactionsButtons with counts (picker / bar)
ReactionsCountCounts without buttons
TopLikedTop by likes
TopRatedTop by rating (likes − dislikes)
TrendingHot items (Reddit-style formula)
ReactionsSchemaJSON-LD AggregateRating

Permissions

PolicyDescription
reactions_viewView reaction data
reactions_manageTypes, sets, and bans via API
reactions_statsStatistics
NeedDoc
Render the block on a pageQuick start
reactions_* keysSystem settings
AJAX and stylesJavaScript widget
Endpoints and error codesREST API
recount, ban, typeCLI
PluginsEvents
Telegram / Discord / SlackWebhooks