PDA

Zobacz pełną wersję : Aida News 2 - zmiana kryterium z najchętniej na ostatnio komentowane



czarna1993
29-07-2011, 11:51
Witam!
Czy ktoś może próbował przerobić moduł Aida News 2 pod kryterium "ostatnio komentowane" (Komponent JComments)? Jak to można zrobić? Lub może używacie innego modułu? Domyślny ma tę wadę, że nie pokazuje treści i obrazka artykułu, a ja chcę to uzyskać.
Tu paczka z modułami AiDa i JComments. (http://www.kalwaria.home.pl/moduly.zip)
Myślę, że trzeba zmienić jakoś zapytanie, ale nie wiem jak się do tego zabrać, a nie chcę uszkodzić

Z góry bardzo dziękuje za odpowiedź
Pozdrawiam!

headge
29-07-2011, 15:13
Nie bardzo rozumiem - wszystko o czym piszesz można ustawić w konfiguracji aidy.
Trzeba tylko pamiętać, że aby sortowanie wg komentarzy się uaktywniło to (oprócz wybrania odpowiednich opcji w konfiguracji) należy umieścić w wybranym miejscu [comments] w Layout - main setup.

czarna1993
29-07-2011, 16:47
AiDa sortuje według liczby komentarzy pod artykułem, a ja potrzebuję sortowania według czasu ostatniego komentarza.

czarna1993
01-08-2011, 17:52
Po kilkudniowej analizie udało mi się ustalić co odpowiada za sortowanie, ale niestety nie udało mi się zmienić zapytań. Czy ktoś kto zna się na MySQL mógłby pomóc?

$ctable = '#__jcomments';
$cartcol = 'object_id';
...
$oc = "(SELECT COUNT(*) FROM " . $ctable . " AS ordcom WHERE ordcom." . $cartcol . " = a.id ) AS commentdate, ";
$ordering = 'commentdate ' . $dasc;
...
$query = 'SELECT DISTINCT a.*, r.rating_count, r.rating_sum, cc.image AS catimg, cc.title AS cattle, ' . $oc .
' 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' .
$front .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
' LEFT JOIN #__content_rating AS r ON r.content_id = a.id' .
' 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).' )' .
$wauth .
' AND s.id > 0' .
($access ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
($catid ? $catCondition : '').
($secid ? $secCondition : '').
($params->get('show_front') == '0' ? ' AND f.content_id IS NULL ' : '').
' AND s.published = 1' .
' AND cc.published = 1' .
( $recent ? " AND DATEDIFF(".$db->Quote($now).", a.created) < " . $recent : '' ) .
$relnorepeat .
$relatedcond .
' ORDER BY '. $ordering;
$db->setQuery($query, $offset, $count);
$rows = $db->loadObjectList();
I z pliku modułu JComments:

$dbo = & JCommentsFactory::getDBO();

$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);
}

if (JCOMMENTS_JVERSION == '1.0') {
$now = date('Y-m-d H:i', time());
} else {
$date =& JFactory::getDate();
$now = $date->toMySQL();
}

$query = "SELECT c.id AS id, c.title AS title, c.sectionid"
. ((JCOMMENTS_JVERSION == '1.5') ? ', CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(":", c.id, c.alias) ELSE c.id END as slug' : '')
. ((JCOMMENTS_JVERSION == '1.5') ? ', CASE WHEN CHAR_LENGTH(ct.alias) THEN CONCAT_WS(":", ct.id, ct.alias) ELSE ct.id END as catslug' : '')
. "\n, COUNT(cc.id) AS comments, MAX(cc.date) AS commentdate"
. "\n FROM #__content AS c"
. "\n LEFT JOIN #__jcomments AS cc ON c.id = cc.object_id"
. "\n LEFT JOIN #__categories AS ct ON ct.id = c.catid"
. "\n WHERE c.state = 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.published = 1"
. "\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, c.title, c.sectionid"
. ((JCOMMENTS_JVERSION == '1.5') ? ", slug, catslug" : '')
. "\n ORDER BY commentdate DESC"
. "\n LIMIT " . intval( $params->get( 'count' ) )
;
$dbo->setQuery( $query );
$rows = $dbo->loadObjectList();
echo $dbo->getErrorMsg();
Proszę o pomoc i pozdrawiam!