CMS

Ошибка в модуле Архивы (архив новостей) Joomla

Понадобилось сделать архив новостей.
Решил поиграться с "перекидыванием" новостей в архив.
Возился сегодня полдня - всё никак не получалось 
А "получалось" вот что - список по датам выводится (т.е., система находит-таки записи в архиве), но при нажатии на ссылке получаем следующий текст:
В настоящее время архивных записей в этой категории не существует. Попробуйте зайти позже.

В итоге пришлось начать ковырять код - вот, что обнаружил в /components/com_content/content.php:

function showArchiveCategory(...) {
...
$query = "SELECT a.id"
. " FROM #__content as a"
. " WHERE a.state = -1"
. $check
;
$database->setQuery( $query );
$items = $database->loadObjectList();
$archives = count( $items );

далее вставляем дамп var_dump($database->getQuery()). смотрим:

SELECT a.id
 FROM jos_content as a
 WHERE a.state = -1
 AND a.catid = 1

заглядываю в таблицу jos_content ("архивная" запись одна) - а там... catid=3
соответственно записей - нуль...

и такая ситуация как в 1.0.3, так и в 1.0.5

----------------------------------
оказалось, что текущий catid в $check меняется в зависимости от того, какое меню выбрано.
налицо явный глюк.
к сожаленю, удаление $check из запроса на результат не влияет... надо ещё копать...

поправьте меня, если я не прав.... 
Я этот глючем давно видел, но не разбирался с ним по причине отсутствия времени

цитата из: AndyR на Январь 18, 2006, 01:41:47 am
ну что жжж.. выкрутился пока что.
только мне всё равно не нравится подход к выводу архива...

пока решение такое:
/includes/sef.php
...
if ( (eregi('option=com_content',$string) || eregi('option=content',$string) ) && !eregi('task=new',$string) && !eregi('task=edit',$string) ) {
заменить на
if ( (eregi('option=com_content',$string) || eregi('option=content',$string) ) && !eregi('task=archivecategory',$string) && !eregi('task=new',$string) && !eregi('task=edit',$string) ) {

при выключенном SEF-е вроде всё работает нормально.

есть и второй вариант:
в /modules/mod_archive.php убрать SEF-преобразование relative в absolute
вместо
$link = sefRelToAbs('index.php?option=com_content&task=archivecategory&Itemid='. $Itemid .'&year='. $created_year .'&month='. $created_month .'&module=1');
написать
$link = 'index.php?option=com_content&task=archivecategory&Itemid='. $Itemid .'&year='. $created_year .'&month='. $created_month .'&module=1';

зы. возможно, это и решение(я), но только это больше похоже на затыкание дыры в SEF-е - он "не распознаёт" get-ы YEAR, MONTH, MODULE (возможно, что-то ещё) в $_REQUEST-е
я переделал mod_archive.php:
сделана правильная группировка по месяцу (раньше выводился месяц и год, но реально группировка была по полной дате)

defined( '_VALID_MOS' ) or die( 'Доступ запрещён' );

$count = intval( $params->def( 'count', 10 ) );
$query = "SELECT MONTH( created ) AS created_month, YEAR(created) AS created_year"
. " FROM #__content"
. " WHERE ( state = -1 AND checked_out = 0 AND sectionid > 0 )"
. " GROUP BY created_year DESC, created_month DESC"
. " LIMIT $count"
;
$database->setQuery( $query );
$rows = $database->loadObjectList();
?>
<ul>
<?php
foreach ( $rows as $row ) {
   $created_month    = mosFormatDate ( $row->created_month, "%m" );
   $created_year    = mosFormatDate ( $row->created_year, "%Y" );
   $month_dig      = (($created_month<10)?'0':'').$created_month;
   $month_name    = mosFormatDate ( $created_year."-".$month_dig."-01 00:00:00", "%B" );

   $link         = 'index.php?option=com_content&amp;task=archivecategory&amp;year='. $created_year .'&amp;month='. $created_month .'&amp;module=1';
   $link         = sefRelToAbs( $link );
   $text         = $month_name .', '. $created_year;
   ?>
   <li>
      <a href="<?=$link;?>"><?=$text;?></a>
   </li>
   <?php
}
?>
</ul>
зы. с архивом разобрался, кое-что сделал.
обидно, что это всё равно не то, что мне надо было...
может, кому пригодится?
 
Добрый день! Очень рад что, нашелся человек который тоже заинтересовался этим вопросом, я перерыл кучу информации. на разных сайтах-  та же проблема  и в других версия мамбы не только в джомле,  такое ощущение, что никому возможность нормального полноценного архива вообще не нужна.  Файловый архив- это другой вопрос  компоенты и модули календарей, удобны по своему - но это тоже не архив- опционально.  В принципе можно поробовать написать модуль для компонента content-view. Не ввиде календаря а виде архива, но оптья же этоне совсем то...

Я не очень силен к сож в программировании на пхп, но суть понимаю, знаю что такое sql - , тоже пытался ковырять архив но знаний и терпения не хватило.

я ещен е видел собственно нигде на сайтах или примерах mambo как вообще должен нормально работать архив?
Т.е. может ли он выводить новости в принципе, отсортированыене только по дате но и по категориям хотябы. чтобы это все в куче не валялось? Если вы еще занимаетесь этим вопросом буду рад с вами обсудить и вложить свое посильное участие в эту проблему...
icq 160090024
меня бы устроил архив, при условии, что по истечении даты публикации новость переносилась бы в архив автоматически.
если есть такой бот - подскажите.
нет - значит, напишу сам

зы. а эта тема ещё кому-то интересна?
цитата из: userxp на Январь 31, 2006, 11:31:33 am
цитата из: AndyR на Январь 31, 2006, 11:51:04 am
Я нашел ссылку по тому как автоматически убиратьновости с фронтенда,  это не помещение их в архив но все равно возможно вам это немного поможет
http://ru-mambo.ru/smf/index.php/topic,11238.0.html

Вы можете дать ссылку на ваш сайт посомтреть как у вас архив работает?
за ссылку пасиба, почитаем, хотя это и не совсем то  ,
ибо упомянутая проблема решается без вмешательства в код...
во-первых, ограничение кол-ва статей на фронтпейдже,
во-вторых, сроком действия.

цитата из: vitema на Январь 31, 2006, 01:40:34 pm
тю.. я посмотрел базу - оказалось, что написать такой бот как два пальца обосфальт
даж стыдно как-то стало 
если будет сегодня свободное время, то сделаю, а то с этим по-сложнее 

-----------------------------------------
в общем так: есть aplha-версия для J1.0.х (такой-себе драфтик)
пока без настроечных переменных (они есть, но в работе кода не учтены)
ну и не UTF-8 пока что
зато ещё есть пару идей для увеличения функционала
 

зы. файл сохранить и переименовать в .zip 
 archive mover.txt (1.51 KB - загружено 5 раз.)