@Leon555: спасибо за дистрибутив и буду благодарен за коммерческую поддержку интеграции (размер - на ваш выбор, реквизиты у меня в подписи).
Интеграция получилась и все довольно просто:
1. Открываем файл /administrator/components/com_djcatalog2/config.xml
2. Находим строчку:
<option value="2">DISQUS</option>
добавляем после нее:
<option value="3">JComments</option>
3. Открываем файл /components/com_djcatalog2/views/item/tmpl/default_comments.php
4. Заменяем его содержимое на:
<?php
defined ('_JEXEC') or die('Restricted access');
$uri = JFactory::getURI();
$lang = JFactory::getLanguage();
$languge_tag = str_replace('-', '_', $lang->getTag());
?>
<div class="djc_comments djc_clearfix">
<?php if ($this->params->get('comments', 0) == '3') { ?>
<?php
$comments = JPATH_SITE.'/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
echo JComments::show($this->item->id,'com_djcatalog2', $this->item->name);
}
?>
<?php } else { ?>
<h3><?php echo JText::_('COM_DJCATALOG2_COMMENTS'); ?></h3>
<?php if($this->params->get('comments',0) == '1') { ?>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/<?php echo $languge_tag; ?>/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="<?php echo $uri->toString(); ?>" data-num-posts="2" data-width="auto"></div>
<?php } else if($this->params->get('comments',0) == '2' && $this->params->get('disqus_shortname','')!= '') {?>
<?php
$devlist = array('localhost', '127.0.0.1');
$disqus_shortname = $this->params->get('disqus_shortname','');
$disqus_url = $uri->toString();
$disqus_identifier = $disqus_shortname.'-djc2-'.$this->item->id;
$disqus_developer = (in_array($_SERVER['HTTP_HOST'], $devlist))? 1 : 0;
?>
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '<?php echo $disqus_shortname; ?>';
var disqus_url = '<?php echo $disqus_url; ?>';
var disqus_identifier = '<?php echo $disqus_identifier; ?>';
var disqus_developer = <?php echo $disqus_developer; ?>;
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
<?php } ?>
<?php } ?>
</div>
5. Сохраняем изменения в файле
6. Создаем файл /components/com_jcomments/plugins/com_djcatalog2.plugin.php следующего содержания (будет включен в ближайшее обновление JComments):
<?php
/**
* JComments plugin for DJ-Catalog2 objects support (http://dj-extensions.com)
*
* @version 3.0
* @package JComments
* @author Sergey M. Litvinov (smart@joomlatune.ru)
* @copyright (C) 2011-2013 by Sergey M. Litvinov (http://www.joomlatune.ru)
* @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
class jc_com_djcatalog2 extends JCommentsPlugin
{
function getObjectInfo($id, $language = null)
{
$info = new JCommentsObjectInfo();
$routerHelper = JPATH_ROOT.'/components/com_djcatalog2/helpers/route.php';
if (is_file($routerHelper)) {
require_once($routerHelper);
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('a.id, a.alias, a.name, a.created_by');
$query->from('#__djc2_items AS a');
$query->select('c.id AS category_id, c.alias AS category_alias');
$query->join('LEFT', '#__djc2_categories AS c ON c.id = a.cat_id');
$query->where('a.id = ' . (int) $id);
$db->setQuery($query);
$row = $db->loadObject();
if (!empty($row)) {
$slug = $row->alias ? ($row->id . ':' . $row->alias) : $row->id;
$catslug = $row->category_alias ? ($row->category_id . ':' . $row->category_alias) : $row->category_id;
$info->title = $row->name;
$info->userid = $row->created_by;
$info->link = JRoute::_(DJCatalogHelperRoute::getItemRoute($slug, $catslug));
}
}
return $info;
}
}
7. Идем в настройки DJ-Catalog2 и в настройках выбираем JComments в качестве системы комментариев.