loading...

Авторизация ...

Имя пользователя :
Пароль :
я всё забыл!

Хакиtopnews из определенной категории 2

Написал zuluman2, 2 апреля 2010 | 24 комментария | рейтинг новости не нравится   +6   нравится Версия для печати
Вот модернизировал чуток хак topnews с определённой категории - добавил короткое описание.
изменения нужно сделать в двух файлах:
в index.php перед
$config['http_home_url'] = explode ( "index.php", strtolower ( $_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 langdate($format, $stamp) {


добавляем функцию

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, short_story, 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=\"\?newsid=".$row['id']."\">".stripslashes($title)."</a>";

        $topnews .= "&raquo; ".$link."<br />";
$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($row['short_story']));
$row['short_story'] = preg_replace("/<!--*-->/si","",$row['short_story']);
$row['short_story'] = strip_tags($row['short_story']);
if( strlen( $row['short_story'] ) > 106 ) $row['short_story'] = substr( $row['short_story'], 0,106 ) . " ... <a {$go_page}href=\"\?newsid=".$row['id']."\" title=\"$titla\" style=\"font-size:12px\">Читать далее »</a>";
$topnews .= '<table width="98%" border="0" style="border-bottom: 1px dotted #E1E1E1;">
<td width="91%" valign="top" style="padding-left: 7px; padding-bottom: 7px; font-size:13px">
'.stripslashes($row['short_story']).'</td>
</tr>
</table>';
    }

    $db->free();
    create_cache ("topnews", $topnews, $config['skin']);
    }
    
    return $topnews;
}

популярные новости выводим тегом {topnews category="ID категории"}
пример: {topnews category="1,2,3"}
Проверено на версии 8.3
Делал для себя, кому надо заберайте


Отблагодарили: remb82

Комментарии пользователей

  Экспорт комментариев в RSS
 Сортировать по рейтингу, по дате

Написал sheff, 3 апреля 2010 в 08:54 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 351, Пользователи
Карма:
с чпу не работает

Написал Petro38, 3 апреля 2010 в 19:39 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 102, Пользователи
Карма:
А как сделать, чтоб работало?

Написал ALTERNATE, 4 апреля 2010 в 02:31 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 17, Пользователи
Карма:
Нужна поддержка ЧПУ

Написал Pearson, 4 апреля 2010 в 16:02 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 12, Пользователи
Карма:
А как сделать чтобы были не популярные новости а последние?

Написал zuluman2, 6 апреля 2010 в 09:53 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
Нужна поддержка ЧПУ


Пожалуйса изменения для работы с ЧПУ:


$link = "<a {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/', $row['date']).$row['alt_name'].".html\">


заменить на

$link = "<a {$go_page}href=\"". "/" .$row['id']."-".$row['alt_name'].".html\">

Написал zuluman2, 6 апреля 2010 в 10:07 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
link = "<a {$go_page}href=\"\?newsid=".$row['id']."\">


заменяем на
$link = "<a {$go_page}href= \"". "/" .date('Y/m/d/', $row['date']).$row['alt_name'].".html\">

далее
<a {$go_page}href=\"\?newsid=".$row['id']."\" title=\"$titla\" style=\"font-size:12px\">Читать далее »</a>";

заменяем на
<a {$go_page}href= \"". "/" .date('Y/m/d/', $row['date']).$row['alt_name'].".html\">Читать далее »</a>";

Вот всё. Пример работы: _http://donbass.name

Написал sheff, 6 апреля 2010 в 13:59 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 351, Пользователи
Карма:
а как убрать описание?

Написал zuluman2, 6 апреля 2010 в 14:24 плохой комментарий   +1   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
Для удаления описания
Удалите из кода кусок
от
$row['short_story']
до
</table>';
включительно

так же удаали из кода
short_story,

