Перейти к публикации

Рекомендованные сообщения

Как сделать вывод популярных новостей из определённых категорий?

Нашёл на 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 .= "&raquo; ".$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
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

У меня возникла проблема вроде бы код верно работает, но формируются не ЧПУ ссылки на полные новости , хотя ЧПУ включено

../?newsid=69

но если перейти на любую страницу например статистическую, то после этого в блоке популярных новостей ссылки на полные новости не верно отображаются

т.е.

страница статистическая /static/montaj.html

Нажимаю любую новость из блока популярных

и к пути статистической страницы прибовляется /static/montaj.html?newsid=91

Вообщем очень надо чтоб новости только определенных категорий выводились

Что то вообще не понятно код функции такой же практически как и в файле topnews.php

но почему же такая чехорда с ссылками на полные новости :blink:

Изменено пользователем Zyf
Ссылка на сообщение
Поделиться на других сайтах
  • 9 месяцев спустя...

А где кеширование убрать?

Все добил кажется.

у меня работает

_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 .= "&raquo; ".$link."<br />";

}

$db->free();

create_cache ("topnews_" . $custom_category, $topnews, $config['skin']);

}

return $topnews;

}

Ссылка на сообщение
Поделиться на других сайтах

Теперь идем дальше :)

как бы теперь прикрутить к каждой топ новости присвоенную картинку?

Может кто то вразумительно разъяснит

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...