• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

[help] Реализация вывода новостей на 6.7

  • Автор темы Хортица
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Х

Хортица

Прохожие
attachment.php


Подскажите пожалуйста как реализовать такой вывод новостей?

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

Вложения

  • 14.jpg
    14.jpg
    73,5 KB · Просмотры: 151
Тебе делать на ajax ? А так модуль простенький. Завтра прийду с бильярда обезательно зделаю по просбе Хортыця :)
 
Так такой модуль уже есть, точно видел...ща гляну потом кину ссылку
 
Такое решение было предложено на 4дле:

Описание: Хак позволяет сортировать посты по: РЕЙТИНГУ / ПОСЕЩАИМОСТИ / САМЫЕ КОММЕНТИРУЕМЫЕ
Возможности: Пролистывание, просмотр любой страници в отсортированном порядке.

Установка

Oткрываем файл engine/engine.php
Ищем:

$sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, flag FROM " . PREFIX . "_post WHERE {$stop_list}approve = '1' AND allow_main = '1'".$where_date." ORDER BY fixed desc, ".$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' AND allow_main = '1'".$where_date;

Вместо этого вставляем :

if (isset($_GET['rating']) && $_GET['rating'] != "")
{
$config['allow_cache'] = false;
$addsql = "ORDER BY rating DESC, ".$config['news_sort']." ".$config['news_msort']."";
$url_page = $config['http_home_url']."ratingorder";
}
else
if (isset($_GET['mostcomment']) && $_GET['mostcomment'] != "")
{
$config['allow_cache'] = false;
$addsql = "ORDER BY comm_num DESC, ".$config['news_sort']." ".$config['news_msort']."";
$url_page = $config['http_home_url']."commorder";
}
else
if (isset($_GET['mostread']) && $_GET['mostread'] != "")
{
$config['allow_cache'] = false;
$addsql = "ORDER BY news_read DESC, ".$config['news_sort']." ".$config['news_msort']."";
$url_page = $config['http_home_url']."readorder";
}
else
if(!isset($_GET['rating']) and !isset($_GET['mostcomment']) and !isset($_GET['mostread']))
$addsql = "ORDER BY fixed desc, ".$config['news_sort']." ".$config['news_msort']."";

$sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, flag FROM " . PREFIX . "_post WHERE {$stop_list}approve = '1' AND allow_main = '1'".$where_date." ".$addsql." LIMIT ".$cstart.",".$config['news_number'];
$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve = '1' AND allow_main = '1'".$where_date;

откройте файл .htaccess в корне сайта и после строки RewriteEngine On, добавьте следующие строки:

# order by
RewriteRule ^ratingorder(/?)+$ index.php?rating=1 [L]
RewriteRule ^ratingorder/page/([0-9]+)(/?)+$ index.php?rating=1&cstart=$1 [L]
RewriteRule ^commorder(/?)+$ index.php?mostcomment=1 [L]
RewriteRule ^commorder/page/([0-9]+)(/?)+$ index.php?mostcomment=1&cstart=$1 [L]
RewriteRule ^readorder(/?)+$ index.php?mostread=1 [L]
RewriteRule ^readorder/page/([0-9]+)(/?)+$ index.php?mostread=1&cstart=$1 [L]

Oткрываем файл templates/default/main.tpl
Ищем:

{speedbar}

После вставляем :

[aviable=main]<div style=" padding-right:10px; float:right;"> сортировать посты по: <a href="/ratingorder/">РЕЙТИНГУ</a> | <a href="/readorder/">ПОСЕЩАИМОСТИ</a> | <a href="/commorder/">САМЫЕ КОММЕНТИРУЕМЫЕ</a> </div>
<br />[/aviable]

Если это не совсем то, что нужно, тогда сорри.:ah:

Оригинальная ссылка:
 
Это хорошо...Только не работает в категориях...
 
Это хорошо...Только не работает в категориях...

Вот Для просмотра ссылки Войди или Зарегистрируйся посмотри. PoMaH там написал, как это можно сделать, только я его мало понимаю (транслит+никаких, толком, объяснений). Может пригодится.

P.S. А вот если кто сделает на ajax - действительно будет супер.
 
Жаль.:confused:
Я не специалист в пхп. А с выключенным чпу тоже не работает?
 
Готов заплатить за доработку этого хака, чтобы такой вывод можно было реализовать и во всех категориях сайта.
 
Готов заплатить за доработку этого хака, чтобы такой вывод можно было реализовать и во всех категориях сайта.

Ну это хорошо, а вообще всё гораздопроще, достаточно изменить запрос, который отвечает за вывод новостей в том случае который нам нужен. Эти запросы легко найти по коментам.
Вот пример для того ка сделать сортировку в категории, по такому принципу можно будет сделать запрос и в других случаях.
Поехали:
Ищем по коментам формирование запроса для категории, гнаходим такое:
Код:
		if (isset($view_template) AND $view_template == "rss") {

			$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE {$where_category} AND approve = '1'".$where_date." ORDER BY fixed desc, ".$config['news_sort']." ".$config['news_msort']." LIMIT 0,".$config['rss_number'];

		} else {

			$sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, flag FROM " . PREFIX . "_post WHERE {$where_category} AND approve = '1'".$where_date." ORDER BY fixed desc, ".$config['news_sort']." ".$config['news_msort']." LIMIT ".$cstart.",".$config['news_number'];
			$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$where_category} AND approve = '1'".$where_date;

		}
Первый запрос нас не интересует, он формируеться при RSS импорте, а там сортировка не нужна. Значит изменяем второй вот так:
В самом запросе вот это
Код:
ORDER BY fixed desc, ".$config['news_sort']." ".$config['news_msort']."
ЗАменяем на
Код:
$addsql

В итоге получим:
Код:
		if (isset($view_template) AND $view_template == "rss") {

			$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE {$where_category} AND approve = '1'".$where_date." ORDER BY fixed desc, ".$config['news_sort']." ".$config['news_msort']." LIMIT 0,".$config['rss_number'];

		} else {

			$sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, flag FROM " . PREFIX . "_post WHERE {$where_category} AND approve = '1'".$where_date." $addsql LIMIT ".$cstart.",".$config['news_number'];
			$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$where_category} AND approve = '1'".$where_date;

		}
Как видим первый запрос мы не изменили, а во втором сделали подстановку сортироки, которая формируеться выше.

ВНИМАНИЕ!!! это не сам хак, а только дополнение к хаку описанному в посте от Janine.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху