dle.in.ua » Хаки » Выбор количества новостей пользователем

Выбор количества новостей пользователем

Выбор количества новостей пользователем


Понадобилось для одного проекта сделать чтобы пользователь сам выбирал число новостей на главной странице и в категориях. Так как готовых решений не нашел (может плохо искал) написал свой хак.
Внимание!!! +1 запрос к базе даных

Сделать запрос к базе даных
ALTER TABLE `dle_users` ADD `news_number` SMALLINT( 5 ) NOT NULL DEFAULT '0';

В engine/engine.php после
if ($user_group[$member_id['user_group']]['allow_short']) $stop_list = "";

добавить

$user_news = $db->super_query( "SELECT news_number FROM ". PREFIX . "_users WHERE user_id =".$member_id['user_id']);
        if ($user_news['news_number']) $config['news_number'] = $user_news['news_number'];

В engine/modules/profile.php после
$land = $db->safesql( $parse->process( $_POST['land'] ) );

вставить
$news_number_users = $db->safesql( $parse->process( $_POST['news_number_users'] ) );
if (!$news_number_users) $news_number_users=0;
if (!is_numeric ($news_number_users)) $news_number_users=0; //защита от дурака

вместо
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq',{$mailchange} info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' WHERE user_id = '{$id}'";

вставить
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq',{$mailchange} info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', news_number='$news_number_users' WHERE user_id = '{$id}'";

вместо
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq',{$mailchange} info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' WHERE user_id = '{$id}'";

вставить
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq',{$mailchange} info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', news_number='$news_number_users' WHERE user_id = '{$id}'";

после
$tpl->set( '{editinfo}', $parse->decodeBBCodes( $row['info'], false ) );

вставить
if ($row['news_number']==0) $tpl->set( '{news_number_users}', "" );
    else $tpl->set( '{news_number_users}', $row['news_number'] );

В templates/Ваш_шаблон/userinfo.tpl в нужном месте вставить
< input type="text" name="news_number_users" value="{news_number_users}">


Что не реализовано в хаке (не добавлял по ненадобности):
1. Нет возможности отключить хак через админ панель
2. Нет возможности администратору редактирувать через админ панель число новостей у каждого юзера

Версия DLE: 9.6, на более ранних не тестирувалься но должно работать

vybor-kolichestva-novostey-polzovatelom.rar [6,47 Kb] (cкачиваний: 26)

Теги: хак, поьзователь, новость

  • Группа: Модератор +
  • Icq: --
  • Комментариев: 191
  • Публикаций: 14
  • $user_news = $db->super_query( "SELECT news_number FROM ". PREFIX . "_users WHERE user_id =".$member_id['user_id']);
    if ($user_news['news_number']) $config['news_number'] = $user_news['news_number'];
    Это шутка? А использовать $member_id, которая уже забирает данные из www_user?

    if (!$news_number_users) $news_number_users=0;
    if (!is_numeric ($news_number_users)) $news_number_users=0; //защита от дурака
    Эм, т.е. выводить 0 новостей на страницу - это защита от дурака? lol

    В общем, реализация не самая хорошая...

    P.s. ещё не совсем понял как идёт обработка для гостей, ну да ладно...

    --------------------
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 5
  • Публикаций: 2
  • Сам знаю что совершенно бесполезная вещь просто раз понадобилось и то потом отказались, от и выложил а вдруг кому то пригодиться и он дополит wink
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 67
  • Публикаций: 36
  • можно еще в куки записывать значение, чтобы даже если юзер разлогинится, то выбранное им колво новостей оставалось

    --------------------
    • raler1992
    • Регистрация: 20.11.2009
    • Репутация: (1|1|0)
    • 6 июля 2012 05:24
    • 3
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 253
  • Публикаций: 9
  • А что там с кэшированием?
    • pav
    • Регистрация: 18.01.2009
    • Репутация: (0|0|0)
    • 7 июля 2012 23:57
    • 4
    ^
  • Группа: Модератор +
  • Icq: --
  • Комментариев: 191
  • Публикаций: 14
  • pav, так ДЛЕ сам кэширует...

    --------------------
    ^
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.