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

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


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

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

Ответил: 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'];
        }

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

vitnet
PHP-developer

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
PHP-developer

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+)....Спасибо за отзывчивость!

WebMen
Юзер

WebMen - 7 мая 2018 15:30 -

Подскажите пожалуйста почему на DLE 11.3 и 11.1 не один пример не работает или выдает ошибку.
Parse error: syntax error, unexpected '{' in \engine\engine.php on line 212

Есть ли исправления для 11 и 12 и будет будет шанс работы на 13?

WebMen
Юзер

WebMen - 10 мая 2018 16:15 -

Так тяжело ответить? Подскажите где ошибка в коде?

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

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

наверх