Написал sheff, 6 апреля 2010 в 15:01 плохой комментарий   +1   хороший комментарий
Новостей: 5, комментариев: 351, Пользователи
Карма:
спасибо. но почему выводятся новости с отрицательным рейтингом?
и выводится 8 а не 10 новостей

Написал zuluman2, 6 апреля 2010 в 15:30 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
модуль topnews по умолчанию выводит статьи за текущий месяц, и берёт десятку (можете регулировать количество), у вас скорее всего новостей меньше десяти и он згрёб всё что есть.

Написал sheff, 6 апреля 2010 в 16:10 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 351, Пользователи
Карма:
спасибо, так и думал. только почему он выводит отрицательную? этого нельзя изменить?.. ведь она по сути не популярна

Написал zuluman2, 7 апреля 2010 в 05:48 плохой комментарий   +1   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
подумаю над этим в ближайшее время

Написал zuluman2, 8 апреля 2010 в 09:39 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
Вот простое решение для вас. В modules/topnews.php найдите
$this_month' - INTERVAL 1 MONTH AND date

измените единицу на любое число, и новости соответственно будут выводиться за указанное число месяцев, следовательно диапазон выборки увеличиться, будет выводиться вся десятка, а так же уменьшится вероятность вывода отрицательных постов

Написал zuluman2, 8 апреля 2010 в 09:54 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
и в функции хака найдите
+ INTERVAL 1 MONTH

и поставте там нужную цифру

Написал sheff, 8 апреля 2010 в 12:07 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 351, Пользователи
Карма:
это получается будет для всех новостей сайта, а не из определенной категории?

Написал zuluman2, 8 апреля 2010 в 12:35 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
конечно из категории, котрую вы укажете в теге , например {topnews category="1,2,3"}

Написал sheff, 8 апреля 2010 в 13:28 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 351, Пользователи
Карма:
ну к примеру мне надо чтобы на главной выводились лучшие новости за месяц. Нет другого варианта, чтобы не выводились отрицательные новости?

Написал zuluman2, 8 апреля 2010 в 14:11 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
пока нет, единственное что могу посоветовать, что кол- во новостей с положительным рейтенгом должно быть больше либо равно 10 (числа выводимых статей)

Написал Pearson, 7 апреля 2010 в 07:43 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 12, Пользователи
Карма:
Извините я повторюсь "А как сделать чтобы были не популярные новости а последние?" Помогите очень нужно!

Написал zuluman2, 7 апреля 2010 в 09:56 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
завтра будет время...подумаю над решением

Написал zuluman2, 8 апреля 2010 в 10:08 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
найдите в функции

ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10");
и поставьте date DESC, перед rating DESC, поидее выборка по дате будет на первом месте.
Должно выглядеть гдето так
ORDER BY date DESC, rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10");


Поробуйте, на практике не проверял.

Написал Dimage, 10 апреля 2010 в 05:43 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 0, Гости
Карма: ±
1.Выводит только из одной категории!!!! независимо что указываешЬ!
2. Как изменить длину сообщения.
3. ......../\?newsid=5 - как исправить?
Dle 8.5 спасибо!

Написал zuluman2, 12 апреля 2010 в 07:55 плохой комментарий   0   хороший комментарий
Новостей: 5, комментариев: 41, Пользователи
Карма: -1±
воспользуйтесь хакм версии 3, либо подождите чуток, щаз работаю над 4кой, учитывая пожелания

Написал Pearson, 26 апреля 2010 в 22:13 плохой комментарий   0   хороший комментарий
Новостей: 0, комментариев: 12, Пользователи
Карма:
zuluman2,
найдите в функции

ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10");
и поставьте date DESC, перед rating DESC, поидее выборка по дате будет на первом месте.
Должно выглядеть гдето так
ORDER BY date DESC, rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10");


Поробуйте, на практике не проверял.

Не помогло! какие ещё есть варианты?

Информация



Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
Анализ Тиц и PR сайта

[removed][removed] [removed] (adsbygoogle = window.adsbygoogle || []).push({}); [removed]