Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) jQuery Как организовать систему выбора колличества новостей на странице для пользователей?

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


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

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

Ответил: 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
218

2172 | 930

vitnet - 24 ноября 2014 14:19 - Эксперт

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

crow6viktor
59 | 3

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

Спасибо!

lutskboy
3

550 | 104

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

Реально

crow6viktor
59 | 3

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

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

FastFud
50

1599 | 588

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
218

2172 | 930

vitnet - 24 ноября 2014 23:40 - Эксперт

v.2

D0Gmatist
225

794 | 281

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
50

1599 | 588

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

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

D0Gmatist
225

794 | 281

D0Gmatist - 25 ноября 2014 01:34 - Местный

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

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

crow6viktor
59 | 3

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

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

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

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