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

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


Понадобилось для одного проекта сделать чтобы пользователь сам выбирал число новостей на главной странице и в категориях. Так как готовых решений не нашел (может плохо искал) написал свой хак.
Внимание!!! +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)

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

Другие новости по теме:

Категория: Хаки ----- Просмотров: 3130 ----- Комментариев: 5

Вернуться

  • Группа: Модератор +
  • ICQ: --
  • Регистрация: 5.03.2010
  • Комментариев: 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: --
  • Регистрация: 9.05.2010
  • Комментариев: 5
  • Публикаций: 2
^
Сам знаю что совершенно бесполезная вещь просто раз понадобилось и то потом отказались, от и выложил а вдруг кому то пригодиться и он дополит wink
  • Группа: User
  • ICQ: --
  • Регистрация: 20.11.2009
  • Комментариев: 67
  • Публикаций: 36
^
можно еще в куки записывать значение, чтобы даже если юзер разлогинится, то выбранное им колво новостей оставалось

--------------------
  • pav

  • 7 июля 2012 23:57
  • Группа: User
  • ICQ: --
  • Регистрация: 19.01.2009
  • Комментариев: 253
  • Публикаций: 9
^
А что там с кэшированием?
  • Группа: Модератор +
  • ICQ: --
  • Регистрация: 5.03.2010
  • Комментариев: 191
  • Публикаций: 14
^
pav, так ДЛЕ сам кэширует...

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