Akela 9 Опубликовано: 26 марта 2007 Рассказать Опубликовано: 26 марта 2007 (изменено) Решил вот написать небольшой хак для вывода новостей в виде ленты (дайджест). Желающие протестировать смело могут писать тут о замеченных ошибках или проблемах (а также перепечатывать на сайтах поддержки DataLife Engine ). Список изменений : ----------------------- 1. В файле \.htaccess после строк # вывод непрочитанных статей RewriteRule ^newposts(/?)+$ index.php?subaction=newposts [L] RewriteRule ^newposts/page/([0-9]+)(/?)+$ index.php?subaction=newposts&cstart=$1 [L] вставляем строки # вывод дайджеста новостей RewriteRule ^digest(/?)+$ index.php?subaction=digest [L] RewriteRule ^digest/page/([0-9]+)(/?)+$ index.php?subaction=digest&cstart=$1 [L] 2. В файле \language\Russian\adminpanel.lng после строки 'charset' => "windows-1251", вставляем строки // digest hack 'opt_sys_digestc' => "Количество новостей в дайджесте", 'opt_sys_digestd' => "Количество заголовков новостей, которое будет выводиться на страницу дайджеста", // digest hack 3. В файле \language\Russian\website.lng после строки 'charset' => "windows-1251", вставляем строки // digest hack 'title_digest' => "Лента (дайджест) новостей", // digest hack 4. В файле \engine\engine.php a) после строк if ($cstart < 0) $cstart = 0; $CN_HALT = FALSE; вставляем строку $CACHE_NAME = "news"; б) ПЕРЕД строками else { // ################ Новости на главной ################# вставляем строки // ################ Вывод digest новостей ################# elseif ($subaction == 'digest') { $config['news_number'] = intval($config['digest_number']); if ($cstart){ $cstart = $cstart - 1; $cstart = $cstart * $config['news_number']; } $url_page = $config['http_home_url']."digest"; $sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, approve, rating, vote_num, news_read FROM " . PREFIX . "_post WHERE {$stop_list}approve = '1'".$where_date." ORDER BY ".$config['news_sort']." ".$config['news_msort']." LIMIT ".$cstart.",".$config['news_number']; $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve = '1'".$where_date; $CACHE_NAME = "news_digest"; } c) вместо строки if ($cache_id < 8 AND !isset($_POST['login'])) $active = dle_cache("news", $config['skin'].$cache_id.$month.$year.$category, true); else $active = false; вставляем строку if ($cache_id < 8 AND !isset($_POST['login'])) $active = dle_cache($CACHE_NAME, $config['skin'].$cache_id.$month.$year.$category, true); else $active = false; d) вместо строки if ($news_found AND $cache_id < 8) create_cache("news", $tpl->result['content'], $config['skin'].$cache_id.$month.$year.$category, true); вставляем строку if ($news_found AND $cache_id < 8) create_cache($CACHE_NAME, $tpl->result['content'], $config['skin'].$cache_id.$month.$year.$category, true); e) после строки elseif ($subaction == 'newposts') $nam_e=$lang['title_new']; вставляем строку elseif ($subaction == 'digest') $nam_e=$lang['title_digest']; 5. В файле \engine\inc\options.php после строки showRow($lang['opt_sys_newc'], $lang['opt_sys_newd'], "<input class=edit type=text style=\"text-align: center;\" name='save_con[news_number]' value=\"{$config['news_number']}\" size=10>"); вставляем строки // digest hack showRow($lang['opt_sys_digestc'], $lang['opt_sys_digestd'], "<input class=edit type=text style=\"text-align: center;\" name='save_con[digest_number]' value=\"{$config['digest_number']}\" size=10>"); // digest hack 6. В файле \engine\modules\show.short.php a) после строки if (isset($view_template) AND $view_template == "rss") $tpl->load_template('rss.tpl'); вставляем строку elseif ($subaction == "digest") $tpl->load_template('digest.tpl'); б) после строки $sql_result = $db->query($sql_select); вставляем строку $lastrowdate = ''; c) после строки $row['date'] = strtotime($row['date']); вставляем строки // digest Hack if ($subaction == 'digest') { $rowdate = date ("d/m/Y", $row['date']); $rowtime = date ("H:i", $row['date']); $tpl->set('{digest-time}', $rowtime); if ($lastrowdate != $rowdate) { $lastrowdate = $rowdate; $tpl->set('[digest-date]',""); $tpl->set('[/digest-date]',""); if ($config['allow_alt_url'] == "yes") $tpl->set('{digest-date}',"<a href=\"".$config['http_home_url'].date('Y/m/d/', $row['date'])."\">{$rowdate}</a>"); else $tpl->set('{digest-date}',"<a href=\"$PHP_SELF?year=".date('Y/', $row['date'])."&month=".date('m/', $row['date'])."&day=".date('d/', $row['date'])."\">{$rowdate}</a>"); } else { $tpl->set_block("'\\[digest-date\\](.*?)\\[/digest-date\\]'si",""); } } // digest Hack 7. Создаем НОВЫЙ файл \templates\<шаблон>\digest.tpl и вставляем в него строки [digest-date]<div class="digestdate">{digest-date}</div>[/digest-date] <div align="left" class="digesttext">{digest-time} [full-link]<b>{title}</b>[/full-link]<span class="digest"> :: <b>{author}</b> :: [com-link]({comments-num})[/com-link]</span></div> 8. Стили digestdate, digesttext и digest можно определить на свой вкус и цвет в файле \templates\<шаблон>\css\style.css. 9. Заходим в админ-панель и в основных настройках ставим значение "Количество новостей в дайджесте". 10. Теперь можно вызывать страничку дайджеста так : без ЧПУ - http://<site>/index.php?subaction=digest с ЧПУ - http://<site>/digest/ Изменено 26 марта 2007 пользователем Akela 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Akela 9 Опубликовано: 26 марта 2007 Рассказать Опубликовано: 26 марта 2007 Автор Да, забыл написать, где можно посмотреть это в работе - http://www.natahaus.ru/digest/ Цитата Ссылка на сообщение Поделиться на других сайтах
Omnesis 0 Опубликовано: 26 марта 2007 Рассказать Опубликовано: 26 марта 2007 А можно как то сделать чтоб выводились последние новости определённой категории в блоке? Цитата Ссылка на сообщение Поделиться на других сайтах
Akela 9 Опубликовано: 26 марта 2007 Рассказать Опубликовано: 26 марта 2007 Автор Можно, используя стандартный тэг движка [custom]. Цитата Ссылка на сообщение Поделиться на других сайтах
nickon 0 Опубликовано: 26 марта 2007 Рассказать Опубликовано: 26 марта 2007 а также перепечатывать на сайтах поддержки DataLife Engine перепечатали Цитата Ссылка на сообщение Поделиться на других сайтах
Omnesis 0 Опубликовано: 26 марта 2007 Рассказать Опубликовано: 26 марта 2007 Я уже пробовал вывести новости с тегом {custom} но ничего невыходит... Писал в main.tpl {custom category="2" template="movie" aviable="global" from="0" limit="10" cache="yes"} А в шалоне "movie" стандартны теги как и в short story ничего невыводилось Версия 5.5 Цитата Ссылка на сообщение Поделиться на других сайтах
FiJer 1 Опубликовано: 4 апреля 2007 Рассказать Опубликовано: 4 апреля 2007 А что можно сделать, что бы использовать этот хак не для http://<site>/digest/, а для некоторых категорий? Цитата Ссылка на сообщение Поделиться на других сайтах
Akela 9 Опубликовано: 19 апреля 2007 Рассказать Опубликовано: 19 апреля 2007 Автор Работает в версии 5.7 без каких либо изменений. Цитата Ссылка на сообщение Поделиться на других сайтах
Stude_nt 0 Опубликовано: 19 апреля 2007 Рассказать Опубликовано: 19 апреля 2007 Akela, СПАСИБО, что сказал Кратенько, но темотично! Цитата Ссылка на сообщение Поделиться на других сайтах
mbuild 5 Опубликовано: 30 апреля 2007 Рассказать Опубликовано: 30 апреля 2007 (изменено) Спасибо, реально полезный модуль, но обнаружил один баг. Если новости присвоить будущее время (документированная особенность движка), что бы она автоматом опубликовалась на сайте в определенное время, то в ленте новостей она всё равно появляется сразу после сохранения. Причем время перед новостью выставляется правильно (будущее). Как это можно исправить, чтобы новость в ленте не появлялась до указанного времени? Изменено 30 апреля 2007 пользователем mbuild Цитата Ссылка на сообщение Поделиться на других сайтах
NoBoddy 0 Опубликовано: 30 апреля 2007 Рассказать Опубликовано: 30 апреля 2007 по мне наоборот, лучше чтоб появлялась, так мб поисковики быстрее проиндексируют =) Цитата Ссылка на сообщение Поделиться на других сайтах
Akela 9 Опубликовано: 30 апреля 2007 Рассказать Опубликовано: 30 апреля 2007 Автор Спасибо, реально полезный модуль, но обнаружил один баг. Если новости присвоить будущее время (документированная особенность движка), что бы она автоматом опубликовалась на сайте в определенное время, то в ленте новостей она всё равно появляется сразу после сохранения. Причем время перед новостью выставляется правильно (будущее). Как это можно исправить, чтобы новость в ленте не появлялась до указанного времени? А эти новости отмечены как прошедшие модерацию и при этом не видны на главной странице ? Странно, что-то тут не то, или были сторонние изменения в файле engine.php. Цитата Ссылка на сообщение Поделиться на других сайтах
mbuild 5 Опубликовано: 1 мая 2007 Рассказать Опубликовано: 1 мая 2007 Да, на главной не видны, в разделе не видны, в ленте видны. Это-то и обидно. Сразу теряется весь смысл выкладывания новостей по времени, а так нужно Никаких сторонних изменений в файле engine.php не производилось. Может кто-нибудь, у кого установлен этот мод, попробует повторить эту операцию. Если такой проблемы нет, значит дело в моих кривых руках. Хотя вроде всё проверял несколько раз. Спасибо за проявленный интерес к данному вопросу С уважением, Михаил. Цитата Ссылка на сообщение Поделиться на других сайтах
mbuild 5 Опубликовано: 3 мая 2007 Рассказать Опубликовано: 3 мая 2007 Проблема решилась после установки лизензионной версии 5.7 Цитата Ссылка на сообщение Поделиться на других сайтах
Akela 9 Опубликовано: 3 мая 2007 Рассказать Опубликовано: 3 мая 2007 Автор Никаких сторонних изменений в файле engine.php не производилось. Ага, а то что нуллер там поменял, это типа "дела святого духа" ? Цитата Ссылка на сообщение Поделиться на других сайтах
makarov 0 Опубликовано: 4 июня 2007 Рассказать Опубликовано: 4 июня 2007 а как сделать вывод модуля на главной (в контенте или рядом с ним) Цитата Ссылка на сообщение Поделиться на других сайтах
gopal 0 Опубликовано: 4 июня 2007 Рассказать Опубликовано: 4 июня 2007 а для 5.7 версии работает? Цитата Ссылка на сообщение Поделиться на других сайтах
Akela 9 Опубликовано: 4 июня 2007 Рассказать Опубликовано: 4 июня 2007 Автор а для 5.7 версии работает? Сообщение #9 Цитата Ссылка на сообщение Поделиться на других сайтах
csx 0 Опубликовано: 4 июня 2007 Рассказать Опубликовано: 4 июня 2007 Цитата Ссылка на сообщение Поделиться на других сайтах
SerNosi 0 Опубликовано: 6 июня 2007 Рассказать Опубликовано: 6 июня 2007 только что установил на 6.0 все работает! автору гран-мерси!!! Цитата Ссылка на сообщение Поделиться на других сайтах
alukart2 0 Опубликовано: 10 июня 2007 Рассказать Опубликовано: 10 июня 2007 В версии 6,0 у меня не пашет вообще ничего ни ошибок и не работает - как будто ничего и не ставил Цитата Ссылка на сообщение Поделиться на других сайтах
h0ttab 0 Опубликовано: 30 июня 2007 Рассказать Опубликовано: 30 июня 2007 (изменено) не прочел конец Изменено 30 июня 2007 пользователем h0ttab_cth Цитата Ссылка на сообщение Поделиться на других сайтах
alukart2 0 Опубликовано: 5 июля 2007 Рассказать Опубликовано: 5 июля 2007 (изменено) нет не пашет в 6,0 пробывал и на 2- ой сайт Изменено 5 июля 2007 пользователем alukart2 Цитата Ссылка на сообщение Поделиться на других сайтах
SerNosi 0 Опубликовано: 6 июля 2007 Рассказать Опубликовано: 6 июля 2007 у меня на 6ке без проблем работает Цитата Ссылка на сообщение Поделиться на других сайтах
kazbek 0 Опубликовано: 6 июля 2007 Рассказать Опубликовано: 6 июля 2007 Ё, зимляки. А что такое ДЖЕСТ? Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.