XenSpotlight: crown a member every week, from a race the whole forum follows

XenSpotlight: crown a member every week, from a race the whole forum follows 2.0.2

No permission to download

SenseiXS

Well-known member
Licensed customer
SenseiXS submitted a new resource:

XenSpotlight - One member. One moment. Center stage.

View attachment 337930
XenSpotlight
One member. One moment. Center stage.
A free, premium add-on for XenForo 2.3 that automatically features the most outstanding contributor of every day, week or month on a cinematic spotlight page.

What you get:

Cinematic spotlight page at /spotlight — deep-indigo stage, twin beams, rotating cyan ring around a large avatar
Automatic selection — daily cron picks the most active member based on posts and reactions received during the period...

Read more about this resource...
 
@SenseiXS I think reaction and post counts are vulnerable to off-topic threads and groups. I think this add-on needs solution count either. It's my opinion :)

And maybe exclude forums would be great. For example a lot of site have off-topic forum and they don't want to count these messages too. Still, my opinion. Thanks!
 
@SenseiXS I think reaction and post counts are vulnerable to off-topic threads and groups. I think this add-on needs solution count either. It's my opinion :)

And maybe exclude forums would be great. For example a lot of site have off-topic forum and they don't want to count these messages too. Still, my opinion. Thanks!
Thanks for the feedback, really appreciate it!


You make a great point — reaction and post counts can definitely be skewed by off-topic threads and groups, which doesn't always reflect a user's actual helpful contributions. Adding a solution count is a really good idea, and the option to exclude specific forums would make the add-on much more flexible for sites that have off-topic areas they don't want included in the stats.


I'll add both of these to my to-do list and work on implementing them in an upcoming update. Thanks again for the suggestions! :)
 
SenseiXS updated XenSpotlight with a new update entry:

1.0.1 — Forum exclusion & solution counting

1.0.1 — Forum exclusion & solution counting​

Two community-requested options added to the scoring algorithm:

  • Excluded forum IDs — new ACP option (CSV of node IDs). Posts and reactions in these forums no longer count toward a member's score. Perfect for off-topic forums.
  • Solution counting — XenForo's native question/solution mechanism is now detected. New ACP option Weight: solutions provided (default 5) lets you tune how much each solution...

Read the rest of this update entry...
 
@SenseiXS I think reaction and post counts are vulnerable to off-topic threads and groups. I think this add-on needs solution count either. It's my opinion :)

And maybe exclude forums would be great. For example a lot of site have off-topic forum and they don't want to count these messages too. Still, my opinion. Thanks!
Hi! Both suggestions implemented in v1.0.1:

Forum exclusion — new ACP option Excluded forum IDs (comma-separated node IDs). Posts and reactions in those forums no longer contribute to the score. Perfect for off-topic / ****posting forums.

Solution count — XenForo's native question/solution mechanism is now detected and weighted. A new ACP option Weight: solutions provided (default 5) lets you tune how much each solution boosts a member's score. The solution count is displayed on the spotlight page when present.

Thanks for the great feedback — both options ship with sensible defaults but can be tuned to your community's style.
 
@SenseiXS
Hi, how are you?

Great addon, new feature, I liked it.

When I installed it, it showed this "error".

Even after uninstalling XenSpotlight 1.0.1, it's still showing the same message.

  • ErrorException: Template error: [E_USER_WARNING] Template public:alert_user_xs_spotlight_selected is unknown
  • src/XF/Template/Templater.php:781
  • Gerado por: Positivo
  • Mai 17, 2026 at 16:14

Stack trace​

