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

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

  • 2 недели спустя...
  • 4 месяца спустя...

народ, надо topnews для выборочных категорий

код указанный на 1 стрпницы темы не работает, т.е. выводит только из одной категории

$sql_result = $db->query("SELECT id, title, date, alt_name FROM " . PREFIX . "_post WHERE approve='1' AND category regexp '[[:<:]](4)[[:>:]]' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10");

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

Присоединяюсь к вопросу - тема актуальна.

Версия 5.7

А как обрабатываются шаблонные теги? Надо сделать чтоб в шаблонах можно было вставлять

{topnews category="1"}

...

{topnews category="2"}

...

{topnews category="3"}

...

{topnews category="4"}

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

тк...сматри как я пробывал...(с пхп ток знакомлюсь...)

пытался по аналогии с {custom}...

в index.php добавил:


	if ( stristr( $tpl->copy_template, "{topnews" ) ) {


		$tpl->copy_template = preg_replace( "#\\{topnews category=['\"](.+?)['\"]\\}#ies", "topnews_print('\\1','{$categ}')", $tpl->copy_template );


	}
*ну как я это понимаю, то условие проверяет истаннисть существования "{topnews" на странице...если это так, то функция preg_replace заменяет строку {topnews category="ID"} на значение функции topnews_print...если че не так понимаю, то исправляйте пожалуйсто... потом в /engine/modules/functions.php добавляю функцию:
function topnews_print ($topnews,$categ){	

	global $id,$topnews,$db,$this_month,$title,$link;	

$topnews = dle_cache("topnews", $config['skin']);


if (!$topnews) {	


	$categ_lala = "category = '$categ'";

	$this_month = date ('Y-m-d', time()-(3600*24*30));



	$db->query("SELECT id, category, title, date, alt_name FROM " . PREFIX . "_post WHERE approve='1' AND $categ_lala 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();

	return $topnews;

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



}

*ну здесь просто делается запрос, учитывая нужные категории...

ну эт код с topnews.php...не знаю пральна ли...по стравнению с {custom}, то там функция custom_print сначала делает запрос, а потом инклудит /modules/show.custom.php...

вообщем, если кто-то понимает, что я хотел сделать, то тыцните пальцем, что делаю не так:)

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

Как выводить новости на за последний месяц? А за все время.... Обновил двиг опция пропала куда-то раньше все работало где там править надо topnews.php ?

Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...
  • 2 месяца спустя...

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

Попробуй такой запрос :

$sql_result = $db->query("SELECT id, title, date, alt_name FROM " . PREFIX . "_post WHERE approve='1' AND category regexp '[[:<:]](4)[[:>:]]' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10");

Работает)

Пасиба :)

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

А что такое "up" ?

Ссылка на сообщение
Поделиться на других сайтах
:D а я-то все думал, что значит "поднять"?? теперь знаю - это значит, получить шлепок под зад ))))
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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