CMS: DLE
Совместимость: 9.6, на более ранних не тестирувалься но должно работать
Автор: неизвестно

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

Установка:
Внимание!!! +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. Нет возможности администратору редактирувать через админ панель число новостей у каждого юзера

edit post

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

  • Отправить комментарий