
Полезный
хак dle даст возможность посетителям вашего веб-ресурса выбирать нужное количество просмотра новостей на странице. Хак под названием Выбор количество новостей(вывода
Dle новости), был предложен и написан "Kolya groza morey", за что ему особая благодарность, однако он оказался совершенно бесполезен, т.к. можно было использовать только для зарегистрированных пользователей. После некоторых изменений в коде и исправление ошибок, позволяет применить данный хак для всех пользователей и посетителей сайта.
Итак, для того чтобы дать возможность выбрать количество выводимых новостей в категории посетителям сайта нужно:
Установка:
Хак Dle Выбор количество вывода новости1. В файле "/engine/engine.php" найти строку (на 9.6 номер строки - 203):
if ($cat_info[$category_id]['news_number']) $config['news_number'] = $cat_info[$category_id]['news_number'];
Заменить на
if (isset($_POST['news_number'])){ if ($cat_info[$category_id]['news_number']) $config['news_number'] = $_POST['news_number']; } else{ if ($cat_info[$category_id]['news_number']) $config['news_number'] = $cat_info[$category_id]['news_number']; }
2. В main.tpl вашего шаблона в нужном месте вставляем
Внимание! не забудьте указать номер категории, можно несколько через запятую.
[category=номер вашей категории] <form id="formus" method="post" action=""> <select id="selt" name="news_number"> <option <?php if ($_POST[news_number] == 2) echo 'selected="selected"' ?>>2</option> <option <?php if ($_POST[news_number] == 4) echo 'selected="selected"' ?>>4</option> <option <?php if ($_POST[news_number] == 6) echo 'selected="selected"' ?>>6</option> <option <?php if ($_POST[news_number] == 8) echo 'selected="selected"' ?>>8</option> <option <?php if ($_POST[news_number] == 10) echo 'selected="selected"' ?>>10</option> <option <?php if ($_POST[news_number] == 10000) echo 'selected="selected"' ?> value="10000">Все</option> </select> </form> [/category]
Для того чтобы передача данных формой осуществлялась сразу после выбора в конце main.tpl вставляем (код JQuery):
$("#selt").on("change", function() { $("#formus").submit(); });
Все на этом установка закончена!
«Автор:» Kolya groza morey
Понадобилось для одного проекта сделать чтобы пользователь сам выбирал число новостей на главной странице и в категориях. Так как готовых решений не нашел (может плохо искал) написал свой хак.
Источник: 6dle-ru/dle_hak/6814-vybor-kolichestva-novostey-polzovatelom.html
Внимание!!! +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, на более ранних не тестирувалься но должно работать
3 июля 2012 добавил Kolya groza morey
Хак
дле Выбор количество вывода все новости dle
vibor_kol_novostey-9.x.zip [12,21 Kb] (cкачиваний: 57)