Jak vylepšit komentáře redakčního systému Nucleus CMS

O vyšperkování komentářů podporou Gravatarů v redakčním systému Nucleus CMS jsem psal již dříve, nyní na přání čtenářů uveřejňuji návod jak jednoduše doplnit možnost reagovat na cizí komentář a jak reakci prolinkovat s komentářem původním.

Návod bych rozdělil do následujících tří kroků:

  1. doplnit číslování komentářů (včetně odkazu na vlastní komentář),
  2. přidat příkaz reagovat,
  3. nahradit značku reakce (ve tvaru [X]) v textu komentáře odkazem.

1. Číslování komentářů

Nejjednodušší z celé procedury je bod první. Postačí nainstalovat plugin NP_CommentCounter a do příslušné šablony (např. default/item) do okna Comment body (např. před jméno komentujícího) doplnit následující:

<div id="c<%CommentCounter%>" class="itemcomment id<%memberid%>">
[<a href="#c<%CommentCounter%>"><%CommentCounter%></a>]
… 
</div>

2. Příkaz reagovat

Teď už to bude maličko složitější. Ještě předtím, než si šablonu (v našem případě default/item) uložíme, přidáme do okna Comment body (např. někam na konec) následující odkaz:

<a onclick="reaguj( <%CommentCounter%> )" href="#nucleus_cf">Reagovat</a>

Po kliknutí na uvedený link se zavolá JS funkce reaguj(), která může vypadat třeba nějak takto:

function reaguj(com_id) {
  var elem = document.getElementById('nucleus_cf_body');
  if (elem) {
     elem.focus();
     elem.value += '[' + (com_id) + '] ';
  }
}

Funkci reaguj() je samozřejmě potřeba uložit do souboru JavaScriptu (např. script.js) a umístit do adresáře s vaším skinem (./skins/default) a dále výsledný souboru zaincludovat do hlavičky head.inc:

<!-- Global functions -->
<script type="text/javascript" src="<%blogsetting(url)%>skins/default/script.js"></script>

3. Náhrada značky reakce odkazem

A konečně se dostávám k z mého pohledu nejobtížnější, ale naštěstí též finální fázi. Protože se mi bohužel nepodařilo najít žádný již existující plugin, který by vyhovoval mému záměru, byl jsem nucen snížit se k programování. PHP je pro mě bohužel španělská vesnice a s regulárními výrazy na tom nejsem o moc lépe. Rozhodl jsem se proto inspirovat se u v PHP zběhlejších kolegů a otevřel si soubor s Texy!. Tam se to přece musí regulárními výrazy jen hemžit, říkal jsem si. Opak je pravdou. Přece jen se mi však nakonec podařilo najít příslušnou funkci a mohl jsem tedy dokončit svůj první plugin pro Nucleus CMS. Zde je výsledek mého zhruba dvouhodinového snažení:

function event_PreComment($data) {
  $data['comment']['body'] = preg_replace('#\[[0-9]+\]#', 
   '<a href="#c~\\0~">\\0</a>:', $data['comment']['body']);
   
  $data['comment']['body'] = str_replace(Array('~[', ']~'), '',
   $data['comment']['body']);
}

Říkáte si, že jsem se zrovna moc nevytáhl? Myslíte, že by to šlo napsat lépe? Velmi pravděpodobně máte pravdu, ale já jsem vděčný i za toto skromné řešení. Hlavní pro mě je, že to funguje.

Kompletní plugin NP_CommentLinkAdd (© Pavel Jaroš) si můžete stáhnout zde a poté už vám stačí jej pouze uložit do souboru NP_CommentLinkAdd.php a nainstalovat.

Enjoy!


Podělte se o tento článek s ostatními… Sdílet

Komentáře

Zatím žádné komentáře

Přidat komentář

  • Pole označená hvězdičkou jsou povinná.
  • Můžete použít Texy! syntaxi. HTML tagy nejsou povolené!
    Příklad syntaxe: **tučně**, *kurzíva*, `kód programu`.
  • Odkazy začínající http(s)://, ftp:// a mailto: se zformátují automaticky.
  • Na jiné komentáře se můžete odkazovat např. zápisem [1].
  • Máte-li k e-mailové adrese nahraného Gravatara, bude zobrazen u Vašeho komentáře.
  • Upozorňuji, že komentáře, které se netýkají tématu článku, jsou vulgární nebo urážlivé, mohou být smazány.
Upozornění: Komentář musí být před publikováním schválen!
: *
: *

: *

:



Navigace: Začátek článku Nahoru | Začátek komentářů Nahoru

© Pavel Jaroš [Sektor PJ] · Nahoru Nahoru