Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как организовать систему выбора колличества новостей на странице для пользователей?

Как организовать систему выбора колличества новостей на странице для пользователей?


     24.11.2014    jQuery, Общие вопросы по PHP, Модули, Хаки    1551

вопрос
.Всем доброго времени суток, скажите пожалуйста, реально ли сделать выдвижную система выбора количества новостей на страницу для пользователей ?
Что-то такого рода как на скриншоте.
Как организовать систему выбора колличества новостей на странице для пользователей?

Ответил: D0Gmatist


Вот рабочий пример ..
http://jsfiddle.net/D0Gmatist/od60341c/
осталось только в engine.php внести условие
строка
        $config['news_number'] = intval ( $config['news_number'] );


заменить на
        if ( (int)$_COOKIE['selectpagesum'] ) {
            $config['news_number'] = (int)$_COOKIE['selectpagesum'];
        } esle {
            $config['news_number'] = (int)$config['news_number'];
        }

10 комментариев

vitnet
Эксперт

vitnet - 24 ноября 2014 14:19 -

Я думаю возможно, точнее вечером смогу сказать.

crow6viktor
Юзер

crow6viktor - 24 ноября 2014 15:01 -

Спасибо!

lutskboy
Юзер

lutskboy - 24 ноября 2014 15:19 -

Реально

crow6viktor
Юзер

crow6viktor - 24 ноября 2014 15:30 -

спс конечно, но по подробнее хотелось бы....

FastFud
Юзер

FastFud - 24 ноября 2014 21:16 -

Если я ошибаюсь, поправьте..
Откройте main.tpl и нужном месте добавьте
<form method="POST" action="" id="news_form">
<select id="news_number" name="news_number">
     <option>Сколько новостей на главной</option>
     <option value="10">10 новостей</option>
     <option value="20">20 новостей</option>
     <option value="30">30 новостей</option>
</select>
</form>
после этого нужно добавить в js файл (который подключен к шаблону)
$(function(){
$("#news_number").change(function() {
     $("#news_form").submit();    
});
});
после этого, открыть engine.php и найти
// ################ Новости на главной ################# чуть ниже будет примерно такой запрос $sql_select = 
выше этого запроса добавить
$news_number = $config['news_number'];
$select_number = $_POST['news_number'];
if (isset($select_number)) {      
     $news_number = $select_number;    
}
в запросе изменить
LIMIT " . $cstart . "," . $config['news_number'];
на
LIMIT " . $cstart . "," . $news_number;
Очистить кэш после этого.

vitnet
Эксперт

vitnet - 24 ноября 2014 23:40 -

v.2

D0Gmatist
Местный

D0Gmatist - 25 ноября 2014 00:03 -

слишком сложно всё у вас )
1) сделать селект просто селект
<select class="selectPageSum" name="selectpagesum">
    <option value="5">5</option>
    <option value="10">10</option>
    <option value="25">25</option>
    <option value="50">50</option>
    <option value="100">100</option>
</select>

2) при старте проверять куки есть ли переменная "selectpagesum" и если нет то создать с дефаулт значением к примеру 10... при изменении select записывать в куки и делать рестарт страницы
3) в engine.php
строка
        $config['news_number'] = intval ( $config['news_number'] );

заменить на
        if ( (int)$_COOKIE['selectpagesum'] ) {
            $config['news_number'] = (int)$_COOKIE['selectpagesum'];
        } esle {
            $config['news_number'] = (int)$config['news_number'];
        }

ну и конечно написать для пункта 1 (4 функций)
а) чтение куков
function getCookie(a) {
    var b = a + "=";
    var d = document.cookie.split(';');
    for (var i = 0; i < d.length; i++) {
        var c = d[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1, c.length);
        }
        if (c.indexOf(b) == 0) {
            return c.substring(b.length, c.length);
        }
    }
    return null;
}

б) запись куков
function setCookie(a, b, c) {
    if (c) {
        var d = new Date();
        d.setTime(d.getTime() + (c * 24 * 60 * 60 * 1000));
        var e = "; expires=" + d.toGMTString();
    } else {
        var e = "";
    }
    document.cookie = a + "=" + b + e + "; path=/";
}

в) функция реагирования на изменения "select.selectPageSum" вроде бы change и сразу перезагрузка страницы
$(function () {
    $(".selectPageSum").change(function () {
        var selectPageSum  = ""
        $(".selectPageSum option:selected").each(function () {
            selectPageSum = $(this).val();
        });
        setCookie( "selectpagesum", selectPageSum, 365 );
        location.reload();
    });
});

г) $(document).ready с пунктом 2 и изменением активного value на тот что в куках сохранён
$(document).ready(function() {

    if ( getCookie("selectpagesum") != "" ) {
            setCookie( "selectpagesum", 10, 365 );
    }
    $( ".selectPageSum" ).prop('selectedIndex',  getCookie("selectpagesum"));

});
Вроде бы всё правильно

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

FastFud
Юзер

FastFud - 25 ноября 2014 00:53 -

vitnet, D0Gmatist,
Круто! мне нравится.

D0Gmatist
Местный

D0Gmatist - 25 ноября 2014 01:34 -

***Комментарий удален***

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

crow6viktor
Юзер

crow6viktor - 25 ноября 2014 06:35 -

КРУТО!5+)....Спасибо за отзывчивость!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх