Вячеслав 0 Опубликовано: 2 августа 2007 Рассказать Опубликовано: 2 августа 2007 Как сделать вывод популярных новостей из определённых категорий? Нашёл на 4dle: в index.php перед $config['http_home_url'] = reset(explode("index.php", $_SERVER['PHP_SELF'])); добавляем if ( stristr( $tpl->copy_template, "{topnews" ) ) { $tpl->copy_template = preg_replace( "#\\{topnews category=['\"](.+?)['\"]\\}#ies", "topnews_print('\\1')", $tpl->copy_template ); } и в файле engine/modules/functions.php добавляем функцию function topnews_print ($custom_category){ global $db; $custom_category = $db->safesql(str_replace(',', '|', $custom_category)); if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } $topnews = dle_cache("topnews", $config['skin']); if (!$topnews) { $this_month = date ('Y-m-d', time()-(3600*24*27)); $db->query("SELECT id, title, date, alt_name FROM " . PREFIX . "_post WHERE approve='1' AND category regexp '[[:<:]]($custom_category)[[:>:]]' AND date >= '$this_month'AND date < '$this_month' + INTERVAL 1 MONTH ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10"); while($row = $db->get_row()){ $row['date'] = strtotime($row['date']); if (strlen($row['title']) > 55) $title = substr ($row['title'], 0, 55)." ..."; else $title = $row['title']; $go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " : ""; if ($config['allow_alt_url'] == "yes") $link = "<a {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/', $row['date']).$row['alt_name'].".html\">".stripslashes($title)."</a>"; else $link = "<a {$go_page}href=\"$PHP_SELF?newsid=".$row['id']."\">".stripslashes($title)."</a>"; $topnews .= "» ".$link."<br />"; } $db->free(); create_cache ("topnews", $topnews, $config['skin']); } return $topnews; } популярные новости выводим тегом {topnews category="ID категории"} В шаблоне вывожу тегом три блока: {topnews category="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30"}, {topnews category="31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50"} , {topnews category="60,61,62,63,64,65,66,67,68,69,70,71,72"} из нескольких категорий, но выводятся не популярные новости, а просто новости причём во всех блоках одинаковые. Прошу сильно не пинать т.к. в php практически ничего не понимаю... Цитата Ссылка на сообщение Поделиться на других сайтах
kenpark 0 Опубликовано: 4 августа 2007 Рассказать Опубликовано: 4 августа 2007 (изменено) нужно просто убрать кеширование... а при желании его можно и включить... Изменено 4 августа 2007 пользователем kenpark Цитата Ссылка на сообщение Поделиться на других сайтах
red_heads 1 Опубликовано: 3 октября 2007 Рассказать Опубликовано: 3 октября 2007 (изменено) У меня возникла проблема вроде бы код верно работает, но формируются не ЧПУ ссылки на полные новости , хотя ЧПУ включено ../?newsid=69 но если перейти на любую страницу например статистическую, то после этого в блоке популярных новостей ссылки на полные новости не верно отображаются т.е. страница статистическая /static/montaj.html Нажимаю любую новость из блока популярных и к пути статистической страницы прибовляется /static/montaj.html?newsid=91 Вообщем очень надо чтоб новости только определенных категорий выводились Что то вообще не понятно код функции такой же практически как и в файле topnews.php но почему же такая чехорда с ссылками на полные новости Изменено 3 октября 2007 пользователем Zyf Цитата Ссылка на сообщение Поделиться на других сайтах
subtek 0 Опубликовано: 9 июля 2008 Рассказать Опубликовано: 9 июля 2008 А где кеширование убрать? Все добил кажется. у меня работает _http://videodesign.kiev.ua index.php if ( stristr( $tpl->copy_template, "{topnews" ) ) { $tpl->copy_template = preg_replace( "#\\{topnews category=['\"](.+?)['\"]\\}#ies", "topnews_print('\\1')", $tpl->copy_template ); } functions.php $topnews = dle_cache("topnews_" . $custom_category, $config['skin']); if (!$topnews) { $this_month = date ('Y-m-d', time()-(3600*24*27)); $db->query("SELECT id, title, date, alt_name FROM " . PREFIX . "_post WHERE approve='1' AND category regexp '[[:<:]]($custom_category)[[:>:]]' AND date >= '$this_month'AND date < '$this_month' + INTERVAL 1 MONTH ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10"); while($row = $db->get_row()){ $row['date'] = strtotime($row['date']); if (strlen($row['title']) > 55) $title = substr ($row['title'], 0, 55)." ..."; else $title = $row['title']; $go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " : ""; if ($config['allow_alt_url'] == "yes") $link = "<a {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/', $row['date']).$row['alt_name'].".html\">".stripslashes($title)."</a>"; else $link = "<a {$go_page}href=\"$PHP_SELF?newsid=".$row['id']."\">".stripslashes($title)."</a>"; $topnews .= "» ".$link."<br />"; } $db->free(); create_cache ("topnews_" . $custom_category, $topnews, $config['skin']); } return $topnews; } Цитата Ссылка на сообщение Поделиться на других сайтах
subtek 0 Опубликовано: 9 июля 2008 Рассказать Опубликовано: 9 июля 2008 Теперь идем дальше как бы теперь прикрутить к каждой топ новости присвоенную картинку? Может кто то вразумительно разъяснит Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.