Понадобилось для одного проекта сделать чтобы пользователь сам выбирал число новостей на главной странице и в категориях. Так как готовых решений не нашел (может плохо искал) написал свой хак.
Внимание!!! +1 запрос к базе даных
Сделать запрос к базе даных
В engine/engine.php после
добавить
В engine/modules/profile.php после
вставить
вместо
вставить
вместо
вставить
после
вставить
В templates/Ваш_шаблон/userinfo.tpl в нужном месте вставить
Что не реализовано в хаке (не добавлял по ненадобности):
1. Нет возможности отключить хак через админ панель
2. Нет возможности администратору редактирувать через админ панель число новостей у каждого юзера
Версия DLE: 9.6, на более ранних не тестирувалься но должно работать
Сделать запрос к базе даных
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'];
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; //защита от дурака
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'] );
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, на более ранних не тестирувалься но должно работать