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

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: [решено]Количество комментариев  (Прочитано 691 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Annn
Захожу иногда
**

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

Сообщений: 6



« : 22.11.2011, 07:50:32 »

Добрый день. Пытаюсь вывести количество комментариев в mod_roklatestnews. В шаблон добавляю функцию:
Код
<?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
Профи
********

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

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


Севастополь==Россия


« Ответ #1 : 22.11.2011, 07:53:55 »

$item->id - точно там хранится ID статьи? Если сделать эхо - что покажется?
Записан
Annn
Захожу иногда
**

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

Сообщений: 6



« Ответ #2 : 22.11.2011, 08:54:58 »

$item->id - точно там хранится ID статьи? Если сделать эхо - что покажется?
Пусто.
В хэлпере модуля нашла только ид раздела и ид категории. Перерыла кучу форумов, с $item->id вроде работает у людей.
Еще кусок шаблона mod_roklatestnews:
Код
<?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
Профи
********

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

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


Севастополь==Россия


« Ответ #3 : 22.11.2011, 09:20:20 »

перед foreach сделайте
Код
print_r($list);
Вообще то идентификатор статьи должен быть, ведь линк строится
$item->id - необязательно, может там алиас задан
Записан
Annn
Захожу иногда
**

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

Сообщений: 6



« Ответ #4 : 22.11.2011, 09:38:35 »

перед foreach сделайте
Код
print_r($list);
Вообще то идентификатор статьи должен быть, ведь линк строится
$item->id - необязательно, может там алиас задан
Результат:
Код
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
Профи
********

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

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


Севастополь==Россия


« Ответ #5 : 22.11.2011, 10:05:37 »

Значит нужно лезть в хелпер модуля и добавлять в массив $list ИД материала, в шаблоне он разумно не нужен и разработчики его туда не заложили
Записан
Annn
Захожу иногда
**

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

Сообщений: 6



« Ответ #6 : 22.11.2011, 11:30:05 »

Значит нужно лезть в хелпер модуля и добавлять в массив $list ИД материала...
Как добавить ид не подскажете?
Записан
beliyadm
Профи
********

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

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


Севастополь==Россия


« Ответ #7 : 22.11.2011, 11:48:42 »

покажите хелпер
Записан
Annn
Захожу иногда
**

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

Сообщений: 6



« Ответ #8 : 22.11.2011, 11:50:47 »

Код
<?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
Захожу иногда
**

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

Сообщений: 6



« Ответ #9 : 28.11.2011, 12:09:14 »

Спасибо, beliyadm!
Решение:
Код
$query = 'SELECT a.*, ' .
заменить на
Код
$query = 'SELECT a.id as articleid, a.*, ' .
в
Код
foreach ( $rows as $row )
добавить элемент
Код
$lists[$i]->id = $row->articleid;
И далее в шаблоне оперировать $item->id.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@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