#0 [internal function]: XF\Template\Templater->handleTemplateError(512, '[E_USER_WARNING...', 's...', 781)
#1 src/XF/Template/Templater.php(781): trigger_error('Template public...', 512)
#2 src/XF/Template/Templater.php(1766): XF\Template\Templater->getTemplateData('public', 'alert_user_xs_s...')
#3 src/XF/Alert/AbstractHandler.php(124): XF\Template\Templater->renderTemplate('alert_user_xs_s...', Array)
#4 src/XF/Entity/UserAlert.php(73): XF\Alert\AbstractHandler->render(Object(XF\Entity\UserAlert))
#5 src/XF/Template/Templater.php(1282): XF\Entity\UserAlert->render()
#6 internal_data/code_cache/templates/l2/s1/public/alert_macros.php(19): XF\Template\Templater->method(Object(XF\Entity\UserAlert), 'render', Array)
#7 src/XF/Template/Templater.php(921): XF\Template\Templater->{closure:internal_data/code_cache/templates/l2/s1/public/alert_macros.php:8}(Object(XF\Template\Templater), Array, NULL)
#8 internal_data/code_cache/templates/l2/s1/public/account_alerts_popup.php(17): XF\Template\Templater->callMacro('alert_macros', 'row', Array, Array)
#9 src/XF/Template/Templater.php(1799): XF\Template\Templater->{closure:internal_data/code_cache/templates/l2/s1/public/account_alerts_popup.php:4}(Object(XF\Template\Templater), Array, NULL)
#10 src/XF/Template/Template.php(24): XF\Template\Templater->renderTemplate('account_alerts_...', Array)
#11 src/XF/Mvc/Renderer/Json.php(86): XF\Template\Template->render()
#12 src/XF/Mvc/Renderer/Json.php(70): XF\Mvc\Renderer\Json->renderHtmlFallback('XF:Account\\Aler...', 'public:account_...', Array)
#13 src/XF/Mvc/Dispatcher.php(471): XF\Mvc\Renderer\Json->renderView('XF:Account\\Aler...', 'public:account_...', Array)
#14 src/XF/Mvc/Dispatcher.php(453): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#15 src/XF/Mvc/Dispatcher.php(412): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#16 src/XF/Mvc/Dispatcher.php(66): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'json')
#17 src/XF/App.php(2826): XF\Mvc\Dispatcher->run()
#18 src/XF.php(806): XF\App->run()
#19 index.php(23): XF::runApp('XF\\Pub\\App')
#20 {main}

Request state​

array(4) {
["url"] => string(160) "/index.php?account/alerts-popup&_xfResponseType=json&_xfWithData=1&_xfRequestUri=%2Findex.php%3Fforums%2F&_xfToken=1779045180%2Cedbbd18cba0df5de7e4d3afc2ccdffb5"
["referrer"] => string(46) "https://eletronicafix.com.br/index.php?forums/"
["_GET"] => array(5) {
["account/alerts-popup"] => string(0) ""
["_xfResponseType"] => string(4) "json"
["_xfWithData"] => string(1) "1"
["_xfRequestUri"] => string(18) "/index.php?forums/"
["_xfToken"] => string(43) "1779045180,edbbd18cba0df5de7e4d3afc2ccdffb5"
}
["_POST"] => array(0) {
}
}
 
@SenseiXS
Hi, how are you?

Great addon, new feature, I liked it.

When I installed it, it showed this "error".

Even after uninstalling XenSpotlight 1.0.1, it's still showing the same message.

  • ErrorException: Template error: [E_USER_WARNING] Template public:alert_user_xs_spotlight_selected is unknown
  • src/XF/Template/Templater.php:781
  • Gerado por: Positivo
  • Mai 17, 2026 at 16:14

Stack trace​

#0 [internal function]: XF\Template\Templater->handleTemplateError(512, '[E_USER_WARNING...', 's...', 781)
#1 src/XF/Template/Templater.php(781): trigger_error('Template public...', 512)
#2 src/XF/Template/Templater.php(1766): XF\Template\Templater->getTemplateData('public', 'alert_user_xs_s...')
#3 src/XF/Alert/AbstractHandler.php(124): XF\Template\Templater->renderTemplate('alert_user_xs_s...', Array)
#4 src/XF/Entity/UserAlert.php(73): XF\Alert\AbstractHandler->render(Object(XF\Entity\UserAlert))
#5 src/XF/Template/Templater.php(1282): XF\Entity\UserAlert->render()
#6 internal_data/code_cache/templates/l2/s1/public/alert_macros.php(19): XF\Template\Templater->method(Object(XF\Entity\UserAlert), 'render', Array)
#7 src/XF/Template/Templater.php(921): XF\Template\Templater->{closure:internal_data/code_cache/templates/l2/s1/public/alert_macros.php:8}(Object(XF\Template\Templater), Array, NULL)
#8 internal_data/code_cache/templates/l2/s1/public/account_alerts_popup.php(17): XF\Template\Templater->callMacro('alert_macros', 'row', Array, Array)
#9 src/XF/Template/Templater.php(1799): XF\Template\Templater->{closure:internal_data/code_cache/templates/l2/s1/public/account_alerts_popup.php:4}(Object(XF\Template\Templater), Array, NULL)
#10 src/XF/Template/Template.php(24): XF\Template\Templater->renderTemplate('account_alerts_...', Array)
#11 src/XF/Mvc/Renderer/Json.php(86): XF\Template\Template->render()
#12 src/XF/Mvc/Renderer/Json.php(70): XF\Mvc\Renderer\Json->renderHtmlFallback('XF:Account\\Aler...', 'public:account_...', Array)
#13 src/XF/Mvc/Dispatcher.php(471): XF\Mvc\Renderer\Json->renderView('XF:Account\\Aler...', 'public:account_...', Array)
#14 src/XF/Mvc/Dispatcher.php(453): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#15 src/XF/Mvc/Dispatcher.php(412): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#16 src/XF/Mvc/Dispatcher.php(66): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'json')
#17 src/XF/App.php(2826): XF\Mvc\Dispatcher->run()
#18 src/XF.php(806): XF\App->run()
#19 index.php(23): XF::runApp('XF\\Pub\\App')
#20 {main}

