Integrácia JComments a Remository
Po dlhej dobe som sa rozhodol trochu popracovať na stránke, aktualizovať rozšírenia a tak... Popri tom som zmenil systém komentárov na JComments a čo ma poteľilo, objavil som spôsob ako integrovať do Remository, ale...
Rozšírenie JComments je systém komentárov, ktorý ma veľmi milo prekvapil, najmä tým, že má integrovanú slovenskú lokalizáciu a že fungoval na prvý krát, čo nie je v každom rozšírení samozrejmosťou. Autori často na ničo "zabudnú", a tak mi ich komponent na stránke nefunguje tak, ako by mal a sú potrebné drobné (alebo i väčšie) úpravy, či vylepšenia. V prípade JComments som si vlastne upravil len tému. Spolu s JComments som si nainštaloval aj modul JComments Latest, ktorý slúži na zobrazovanie na niekoľko, naposledy pridaných, komentárov. Ešte viac ma potešilo, keď som, pri prechádzaní domovskej stránky rozšírenia stránky, narazil aj na návod ako JComments integrovať do Remositary.
Skúšal som aj RokDownloads, ktorý vyzerá oveľa lepšie, ale narazil som na niektoré problémy, odradilo najmä ma, že sa nerozumel s mojim WYSIWYG editorom...
Integrácia do Remository
Relatívne hneď som sa túto integráciu rozhodol aj vyskúšať, hoci nie som veľkým zástancom takýchto zmien v rozšíreniach (najmä kvôli potrebe úprav pri aktualizácii), ale toto som zaradil do kategórie "Musím mať!" Lenže chyba! Uvedený postup nepracoval. Ale kategória "Musím mať" ma hnala do zistenia, prečože to nefunguje a chybička je naozaj triviálna. Stačilo nahradiť použitie globálnej premennej $mosConfig_absolute_path (žeby pozostatok zo starej Joomly?) použitím zabudovanej premennej (konštanty) JPATH_BASE a všetko začalo fungovať tak ako malo. Celý postup je inak rovnaký ako na uvedenej stránke, teda nájdite si súbor /components/com_remository/v-classes/remositoryFileInfoHTML.php a v ňom nájdite riadky:
Pôvodný kód$commentsdb = remositoryComment::getComments($file->id); if ($commentsdb){ $this->tabcnt = 1; $legend = _DOWN_COMMENTS; foreach ($commentsdb as $comment) { $this->showComment($legend, $comment); // Uncomment the next line if you want to restrict to a single comment // if ($comment->userid == $this->remUser->id) $hascommented = true; } } else { $legend = $this->remUser->isLogged() ? _DOWN_FIRST_COMMENT : _DOWN_FIRST_COMMENT $this->fileOutputBox('', '<strong>'.$legend.'</strong>'); } if ($this->remUser->isLogged() AND empty($hascommented)) $this->commentBox($file);
ktoré nahraďte týmito riadkami:
Pozor!!! Pridaná nadbytočná medzera za '< '
Nový kód$comments = JPATH_BASE.DS.'/components/com_jcomments/jcomments.php'; if (file_exists($comments)) { require_once($comments); echo '< div style="clear: both;">'; echo JComments::showComments($file->id, 'com_remository', $file->filetitle); echo '< /div>'; }
Posledné komentáre
Samozrejme, že som to hne skúšal, ale prvé čo som si všimol (okrem toho, že to funguje) bolo, že sa mi takto pridané komentáre neobjavujú medzi naposledy pridanými komentármi. najprv som si vzdychol, že predsa... Potom som sa však pozrel do konfigurácie modulu JComments Latest a našiel tam voľbu Zdroj. Tento parameter udáva, z ktorých komponentov majú byť zobrazované komentáre. Východzie nastavenie je len komponent com_content. Skúsil som teda pridať ďalší komponent (com_remository) a ejhľa, funguje!!! Takže výsledná hodnota tohoto parametra je:
com_content,com_remository
No a výsledok si môžete pozrieť v časti na stiahnutie a keď niekto pridá komentár, tak i medzi poslednými komentármi...

