0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 866 Просмотров
*

matro-skin

  • Новичок
  • 9
  • 0 / 0
Добрый день!
Прошу помощи.
Joomla 3.4.8
Компонент JComments
Использую модуль К2 Content для отображения материалов.
При использовании фильтра "Самые обсуждаемые", К2 Content не отображает материалов.
Скорее всего потому, что видеть должен только комментарии оставленные штатными комментариями от К2.
Но, я то использую JComments.
Подскажте пожалуйста как быть, что делать.
Спасибо!
*

voland

  • Легенда
  • 10221
  • 555 / 108
  • Эта строка съедает место на вашем мониторе
Использовать другой модуль или переписать этот.
*

matro-skin

  • Новичок
  • 9
  • 0 / 0
Использовать другой модуль или переписать этот.
Отличный совет :-)
Может что-то по оригинальнее есть? :-)
*

matro-skin

  • Новичок
  • 9
  • 0 / 0
Кстати, какой переписать?
 К2 Content, или JComments?  ^-^
*

voland

  • Легенда
  • 10221
  • 555 / 108
  • Эта строка съедает место на вашем мониторе
*

matro-skin

  • Новичок
  • 9
  • 0 / 0
Оригинальное - надо писать.
А может в нужном месте попробовать заменить запросы с #__k2_comments на #__jcomments ?
*

matro-skin

  • Новичок
  • 9
  • 0 / 0
