• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Модуль Выбор количества новостей

killoff

CD тихо, и не DVD меня ;)
Команда форума
Модератор
Регистрация
13 Май 2008
Сообщения
2.619
Реакции
1.125
  • Автор темы
  • Модер.
  • #1
Данный модуль позволяет пользователям самим выбирать количество новостей, которые будут выводиться на странице.
В шаблоне выводится обыкновенный select и выглядит это примерно следующим образом:
lqgljp1.png
Разумеется стили можно настроить как душе угодно.

В шаблоне используется код:
HTML:
<form method="post">
    Фильмов на страницу: <select name="set_news_number" onchange="ShowLoading();$(this).parents('form').submit();">{include file="engine/mods/news_number.php?echolist=1"}</select>
</form>

Создать файл engine/mods/news_number.php с содержимым:
PHP:
<?PHP
/* Смена количества новостей на странице */
if(!defined('DATALIFEENGINE'))die("Hacking attempt!");

$aviable_news_numbers = array(10,30,50,80,100);

if($echolist){
    foreach($aviable_news_numbers as $v){
        echo "<option".($v==$config['news_number']?" selected":"").">$v</option>";
    }
}else{
    if(isset($_POST['set_news_number']) AND in_array($_POST['set_news_number'],$aviable_news_numbers)) $config['news_number'] = $_SESSION['news_number'] = intval( $_POST['set_news_number'] );
    elseif(isset($_SESSION['news_number']) AND in_array($_SESSION['news_number'],$aviable_news_numbers)) $config['news_number'] = $_SESSION['news_number'];
}
где 10,30,50,80,100 - значения разрешенные для выбора.

Открыть файл engine/engine.php
Найти строку:
PHP:
        $config['news_number'] = intval ( $config['news_number'] );
PHP:

ПЕРЕД ней вставить:
PHP:
////////////////////////////////////////////////////////////////////////////////////////
        include_once ENGINE_DIR."/mods/news_number.php";
////////////////////////////////////////////////////////////////////////////////////////

Найти строку:
PHP:
            $cache_prefix .= "_tempate_" . $config['skin'];

После нее вставить:
PHP:
////////////////////////////////////////////////////////////////////////////////////////
            $cache_prefix .= "_".$config['news_number'];
////////////////////////////////////////////////////////////////////////////////////////

Демо: Для просмотра ссылки Войди или Зарегистрируйся
Автор: Для просмотра ссылки Войди или Зарегистрируйся
 
а как-бы сделать подобное, но настройкой пользователя
 
а как-бы сделать подобное, но настройкой пользователя
Выполнить запрос в базу данных :
Код:
ALTER TABLE  `dle_users` ADD  `newsnumb` SMALLINT( 4 ) NOT NULL ;
Создать файл engine/mods/news_number.php с содержимым:
PHP:
<?php
if(!defined('DATALIFEENGINE'))die("Hacking attempt!");

$aviable_news_numbers = array(10,30,50,80,100);

if($echolist)
    foreach($aviable_news_numbers as $v) echo "<option".($v==$config['news_number']?" selected":"").">$v</option>";
}
else
{
    if(isset($_POST['set_news_number']) AND in_array($_POST['set_news_number'],$aviable_news_numbers))
    {
        if($member_id["newsnumb"] == "" || $member_id["newsnumb"] != intval( $_POST['set_news_number'] ))
        {
            $newsnumb = intval( $_POST['set_news_number'] );
            $db->query("UPDATE " . PREFIX . "_users SET newsnumb='$newsnumb' WHERE user_id='$member_id[user_id]'");
            $config['news_number'] = $_SESSION['news_number'] = $newsnumb;
        }
        else if($member_id["newsnumb"] != "")
            $config['news_number'] = $_SESSION['news_number'] = $member_id["newsnumb"];
        else
            $config['news_number'] = $_SESSION['news_number'] = intval( $_POST['set_news_number'] );
    }
    elseif(isset($_SESSION['news_number']) AND in_array($_SESSION['news_number'],$aviable_news_numbers))
    {
        if($member_id["newsnumb"])
            $config['news_number'] = $member_id["newsnumb"];
        else
            $config['news_number'] = $_SESSION['news_number'];
    }
}
Далее по инструкции.
 
Последнее редактирование:
Назад
Сверху