Доброе время суток, Уважаемые! Описываю проблему с которой столкнулся. И свято верю избавится с Вашей помощью. ^-^ Есть как минимум 2 компонента, которые группируют созданные материалы по датам (mod_k2_tools и mod_articlebydates). Удивляет, что компоненты написаны обособленно друг от друга, но болячка одна и та же. А именно: при создании материалов (статей, новостей) с 00-00 часов до 03-00 часов 22 мая (для Москвы) эти материалы добавятся к группе материалов созданных 21 мая (то есть днём ранее). Соответственно я догоняю, что это происходит из-за того, что происходит группировка по датам в базе данных, которые указаны по Гринвичу. Соответственно, надо как-то прибавлять к извлекаемой дате (в моём случае это "publish_up") из базы 3 часа... Все возможные способы, которые подсказывал Google не помогают. p.s. Ноль в php и mysql, но методом тыка чаще всего достигаю поставленной задачи. p.p.s Поиск по сайту результатов не дал. Код хелпера mod_articlebydates Код (PHP): <?php defined('_JEXEC') or die('Direct Access to this location is not allowed.'); class ModArticleByDates { public function getArticles($args){ $db = &JFactory::getDBO(); $nullDate = $db->getNullDate(); $date =& JFactory::getDate(); $now = $date->toMySQL(); $category_id = $args['category_id']; $no_of_items_select = $args['no_of_items_select']; $no_of_chars = $args['no_of_chars']; $order_by = $args['order_by']; $query = "select cn.id, ca.alias as catalias, cn.alias as conalias, "; $query .= "if (length(cn.title)>".$no_of_chars; $query .= ",concat(substring(cn.title,1,".$no_of_chars."),'...'), "; $query .= "cn.title) as title, "; $query .= "publish_up "; $query .= "from #__content as cn , "; $query .= "#__categories as ca "; $query .= "where cn.catid in (".$category_id.")"; $query .= " and state = 1 and ca.id=cn.catid "; $query .= ' and ( publish_up = '.$db->Quote($nullDate).' or publish_up <= '.$db->Quote($now).' )'; $query .= ' and ( publish_down = '.$db->Quote($nullDate).' or publish_down >= '.$db->Quote($now).' )'; $query .= " order by publish_up ".$order_by; $query .= " limit ".$no_of_items_select; $db->setQuery($query, $limitstart, $count); $rows = $db->loadObjectList(); $items = ($items = $db->loadObjectList())?$items:array(); }
Решено: в файле tmpl/default.php Вместо: Код (PHP): $article_date = $item->publish_up; вставляем: Код (PHP): $article_date = date('d.m.Y H:i:s', strtotime($item->publish_up) + 3 * 60 * 60);