Сделал.
Замените свой k2_comments (helper)
на этот:
Код
<?php
/**
 * @version 2.6.x
 * @package K2
 * @author JoomlaWorks http://www.joomlaworks.net
 * @copyright Copyright (c) 2006 - 2014 JoomlaWorks Ltd. All rights reserved.
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die;

require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'route.php');
require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');

class modK2ContentHelper
{

public static function getItems(&$params, $format = 'html')
{

jimport('joomla.filesystem.file');
$mainframe = JFactory::getApplication();
$limit = $params->get('itemCount', 5);
$cid = $params->get('category_id', NULL);
$ordering = $params->get('itemsOrdering', '');
$componentParams = JComponentHelper::getParams('com_k2');
$limitstart = JRequest::getInt('limitstart');

$user = JFactory::getUser();
$aid = $user->get('aid');
$db = JFactory::getDBO();

$jnow = JFactory::getDate();
$now =  K2_JVERSION == '15'?$jnow->toMySQL():$jnow->toSql();
$nullDate = $db->getNullDate();

if ($params->get('source') == 'specific')
{

$value = $params->get('items');
$current = array();
if (is_string($value) && !empty($value))
$current[] = $value;
if (is_array($value))
$current = $value;

$items = array();

foreach ($current as $id)
{

$query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams
FROM #__k2_items as i
LEFT JOIN #__k2_categories c ON c.id = i.catid
WHERE i.published = 1 ";
if (K2_JVERSION != '15')
{
$query .= " AND i.access IN(".implode(',', $user->getAuthorisedViewLevels()).") ";
}
else
{
$query .= " AND i.access<={$aid} ";
}
$query .= " AND i.trash = 0 AND c.published = 1 ";
if (K2_JVERSION != '15')
{
$query .= " AND c.access IN(".implode(',', $user->getAuthorisedViewLevels()).") ";
}
else
{
$query .= " AND c.access<={$aid} ";
}
$query .= " AND c.trash = 0
AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )
AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )
AND i.id={$id}";
if (K2_JVERSION != '15')
{
if ($mainframe->getLanguageFilter())
{
$languageTag = JFactory::getLanguage()->getTag();
$query .= " AND c.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').") AND i.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').")";
}
}
$db->setQuery($query);
$item = $db->loadObject();
if ($item)
$items[] = $item;

}
}

else
{
$query = "SELECT i.*,";

if ($ordering == 'modified')
{
$query .= " CASE WHEN i.modified = 0 THEN i.created ELSE i.modified END as lastChanged,";
}

$query .= "c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams";

if ($ordering == 'best')
$query .= ", (r.rating_sum/r.rating_count) AS rating";

if ($ordering == 'comments')
$query .= ", COUNT(comments.id) AS numOfComments";

$query .= " FROM #__k2_items as i RIGHT JOIN #__k2_categories c ON c.id = i.catid";

if ($ordering == 'best')
$query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id";

if ($ordering == 'comments')
$query .= " LEFT JOIN #__jcomments comments ON comments.object_id = i.id";

if (K2_JVERSION != '15')
{
$query .= " WHERE i.published = 1 AND i.access IN(".implode(',', $user->getAuthorisedViewLevels()).") AND i.trash = 0 AND c.published = 1 AND c.access IN(".implode(',', $user->getAuthorisedViewLevels()).")  AND c.trash = 0";
}
else
{
$query .= " WHERE i.published = 1 AND i.access <= {$aid} AND i.trash = 0 AND c.published = 1 AND c.access <= {$aid} AND c.trash = 0";
}

$query .= " AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )";
$query .= " AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )";

if ($params->get('catfilter'))
{
if (!is_null($cid))
{
if (is_array($cid))
{
if ($params->get('getChildren'))
{
$itemListModel = K2Model::getInstance('Itemlist', 'K2Model');
$categories = $itemListModel->getCategoryTree($cid);
$sql = @implode(',', $categories);
$query .= " AND i.catid IN ({$sql})";

}
else
{
JArrayHelper::toInteger($cid);
$query .= " AND i.catid IN(".implode(',', $cid).")";
}

}
else
{
if ($params->get('getChildren'))
{
$itemListModel = K2Model::getInstance('Itemlist', 'K2Model');
$categories = $itemListModel->getCategoryTree($cid);
$sql = @implode(',', $categories);
$query .= " AND i.catid IN ({$sql})";
}
else
{
$query .= " AND i.catid=".(int)$cid;
}

}
}
}

if ($params->get('FeaturedItems') == '0')
$query .= " AND i.featured != 1";

if ($params->get('FeaturedItems') == '2')
$query .= " AND i.featured = 1";

if ($params->get('videosOnly'))
$query .= " AND (i.video IS NOT NULL AND i.video!='')";

if ($ordering == 'comments')
$query .= " AND comments.published = 1";

if (K2_JVERSION != '15')
{
if ($mainframe->getLanguageFilter())
{
$languageTag = JFactory::getLanguage()->getTag();
$query .= " AND c.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').") AND i.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').")";
}
}

switch ($ordering)
{

case 'date' :
$orderby = 'i.created ASC';
break;

case 'rdate' :
$orderby = 'i.created DESC';
break;

case 'alpha' :
$orderby = 'i.title';
break;

case 'ralpha' :
$orderby = 'i.title DESC';
break;

case 'order' :
if ($params->get('FeaturedItems') == '2')
$orderby = 'i.featured_ordering';
else
$orderby = 'i.ordering';
break;

case 'rorder' :
if ($params->get('FeaturedItems') == '2')
$orderby = 'i.featured_ordering DESC';
else
$orderby = 'i.ordering DESC';
break;

case 'hits' :
if ($params->get('popularityRange'))
{
$datenow = JFactory::getDate();
$date =  K2_JVERSION == '15'?$datenow->toMySQL():$datenow->toSql();
$query .= " AND i.created > DATE_SUB('{$date}',INTERVAL ".$params->get('popularityRange')." DAY) ";
}
$orderby = 'i.hits DESC';
break;

case 'rand' :
$orderby = 'RAND()';
break;

case 'best' :
$orderby = 'rating DESC';
break;

case 'comments' :
if ($params->get('popularityRange'))
{
$datenow = JFactory::getDate();
$date =  K2_JVERSION == '15'?$datenow->toMySQL():$datenow->toSql();
$query .= " AND i.created > DATE_SUB('{$date}',INTERVAL ".$params->get('popularityRange')." DAY) ";
}
$query .= " GROUP BY i.id ";
$orderby = 'numOfComments DESC';
break;

case 'modified' :
$orderby = 'lastChanged DESC';
break;

case 'publishUp' :
$orderby = 'i.publish_up DESC';
break;

default :
$orderby = 'i.id DESC';
break;
}

$query .= " ORDER BY ".$orderby;
$db->setQuery($query, 0, $limit);
$items = $db->loadObjectList();
}

$model = K2Model::getInstance('Item', 'K2Model');

if (count($items))
{

foreach ($items as $item)
{
   $item->event = new stdClass;

//Clean title
$item->title = JFilterOutput::ampReplace($item->title);

//Images
if ($params->get('itemImage'))
{

$date = JFactory::getDate($item->modified);
$timestamp = '?t='.$date->toUnix();

if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XS.jpg'))
{
$item->imageXSmall = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_XS.jpg';
if ($componentParams->get('imageTimestamp'))
{
$item->imageXSmall .= $timestamp;
}
}

if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_S.jpg'))
{
$item->imageSmall = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_S.jpg';
if ($componentParams->get('imageTimestamp'))
{
$item->imageSmall .= $timestamp;
}
}

if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_M.jpg'))
{
$item->imageMedium = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_M.jpg';
if ($componentParams->get('imageTimestamp'))
{
$item->imageMedium .= $timestamp;
}
}

if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_L.jpg'))
{
$item->imageLarge = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_L.jpg';
if ($componentParams->get('imageTimestamp'))
{
$item->imageLarge .= $timestamp;
}
}

if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XL.jpg'))
{
$item->imageXLarge = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_XL.jpg';
if ($componentParams->get('imageTimestamp'))
{
$item->imageXLarge .= $timestamp;
}
}

if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_Generic.jpg'))
{
$item->imageGeneric = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_Generic.jpg';
if ($componentParams->get('imageTimestamp'))
{
$item->imageGeneric .= $timestamp;
}
}

$image = 'image'.$params->get('itemImgSize', 'Small');
if (isset($item->$image))
$item->image = $item->$image;

}

//Read more link
$item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id.':'.urlencode($item->alias), $item->catid.':'.urlencode($item->categoryalias))));

//Tags
if ($params->get('itemTags'))
{
$tags = $model->getItemTags($item->id);
for ($i = 0; $i < sizeof($tags); $i++)
{
$tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name));
}
$item->tags = $tags;
}

//Category link
if ($params->get('itemCategory'))
$item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid.':'.urlencode($item->categoryalias))));

//Extra fields
if ($params->get('itemExtraFields'))
{
$item->extra_fields = $model->getItemExtraFields($item->extra_fields, $item);
}

//Comments counter
if ($params->get('itemComments'))
$item->numOfComments = $model->countItemComments($item->id);

//Attachments
if ($params->get('itemAttachments'))
$item->attachments = $model->getItemAttachments($item->id);

//Import plugins
if ($format != 'feed')
{
$dispatcher = JDispatcher::getInstance();
JPluginHelper::importPlugin('content');
}

//Video
if ($params->get('itemVideo') && $format != 'feed')
{
$params->set('vfolder', 'media/k2/videos');
$params->set('afolder', 'media/k2/audio');
$item->text = $item->video;
           if (K2_JVERSION == '15')
            {
                $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart));
            }
            else
            {
                $dispatcher->trigger('onContentPrepare', array('mod_k2_content.', &$item, &$params, $limitstart));
            }
$item->video = $item->text;
}

// Introtext
$item->text = '';
if ($params->get('itemIntroText'))
{
// Word limit
if ($params->get('itemIntroTextWordLimit'))
{
$item->text .= K2HelperUtilities::wordLimit($item->introtext, $params->get('itemIntroTextWordLimit'));
}
else
{
$item->text .= $item->introtext;
}
}

if ($format != 'feed')
{

$params->set('parsedInModule', 1);
// for plugins to know when they are parsed inside this module

$item->event = new stdClass;
$item->event->BeforeDisplay = '';
$item->event->AfterDisplay = '';
$item->event->AfterDisplayTitle = '';
$item->event->BeforeDisplayContent = '';
$item->event->AfterDisplayContent = '';

if ($params->get('JPlugins', 1))
{
//Plugins
if (K2_JVERSION != '15')
{

$item->event->BeforeDisplay = '';
$item->event->AfterDisplay = '';

$dispatcher->trigger('onContentPrepare', array('mod_k2_content', &$item, &$params, $limitstart));

$results = $dispatcher->trigger('onContentAfterTitle', array('mod_k2_content', &$item, &$params, $limitstart));
$item->event->AfterDisplayTitle = trim(implode("\n", $results));

$results = $dispatcher->trigger('onContentBeforeDisplay', array('mod_k2_content', &$item, &$params, $limitstart));
$item->event->BeforeDisplayContent = trim(implode("\n", $results));

$results = $dispatcher->trigger('onContentAfterDisplay', array('mod_k2_content', &$item, &$params, $limitstart));
$item->event->AfterDisplayContent = trim(implode("\n", $results));
}
else
{
$results = $dispatcher->trigger('onBeforeDisplay', array(&$item, &$params, $limitstart));
$item->event->BeforeDisplay = trim(implode("\n", $results));

$results = $dispatcher->trigger('onAfterDisplay', array(&$item, &$params, $limitstart));
$item->event->AfterDisplay = trim(implode("\n", $results));

$results = $dispatcher->trigger('onAfterDisplayTitle', array(&$item, &$params, $limitstart));
$item->event->AfterDisplayTitle = trim(implode("\n", $results));

$results = $dispatcher->trigger('onBeforeDisplayContent', array(&$item, &$params, $limitstart));
$item->event->BeforeDisplayContent = trim(implode("\n", $results));

$results = $dispatcher->trigger('onAfterDisplayContent', array(&$item, &$params, $limitstart));
$item->event->AfterDisplayContent = trim(implode("\n", $results));

$dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart));
}

}
//Init K2 plugin events
$item->event->K2BeforeDisplay = '';
$item->event->K2AfterDisplay = '';
$item->event->K2AfterDisplayTitle = '';
$item->event->K2BeforeDisplayContent = '';
$item->event->K2AfterDisplayContent = '';
$item->event->K2CommentsCounter = '';

if ($params->get('K2Plugins', 1))
{
//K2 plugins
JPluginHelper::importPlugin('k2');
$results = $dispatcher->trigger('onK2BeforeDisplay', array(&$item, &$params, $limitstart));
$item->event->K2BeforeDisplay = trim(implode("\n", $results));

$results = $dispatcher->trigger('onK2AfterDisplay', array(&$item, &$params, $limitstart));
$item->event->K2AfterDisplay = trim(implode("\n", $results));

$results = $dispatcher->trigger('onK2AfterDisplayTitle', array(&$item, &$params, $limitstart));
$item->event->K2AfterDisplayTitle = trim(implode("\n", $results));

$results = $dispatcher->trigger('onK2BeforeDisplayContent', array(&$item, &$params, $limitstart));
$item->event->K2BeforeDisplayContent = trim(implode("\n", $results));

$results = $dispatcher->trigger('onK2AfterDisplayContent', array(&$item, &$params, $limitstart));
$item->event->K2AfterDisplayContent = trim(implode("\n", $results));

$dispatcher->trigger('onK2PrepareContent', array(&$item, &$params, $limitstart));

if ($params->get('itemComments'))
{
$results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart));
$item->event->K2CommentsCounter = trim(implode("\n", $results));
}

}

}

                // Restore the intotext variable after plugins execution
                $item->introtext = $item->text;

//Clean the plugin tags
$item->introtext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext);

//Author
if ($params->get('itemAuthor'))
{
if (!empty($item->created_by_alias))
{
$item->author = $item->created_by_alias;
$item->authorGender = NULL;
$item->authorDescription = NULL;
if ($params->get('itemAuthorAvatar'))
$item->authorAvatar = K2HelperUtilities::getAvatar('alias');
$item->authorLink = Juri::root(true);
}
else
{
$author = JFactory::getUser($item->created_by);
$item->author = $author->name;

$query = "SELECT `description`, `gender` FROM #__k2_users WHERE userID=".(int)$author->id;
$db->setQuery($query, 0, 1);
$result = $db->loadObject();
if ($result)
{
$item->authorGender = $result->gender;
$item->authorDescription = $result->description;
}
else
{
$item->authorGender = NULL;
$item->authorDescription = NULL;
}

if ($params->get('itemAuthorAvatar'))
{
$item->authorAvatar = K2HelperUtilities::getAvatar($author->id, $author->email, $componentParams->get('userImageWidth'));
}
//Author Link
$item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by));
}
}

// Extra fields plugins
if (is_array($item->extra_fields))
{
foreach ($item->extra_fields as $key => $extraField)
{
if ($extraField->type == 'textarea' || $extraField->type == 'textfield')
{
$tmp = new JObject();
$tmp->text = $extraField->value;
if ($params->get('JPlugins', 1))
{
if (K2_JVERSION != '15')
{
$dispatcher->trigger('onContentPrepare', array('mod_k2_content', &$tmp, &$params, $limitstart));
}
else
{
$dispatcher->trigger('onPrepareContent', array(&$tmp, &$params, $limitstart));
}
}
if ($params->get('K2Plugins', 1))
{
$dispatcher->trigger('onK2PrepareContent', array(&$tmp, &$params, $limitstart));
}
$extraField->value = $tmp->text;
}
}
}

$rows[] = $item;
}

return $rows;

}

}

}
« Последнее редактирование: 25.01.2016, 12:22:01 от matro-skin »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JComments - reCAPTCHA от Google

Автор phvsfpgs

Ответов: 1
Просмотров: 100
Последний ответ 06.02.2019, 14:42:00
от khan-alex
Как изменить плагин reCAPTCHA что бы работал в JComments?

Автор gillmor

Ответов: 2
Просмотров: 91
Последний ответ 05.02.2019, 00:18:15
от gillmor
Проблемы с JComments

Автор saltonik

Ответов: 3
Просмотров: 245
Последний ответ 12.12.2018, 15:01:47
от effrit
JComments запретить ссылки в комментах

Автор tati-2000

Ответов: 4
Просмотров: 1120
Последний ответ 03.11.2018, 12:31:20
от vladimirok
[Опрос] Оправдал ли ваши надежды JComments?

Автор Mitrich

Ответов: 86
Просмотров: 53593
Последний ответ 24.10.2018, 13:39:30
от jem777