Request state​

array(4) {
["url"] => string(160) "/index.php?account/alerts-popup&_xfResponseType=json&_xfWithData=1&_xfRequestUri=%2Findex.php%3Fforums%2F&_xfToken=1779045180%2Cedbbd18cba0df5de7e4d3afc2ccdffb5"
["referrer"] => string(46) "https://eletronicafix.com.br/index.php?forums/"
["_GET"] => array(5) {
["account/alerts-popup"] => string(0) ""
["_xfResponseType"] => string(4) "json"
["_xfWithData"] => string(1) "1"
["_xfRequestUri"] => string(18) "/index.php?forums/"
["_xfToken"] => string(43) "1779045180,edbbd18cba0df5de7e4d3afc2ccdffb5"
}
["_POST"] => array(0) {
}
}
Hi! Thanks for reporting this — sorry for the trouble.

What happened: when the addon dispatches an alert, XenForo stores a row in xf_user_alert referencing the alert template alert_user_xs_spotlight_selected. When you uninstall the addon, the template is removed from the database, but the already-delivered alerts stay in the user_alert table, so every time someone with that alert opens their notifications popup, XF tries to render a template that no longer exists → the error you see.

Immediate fix for your site — run this in your DB (phpMyAdmin / mysql cli) to clear the orphan alerts:
SQL:
DELETE FROM xf_user_alert WHERE action = 'xs_spotlight_selected';
That single query will make the error disappear and your alerts popup will work again.

Permanent fix — I just pushed v1.0.2 which adds an uninstallStep that runs that cleanup automatically when you remove the addon. So this won't happen to anyone uninstalling 1.0.2+.

If you'd like to reinstall, 1.0.2 also runs the cleanup on upgrade as a safety net, so any leftover broken alerts on your install will be cleared and the addon will work normally.

Thanks for taking the time to send the full stack trace — really helped pinpoint it.
 
SenseiXS updated XenSpotlight with a new update entry:

XenSpotlight 1.0.2

Fixes a "Template alert_user_xs_spotlight_selected is unknown" error that could appear in member alert popups when uninstalling a previous version. Uninstall now cleans up its own alerts, and the upgrade also clears any leftover broken alerts from older installs as a safety net. No schema changes, safe to upgrade.

Read the rest of this update entry...
 
Added this to my site and I’m really liking it so far. Excellent add-on @SenseiXS.

Also, one enhancement suggestions that could add a lot more engagement:
  • an option to automatically send an alert/notification to all users whenever a new member is added to the Spotlight each month. This will really put that member under spotlight to get appreciation from all and should encourage everyone to strive for this achievement too in future.
Btw my spotlight history pages are appearing a bit distorted like below on chrome and safari.

1779210175438.webp

1779211217759.webp
 
Last edited:
Added this to my site and I’m really liking it so far. Excellent add-on @SenseiXS.

Also, one enhancement suggestions that could add a lot more engagement:
  • an option to automatically send an alert/notification to all users whenever a new member is added to the Spotlight each month. This will really put that member under spotlight to get appreciation from all and should encourage everyone to strive for this achievement too in future.
Btw my spotlight history pages are appearing a bit distorted like below on chrome and safari.

View attachment 338225

View attachment 338240
Hey, ;)

Really glad you're enjoying it, thanks for the feedback!

On the global alert / notification suggestion: yes, love this. The whole point of the Spotlight is to make the member feel celebrated, and a silent monthly rotation kind of defeats that. I'll add an option in the ACP so each new Spotlight pick fires an alert to every member (or a configurable subset, for example only members active in the last 30 days, to avoid waking up dormant accounts). Targeting the next release.

