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

Блок "самое популярное" показывает 1 новость


Walk

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

Раньше все было нормально, в блоке "самое популярное" показывались 5 тем, но сейчас, почему-то показывается только одна, и далеко не самая популярная (а только последняя). В чем может быть причина?

сайт

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

Редко обновляете на сайте новости, вот оно и показывает одну последнюю новость за этот месяц :rolleyes:

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

Walk, можно сделать, что бы популярность новостей была по просмотрам, а для этого:

Откройте engine\modules\topnews.php и найдите:

$this_month = date( 'Y-m-d H:i:s', $_TIME );


$db->query( "SELECT id, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND date >= '$this_month' - INTERVAL 1 MONTH AND date < '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10" );
Замените на:
$db->query( "SELECT id, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10" );

В конце строки цифра 10, это количество выводимых новостей.

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

n0lik

Сделал, кеш почистил, но пока все так же. Или надо подождать?

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

хм... вроде заменил, а скачал topnews еще раз - он старый, сейчас попробую изменить еще раз...

мде, теперь сайт не открывается вообще :huh:

Fatal error: Call to undefined function dle_strlen() in /home/vkontak1/public_html/engine/modules/topnews.php on line 60

Заработало... хм, что было непонятно.

n0lik

спасибо, работает.

Что-то сайт стал тормозить жутко после изменений...

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

Дело явно не в этом файле, так как я всегда (после каждого обновления) на своём сайте делаю подобное исправление и никаких проблем.

celsoft, а можно узнать, подобное исправление делает какую нибудь нагрузку на сайт? то есть больше чем по дефолту.

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

Сейчас все нормально, видимо у хостинга были какие-то проблемы.

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

celsoft, а можно узнать, подобное исправление делает какую нибудь нагрузку на сайт? то есть больше чем по дефолту.

нет, не делает

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

Walk, можно сделать, что бы популярность новостей была по просмотрам, а для этого:

Откройте engine\modules\topnews.php и найдите:...

Замените на:...

Спасибо Walk!

Только вот этот список в первую очередь(!) сортируется по кол-ву комментариев, а уже потом по кол-ву просмотров.

А можно всё же чтобы новости сортировались только(!) по кол-ву просмотров за всё время сущ. сайта?

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

А можно всё же чтобы новости сортировались только(!) по кол-ву просмотров за всё время сущ. сайта?

$db->query("SELECT id, title, date, alt_name, category, flag FROM ".PREFIX."_post WHERE approve='1' ORDER BY news_read DESC, date DESC LIMIT 0,10");

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

а как можно докрутить, что бы показывалось количество комментариев?

Вставить как модуль, либо в профиль зеров:

$sql = "SELECT SQL_NO_CACHE COUNT(*) AS count ".PREFIX."_post WHERE approve='1'";

$r = $db->super_query($sql);

$cnt = $r['count'];

echo "Комментариев на сайте: $cnt.";

unset($sql,$r,$cnt);
Если в конец запроса добавить что-то типа:
WHERE autor='Администратор'

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

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

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

нужно как-то добавить подсчет строк в базе. не получается у меня (( ошибка идет

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

подскажите пжалста ))

Есть запрос

$this_month = date( 'Y-m-d H:i:s', $_TIME );


$db->query( "SELECT id, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY comm_num DESC LIMIT 0,15" );

Как сделать, что бы подсчитывалось количество этих комментариев? Что бы было

Новость 1 - 15

Новость 2 - 10

Новость 3 - 1

Механизм обработки же количества идет. Как вытащить эту цифру?

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

да он стандартный. Поменяла только в запросе на что выводить )


-----------------------------------------------------

 Назначение: вывод рейтинговых статей

=====================================================

*/


if( ! defined( 'DATALIFEENGINE' ) ) {

	die( "Hacking attempt!" );

}


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


if( ! $topnews ) {


	$this_month = date( 'Y-m-d H:i:s', $_TIME );


	$db->query( "SELECT id, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,15" );


	while ( $row = $db->get_row() ) {


		$row['date'] = strtotime( $row['date'] );

		$row['category'] = intval( $row['category'] );


		if( $config['allow_alt_url'] == "yes" ) {


			if( $row['flag'] and $config['seo_type'] ) {


				if( $row['category'] and $config['seo_type'] == 2 ) {


					$full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";


				} else {


					$full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";


				}


			} else {


				$full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";

			}


		} else {


			$full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];


		}


		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_comments_wysiwyg'] == "yes" ) $go_page = '';


		$link = "<a {$go_page}href=\"" . $full_link . "\">" . stripslashes( $title ) . "</a>";


		$topnews .= "&raquo; " . $link . "<br />";

	}


	$db->free();

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

}

?>


спасибо, за реакцию ))

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

не проверял, но должно работать.

if( ! defined( 'DATALIFEENGINE' ) ) {

        die( "Hacking attempt!" );

}


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


if( ! $topnews ) {


        $this_month = date( 'Y-m-d H:i:s', $_TIME );


        $db->query( "SELECT id, title, date, alt_name, category, flag, comm_num FROM " . PREFIX . "_post WHERE approve='1' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,15" );


        while ( $row = $db->get_row() ) {


                $row['date'] = strtotime( $row['date'] );

                $row['category'] = intval( $row['category'] );


                if( $config['allow_alt_url'] == "yes" ) {


                        if( $row['flag'] and $config['seo_type'] ) {


                                if( $row['category'] and $config['seo_type'] == 2 ) {


                                        $full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";


                                } else {


                                        $full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";


                                }


                        } else {


                                $full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";

                        }


                } else {


                        $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];


                }


                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_comments_wysiwyg'] == "yes" ) $go_page = '';


                $link = "<a {$go_page}href=\"" . $full_link . "\">" . stripslashes( $title ) . " - (".$row['comm_num'].")</a>";


                $topnews .= "&raquo; " . $link . "<br />";

        }


        $db->free();

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

}

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

в файле engine/modules/topnews.php

найдите строку

$db->query( "SELECT id, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND date >= '$this_month' - INTERVAL 1 MONTH AND date < '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10" );

	
замените ее на
$db->query( "SELECT id, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND date >= '$this_month' - INTERVAL 7 DAY AND date < '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10" );

	

Будет выводить за семь дней. Я правда не уверен, впервые такое делаю....

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

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

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