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

Annn

  • Новичок
  • 6
  • 0 / 0
Добрый день. Пытаюсь вывести количество комментариев в mod_roklatestnews. В шаблон добавляю функцию:
Код: php
<?php
   global $mainframe;
   $comments = $mainframe->getCfg('absolute_path'). '/components/com_jcomments/jcomments.php';
   if (file_exists($comments)) {
    require_once($comments);
    $count = JComments::getCommentsCount($item->id, 'com_content');
    echo '<a href="'.$item->link.'#comments">Комментарии (' . $count . ')</a>';
  }
?>
Результат: "Комментарии (0)". На самом деле комментарии, естественно, есть. Вместо "$item->id" перепробовала еще кучу вариантов. Результат тот же. В чем может быть ошибка?
Joomla 1.5.23, JComments 2.2.0.2.
« Последнее редактирование: 28.11.2011, 12:10:02 от Annn »
*

beliyadm

  • Легенда
  • 9655
  • 1659 / 66
  • Севастополь == Россия
Re: Количество комментариев
« Ответ #1 : 22.11.2011, 07:53:55 »
$item->id - точно там хранится ID статьи? Если сделать эхо - что покажется?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Annn

  • Новичок
  • 6
  • 0 / 0
Re: Количество комментариев
« Ответ #2 : 22.11.2011, 08:54:58 »
$item->id - точно там хранится ID статьи? Если сделать эхо - что покажется?
Пусто.
В хэлпере модуля нашла только ид раздела и ид категории. Перерыла кучу форумов, с $item->id вроде работает у людей.
Еще кусок шаблона mod_roklatestnews:
Код: php
<?php foreach ($list as $item) :  ?>
<h4 class="toggler atStart bg<?php echo ($counter)%2; ?>">
<?php if ($params->get('show_date')) {?>
<span class="date">(<?php echo $item->date->toFormat("%m/%d/%y");?>)</span>
<?php } ?>
<?php if(!$params->get('title_as_link')) { ?>
<?php echo $item->title; ?>
<?php } else { ?>
<a href="<?php echo $item->link; ?>"><?php echo $item->title; ?></a>
<?php } ?>
</h4>
<div class="element atStart bg<?php echo ($counter++)%2; ?>">
  <span><?php echo ($item->introtext . '...'); ?></span>
<?php if(!$params->get('title_as_link')) { ?>
<a href="<?php echo $item->link; ?>" class="readon">Читать далее...</a>
<?php } ?>
Как задать переменную ида статьи?
*

beliyadm

  • Легенда
  • 9655
  • 1659 / 66
  • Севастополь == Россия
Re: Количество комментариев
« Ответ #3 : 22.11.2011, 09:20:20 »
перед foreach сделайте
Код: php
print_r($list);
Вообще то идентификатор статьи должен быть, ведь линк строится
$item->id - необязательно, может там алиас задан
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Annn

  • Новичок
  • 6
  • 0 / 0
Re: Количество комментариев
« Ответ #4 : 22.11.2011, 09:38:35 »
перед foreach сделайте
Код: php
print_r($list);
Вообще то идентификатор статьи должен быть, ведь линк строится
$item->id - необязательно, может там алиас задан
Результат:
Код: php
Array ( [0] => stdClass Object ( [link] => index.php?option=com_content&view=article&id=7684:kuda-letit-qberkutq&catid=162:2011-01-28-06-59-24&Itemid=657 
[title] => Заголовок1 [introtext] => Текст1 [date] => JDate Object ( [_date] => 1321505779 [_offset] => 0 [_errors] =>
Array ( ) ) ) [1] => stdClass Object ( [link] => index.php?option=com_content&view=article&id=5009:zametkinachinayuschegosanitara-&catid=162:2011-01-28-06-59-24&Itemid=504
[title] => Заголовок2 [introtext] => Текст2 [date] => JDate Object ( [_date] => 1296182149 [_offset] => 0 [_errors] =>
Array ( ) ) ) [2] => stdClass Object ( [link] => index.php?option=com_content&view=article&id=5008:a-vy-stoyali&catid=162:2011-01-28-06-59-24&Itemid=503
[title] => Заголовок3 [introtext] => Текст3 [date] => JDate Object ( [_date] => 1296180058 [_offset] => 0 [_errors] => Array ( ) ) ) )
ID в пути: 7684, 5009 и 5008.
*

beliyadm

  • Легенда
  • 9655
  • 1659 / 66
  • Севастополь == Россия
Re: Количество комментариев
« Ответ #5 : 22.11.2011, 10:05:37 »
Значит нужно лезть в хелпер модуля и добавлять в массив $list ИД материала, в шаблоне он разумно не нужен и разработчики его туда не заложили
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Annn

  • Новичок
  • 6
  • 0 / 0
Re: Количество комментариев
« Ответ #6 : 22.11.2011, 11:30:05 »
Значит нужно лезть в хелпер модуля и добавлять в массив $list ИД материала...
Как добавить ид не подскажете?
*

beliyadm

  • Легенда
  • 9655
  • 1659 / 66
  • Севастополь == Россия