On the distorted history page: thanks for the screenshots, those help. Looking at them, it's almost certainly a CSS conflict with your theme rather than a base add-on bug. The cards rely on a few CSS custom properties (--xsSpot-accent etc.) and SVG icons, and one of them is being overridden somewhere. To pin it down precisely, could you do one of these:

  1. Right-click then Inspect on one of the broken cards, copy the outer HTML (the <a class="xsSpot-pastCard"> element and its children), and paste it here. That'll let me see exactly what's rendering vs what should be.
  2. Or temporarily switch to the default XenForo style (ACP → Styles, check if you have multiple) and confirm whether the issue still happens. That'll tell us if it's your theme or the add-on itself.
Either one is fine, takes 30 seconds. Once I see the rendered HTML I can either patch the add-on's CSS to be more resilient against your theme, or give you a quick override snippet.

In the meantime I'll also bundle a few defensive CSS fallbacks in the next release so themes that override --xsSpot-accent or use different scale variables don't break the cards.

Cheers,
SenseiXS :)
 
Hey, ;)

Really glad you're enjoying it, thanks for the feedback!

On the global alert / notification suggestion: yes, love this. The whole point of the Spotlight is to make the member feel celebrated, and a silent monthly rotation kind of defeats that. I'll add an option in the ACP so each new Spotlight pick fires an alert to every member (or a configurable subset, for example only members active in the last 30 days, to avoid waking up dormant accounts). Targeting the next release.

On the distorted history page: thanks for the screenshots, those help. Looking at them, it's almost certainly a CSS conflict with your theme rather than a base add-on bug. The cards rely on a few CSS custom properties (--xsSpot-accent etc.) and SVG icons, and one of them is being overridden somewhere. To pin it down precisely, could you do one of these:

  1. Right-click then Inspect on one of the broken cards, copy the outer HTML (the <a class="xsSpot-pastCard"> element and its children), and paste it here. That'll let me see exactly what's rendering vs what should be.
  2. Or temporarily switch to the default XenForo style (ACP → Styles, check if you have multiple) and confirm whether the issue still happens. That'll tell us if it's your theme or the add-on itself.
Either one is fine, takes 30 seconds. Once I see the rendered HTML I can either patch the add-on's CSS to be more resilient against your theme, or give you a quick override snippet.

In the meantime I'll also bundle a few defensive CSS fallbacks in the next release so themes that override --xsSpot-accent or use different scale variables don't break the cards.

Cheers,
SenseiXS :)

Changed it to default and its still exactly the same.

1779224396135.webp
 
SenseiXS updated [XenSupport] Spotlight with a new update entry:

Fixes

Fixes

  • Past spotlight cards rendering broken on some pages: fixed
  • "Run now" in the ACP creating duplicate entries instead of refreshing the current one: fixed (existing duplicates are cleaned up automatically on upgrade)
  • "Past spotlights" section disappearing when only one winner exists: fixed
  • Missing tooltips when hovering cards and avatars: added
  • Layout glitches on certain themes: hardened
Improvements

  • Cleaner admin "Current spotlight"...

Read the rest of this update entry...
 
SenseiXS updated [XenSupport] Spotlight with a new update entry:

What's new in 1.0.7

  • Top 10 contenders page at /spotlight/contenders/ : live ranking of who's in the running to be the next Spotlight, refreshed hourly
  • Top 3 are highlighted with crown / silver / bronze styling
  • Your own row is highlighted with a "you" badge if you're in the top 10, plus a "you're ranked #N" banner
  • New Broadcast alert option : when a new Spotlight is selected, every active member can be notified with a one-click link to the page
  • Audience can be limited to...

Read the rest of this update entry...
 
Seriously impressive how you've come up with these enhancements in under 2 days.

I have left some feedback on the last ticket.
Hi,


Thank you, that really means a lot! Honestly, having clear and detailed feedback from users like you is what makes such fast iterations possible, so a big part of the credit goes to you too.
I just saw your feedback on the last ticket and I'll go through it right away.

Thanks again for the support and for being so involved!
Best regards
 
SenseiXS updated [XenSupport] Spotlight with a new update entry:

Release note XenSpotlight 1.0.8

New

  • Top 10 contenders page with live ranking and podium styling for the top 3
  • Broadcast alert to all active members when a new Spotlight is selected
  • New option to lock the winner for the whole period (off by default)
Improved

  • Spotlight stats now refresh on every cron run and always match the live leader
  • More prominent "See top 10 contenders" link
Fixed

  • Contenders page styling not loading after upgrade (CSS now rebuilds automatically)...

Read the rest of this update entry...
 
Back
Top Bottom