Resource icon

Keyword Linking by Siropu [Paid] 1.3.7

No permission to buy (€19.99)


Well-known member
Siropu submitted a new resource:

Keyword Linking by Siropu - Allows you to link keywords in thread posts, conversation messages, profile posts and more!

Allows you to link keywords in thread posts, thread custom fields, conversation messages, profile posts, resource manager descriptions and AMS articles.

Keyword Options
Title - As an anchor title or as a tooltip
Description - It can display when you hover over the keyword or over the keyword icon (optional)
URL - Target link for your keyword (optional)
Inline style - Use inline CSS to style the keyword
CSS class - Use a custom CSS class

Read more about this resource...


Well-known member
This is so great to have this addon. Thank you so much.

I am also looking forward to use this addon in combination with Bob's addons. His addons combined with this will become a better Wiki addon than those on the market.


Well-known member
That is great, thanks :)

Any examples what to enter there:

-> Inline style
-> CSS class



Active member
Could you also add support for Bob's AMS add-on?

Edit: sorry, I have just noticed it's already been requested by @sbj. 😅


Well-known member
Is this planned in the future? Would love to be able to upload mass keyword links. Tried 2 other keyword linkage addons that provided this and both had this as a standard. It becomes quite necessary when you have 100s or more keywords


Active member
Thanks for a great add-on! :)

However, I am unable to get the FA icons to show up.

Neither f360 nor <i class="fas fa-external-link-square-alt"></i> will work.


Well-known member
So, I am testing this great addon. My suggestions are:


1. Being able to set multiple words for each keyword item, like Jonathan, John, Jon, Johnny, Jonny, Joe -> (preferably instead of comma separated, it would be nice to separate in a multi-line textbox with each line).

Right now we can only enter 1 word Jonathan ->

This is important not only because we can redirect several words with the same meaning to the same place at one go, but we can also catch common spelling mistakes, like embarased, embarassed, embarrassed - >

If you have time:

2. We can't click on the FA icons to be redirected to the url.

3. We can't select in which nodes each keyword should be applied to.

4. We can't select to which usergroups each keyword should be applied to.

5. It would be nice to have an option to have the description text as an inline text (like reddit or like a spoiler button).

6. It would be nice to be able to replace keywords not only with urls but also with other words.

Also, I am getting server error logs while trying to post a new reply. It looks like it is conflicting with other addons.

Edit: It also happens when no other addon is activated.

Server error log

    ErrorException: [E_NOTICE] Array to string conversion src\XF\BbCode\Parser.php:32

    Generated by: xxx 27 September 2019 at 23:34

Stack trace

#0 [internal function]: XF::handlePhpError(8, '[E_NOTICE] Arra...', 'C:\\xampp\\htdocs...', 32, Array)
#1 src\XF\BbCode\Parser.php(32): strval(Array)
#2 src\XF\BbCode\Traverser.php(19): XF\BbCode\Parser->parse(Array, Object(CMTV\Code\XF\BbCode\RuleSet))
#3 src\XF\SubContainer\BbCode.php(219): XF\BbCode\Traverser->render(Array, Object(XF\BbCode\Parser), Object(CMTV\Code\XF\BbCode\RuleSet), Array)
#4 src\addons\xenMade\EAS\XF\SubContainer\BbCode.php(19): XF\SubContainer\BbCode->render(Array, 'editorHtml', 'editor', NULL, Array)
#5 src\addons\Siropu\KeywordLinking\Service\KeywordFinder.php(117): xenMade\EAS\XF\SubContainer\BbCode->render(Array, 'editorHtml', 'editor', NULL)
#6 src\addons\Siropu\KeywordLinking\Service\KeywordFinder.php(92): Siropu\KeywordLinking\Service\KeywordFinder->getKeywordIdFoundInItem(Array, Object(Siropu\KeywordLinking\Entity\Keyword))
#7 src\addons\Siropu\KeywordLinking\Listener.php(168): Siropu\KeywordLinking\Service\KeywordFinder->findKeywordsInItems()
#8 src\addons\Siropu\KeywordLinking\Listener.php(151): Siropu\KeywordLinking\Listener::updateEntityKeywords(Object(SV\WhoReplied\XF\Entity\Thread), Object(Andy\ChangeLimit\XF\Entity\Post))
#9 [internal function]: Siropu\KeywordLinking\Listener::threadPostEntityPostSave(Object(Andy\ChangeLimit\XF\Entity\Post))
#10 src\XF\Extension.php(50): call_user_func_array(Array, Array)
#11 src\XF.php(717): XF\Extension->fire('entity_post_sav...', Array, 'XF\\Entity\\Post')
#12 src\XF\Mvc\Entity\Entity.php(1214): XF::fire('entity_post_sav...', Array, 'XF\\Entity\\Post')
#13 src\XF\Service\Thread\Replier.php(167): XF\Mvc\Entity\Entity->save(true, false)
#14 src\XF\Service\ValidateAndSavableTrait.php(40): XF\Service\Thread\Replier->_save()
#15 src\XF\Pub\Controller\Thread.php(461): XF\Service\Thread\Replier->save()
#16 src\addons\KL\EditorManager\XF\Pub\Controller\Thread.php(23): XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#17 src\XF\Mvc\Dispatcher.php(321): KL\EditorManager\XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#18 src\XF\Mvc\Dispatcher.php(248): XF\Mvc\Dispatcher->dispatchClass('XF:Thread', 'AddReply', Object(XF\Mvc\RouteMatch), Object(SV\AlertImprovements\XF\Pub\Controller\Thread), NULL)
#19 src\XF\Mvc\Dispatcher.php(100): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\AlertImprovements\XF\Pub\Controller\Thread), NULL)
#20 src\XF\Mvc\Dispatcher.php(50): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#21 src\XF\App.php(2178): XF\Mvc\Dispatcher->run()
#22 src\XF.php(390): XF\App->run()
#23 index.php(20): XF::runApp('XF\\Pub\\App')
#24 {main}

Request state

array(4) {
  ["url"] => string(95) "/forum/xxxx.20309/add-reply"
  ["referrer"] => string(102) "http://localhost/forum/xxxx.20309/"
  ["_GET"] => array(0) {
  ["_POST"] => array(10) {
    ["message_html"] => string(28) "<p>Testing Siropu.&nbsp;</p>"
    ["attachment_hash"] => string(32) "caf583f3bf12b912aee97663eedad0fe"
    ["attachment_hash_combined"] => string(87) "{"type":"post","context":{"thread_id":20309},"hash":"caf583f3bf12b912aee97663eedad0fe"}"
    ["last_date"] => string(10) "1565937646"
    ["last_known_date"] => string(10) "1565937646"
    ["klPage"] => string(0) ""
    ["_xfToken"] => string(8) "********"
    ["_xfRequestUri"] => string(86) "/forum/xxxx.20309/"
    ["_xfWithData"] => string(1) "1"
    ["_xfResponseType"] => string(4) "json"

Thank you.
Last edited:


Can optimize the link limit.
For example, if an article has 100 identical keywords, does it link only a few certain keywords?


Well-known member
If you are using the post limit option, it will only link the first x occurrences of that keyword.