Re: Количество комментариев
« Ответ #7 : 22.11.2011, 11:48:42 »
покажите хелпер
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Annn

  • Новичок
  • 6
  • 0 / 0
Re: Количество комментариев
« Ответ #8 : 22.11.2011, 11:50:47 »
Код: php
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

require_once (JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');
jimport('joomla.utilities.date');

class modRokLatestNewsHelper
{
function prepareRokContent( $text, $length=200 ) {
// strips tags won't remove the actual jscript
$text = preg_replace( "'<script[^>]*>.*?</script>'si", "", $text );
$text = preg_replace( '/{.+?}/', '', $text);
// replace line breaking tags with whitespace
$text = preg_replace( "'<(br[^/>]*?/|hr[^/>]*?/|/(div|h[1-6]|li|p|td))>'si", ' ', $text );
$text = JString::substr(strip_tags( $text ), 0, $length) ;
return $text;
}

function getList(&$params)
{
global $mainframe;

$db =& JFactory::getDBO();
$user =& JFactory::getUser();
$userId = (int) $user->get('id');

$count = (int) $params->get('count', 5);
$catid = trim( $params->get('catid') );
$secid = trim( $params->get('secid') );
$show_front = $params->get('show_front', 1);
$aid = $user->get('aid', 0);

$text_length = intval($params->get( 'preview_count', 200) );

$contentConfig = &JComponentHelper::getParams( 'com_content' );
$access = !$contentConfig->get('shownoauth');

$nullDate = $db->getNullDate();
$now = date('Y-m-d H:i:s', time());

$where = 'a.state = 1'
. ' AND ( a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' )'
. ' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )'
;

// User Filter
switch ($params->get( 'user_id' ))
{
case 'by_me':
$where .= ' AND (created_by = ' . (int) $userId . ' OR modified_by = ' . (int) $userId . ')';
break;
case 'not_me':
$where .= ' AND (created_by <> ' . (int) $userId . ' AND modified_by <> ' . (int) $userId . ')';
break;
}

// Ordering
switch ($params->get( 'ordering' ))
{
case 'm_dsc':
$ordering = 'a.modified DESC, a.created DESC';
break;
case 'c_dsc':
default:
$ordering = 'a.created DESC';
break;
}

if ($catid)
{
$ids = explode( ',', $catid );
JArrayHelper::toInteger( $ids );
$catCondition = ' AND (cc.id=' . implode( ' OR cc.id=', $ids ). ')';
}
if ($secid)
{
$ids = explode( ',', $secid );
JArrayHelper::toInteger( $ids );
$secCondition = ' AND (s.id=' . implode( ' OR s.id=', $ids ). ')';
}

// Content Items only
$query = 'SELECT a.*, ' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
' FROM #__content AS a' .
($show_front == '0' ? ' LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id' : '').
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
' WHERE '. $where .' AND s.id > 0' .
($access ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
($catid ? $catCondition : '').
($secid ? $secCondition : '').
($show_front == '0' ? ' AND f.content_id IS NULL ' : '').
' AND s.published = 1' .
' AND cc.published = 1' .
' ORDER BY '. $ordering;
$db->setQuery($query, 0, $count);
$rows = $db->loadObjectList();

$i = 0;
$lists = array();
foreach ( $rows as $row )
{

                        $lists[$i]->link = ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid);
$lists[$i]->title = htmlspecialchars( $row->title );
$lists[$i]->introtext = modRokLatestNewsHelper::prepareRokContent( $row->introtext, $text_length);
$lists[$i]->date = new JDate( $row->created );
$i++;
}

return $lists;
}

}
*

Annn

  • Новичок
  • 6
  • 0 / 0
Re: Количество комментариев
« Ответ #9 : 28.11.2011, 12:09:14 »
Спасибо, beliyadm!
Решение:
Код: php
$query = 'SELECT a.*, ' .
заменить на
Код: php
$query = 'SELECT a.id as articleid, a.*, ' .
в
Код: php
foreach ( $rows as $row )
добавить элемент
Код: php
$lists[$i]->id = $row->articleid;
И далее в шаблоне оперировать $item->id.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Разрешить комментирование гостям

Автор Taatshi

Ответов: 21
Просмотров: 5135
Последний ответ 19.12.2020, 11:54:49
от Nobillis
При отсутствии вступительного текста форма комментариев не отображается

Автор ЗаголовковДом

Ответов: 2
Просмотров: 1589
Последний ответ 06.02.2018, 17:33:13
от Закулисье
Проблема с отображением комментариев

Автор mixasikus

Ответов: 2
Просмотров: 1548
Последний ответ 27.10.2017, 20:25:12
от Vikitos
[Решено] Не отображаются аватары CommunityBuilder в JComments

Автор Ishti39

Ответов: 10
Просмотров: 1996
Последний ответ 11.07.2017, 19:09:32
от warlocksp
[Решено] Не удаляются комментарии в админке. (Joomla 2.5.28, JComments 3.0.5)

Автор Esken

Ответов: 5
Просмотров: 2286
Последний ответ 08.05.2017, 17:47:54
от Esken