Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
one_day

one_day

  • 88
    вклад
  • 2
    вопроса
  • 118
    ответов
  • 47%
    решений
Комментарии
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как реализовать голосование после поста Wordpress?

    one_day
    one_day @one_day
    SongaerDev,
    ACF'ом создавать кастомные оценки, аяксом пулить в бд
    а вот и плагин
    Написано более двух лет назад
  • Как реализовать голосование после поста Wordpress?

    one_day
    one_day @one_day
    возьми ACF или на край погугли
    Написано более двух лет назад
  • Как добавить/удалить класс блоку при клике за его пределами?

    one_day
    one_day @one_day
    ответ в вопросе (в комментариях кода)
    Написано более двух лет назад
  • Contact form 7, как сделать уведомления об успешной отправке поп апом?

    one_day
    one_day @one_day
    напишите свой попап
    по примеру
    Написано более двух лет назад
  • Можно ли сделать лучше?

    one_day
    one_day @one_day
    Kerm, да, все верно выше вариант для подгрузки сразу всего товара

    для аякса накидал примерчик реализации

    PHP:
    // C какого товара будет осуществляться вывод
    $startFrom = $_POST['startFrom'];
    
    // Получаем 40 товаров отсортированных по цвету, начиная с последнего на сайте
    $res = mysqli_query($db, "SELECT * FROM `products` ORDER BY `color` LIMIT {$startFrom}, 40");
    
    // Формируем массив с товаром
    $products = array();
    while ($row = mysqli_fetch_assoc($res))
    {
        $products[] = $row;
    }
    
    // Превращаем массив товара в json-строку для передачи через Ajax-запрос
    echo json_encode($articles);


    jQuery:
    $(document).ready(function(){
    
    /* Переменная-флаг для отслеживания того, происходит ли в данный момент ajax-запрос. В самом начале даем ей значение false, т.е. запрос не в процессе выполнения */
    var inProgress = false;
    
    /* Переменная для определения первого цикла */
    var firstCycle = true;
    
    /* С какого товара надо делать выборку из базы при ajax-запросе */
    var startFrom = 40;
    
        $(window).scroll(function() {
    
            /* Если высота окна + высота прокрутки больше или равны высоте всего документа и ajax-запрос в настоящий момент не выполняется, то запускаем ajax-запрос */
            if($(window).scrollTop() + $(window).height() >= $(document).height() - 200 && !inProgress) {
    
            $.ajax({
                /* адрес файла-обработчика запроса */
                url: 'obrabotchik.php',
                /* метод отправки данных */
                method: 'POST',
                /* данные, которые мы передаем в файл-обработчик */
                data: {"startFrom" : startFrom},
                /* что нужно сделать до отправки запрса */
                beforeSend: function() {
                /* меняем значение флага на true, т.е. запрос сейчас в процессе выполнения */
                inProgress = true;}
                /* что нужно сделать по факту выполнения запроса */
                }).done(function(data){
    
                /* Преобразуем результат, пришедший от обработчика - преобразуем json-строку обратно в массив */
                data = jQuery.parseJSON(data);
    
                /* Узнаем размер массива*/
                var productsCount = data.length;
    
                /* Если массив не пуст */
                if (productsCount > 0) {
    
                /* Делаем проход по каждому результату, оказвашемуся в массиве,
                где в index попадает индекс текущего элемента массива, а в data - сам товар*/
                $.each(data, function(index, data){
    
                /* Получаем реальный цвет для первого сравнения*/
                if(!!firstCycle){
                var color = data.color;
                firstCycle = False;
                }
    
    			/* Добавляем перенос на новую строчку если цвет отличается от предыдущего и запоминаем новый цвет*/
                if (color != data.color){
                $(".l-products-list").append("<div class='clearfix'></div>");
                color = data.color;
                }
    
                /* Отбираем по классу блок с товарами и дозаполняем его новыми*/
                $(".l-products-list").append("<div class='col-lg-3 l-category-model-wrap' data-product-id=" + data.id + ">" + data.text + "</div>");
                });
    
                /* По факту окончания запроса снова меняем значение флага на false */
                inProgress = false;
    
                // Увеличиваем на колличество подгруженного товара, с которой надо начинать выборку из базы
                startFrom += productsCount;
                }});
            }
        });
    });
    Написано более двух лет назад
  • Можно ли сделать лучше?

    one_day
    one_day @one_day
    Kerm,
    $end_element = array_pop($array);
    foreach ($array as $value) {
       // выводим весь товар кроме последнего
       echo $value;
    }
       // выводим последний товар + вспомогательный див бутстрапа для переноса
       echo $end_element;
       echo "<div class='clearfix'></div>";
    Написано более двух лет назад
  • Можно ли сделать лучше?

    one_day
    one_day @one_day
    после того как вы сделали выборку по артикулам, вам не надо проверять кратность, отдаем на фронт
    на фронте делаем проверку на последний элемент артикла и после него добавляем див с классом "клирфикс"
    не зависимо в какой позиции будет последний товар, следующая коллекция начнется с новой строчки
    Написано более двух лет назад
  • Преобразовать image в html?

    one_day
    one_day @one_day
    https://www.php.net/manual/ru/image.examples-water...
    Написано более трёх лет назад
  • Как можно сверстать вот такой блок?

    one_day
    one_day @one_day
    Steel_Designer, добавь ее псевдоклассом
    Написано более трёх лет назад
  • Как называется этот плагин?

    one_day
    one_day @one_day
    есть ссылка на сайт? там в коде должна быть подсказка
    Написано более трёх лет назад
  • Как выполнить функции в порядке очереди, в которых содержатся таймеры?

    one_day
    one_day @one_day Автор вопроса
    Антон Спирин, благодарю
    Написано более трёх лет назад
  • Как выполнить функции в порядке очереди, в которых содержатся таймеры?

    one_day
    one_day @one_day Автор вопроса
    Антон Спирин , огромное спасибо за помощь,
    вкратце: создаем массив с шагами - затем выполняем поочередно и результат кладем в результирующий массив с таким же индексом как и в массиве с шагами, с этим помогает bind?
    Написано более трёх лет назад
  • Как выполнить функции в порядке очереди, в которых содержатся таймеры?

    one_day
    one_day @one_day Автор вопроса
    Stalker_RED, спасибо за ссылки
    Эту задачу дают в универе, первоисточник неизвестен, возможно что так и есть как вы говорите.
    Написано более трёх лет назад
  • Как выполнить функции в порядке очереди, в которых содержатся таймеры?

    one_day
    one_day @one_day Автор вопроса
    Я пробовал использовать Promise, но результат такой же
    <script>
    var results=[];
    var myPromise;
    function Parallel(setings,step,done) {
    
    this.parallelJobs = setings;
    
    this.job = function (step){
       
    myPromise = new Promise((resolve, reject) => {
    
        resolve(step); 
      
    });
     myPromise.then((step) => {
    
      step(function done(message) {
            results[results.length] = message;    
    });
    });
        return this;
    };
    this.done = function (done) {
        setTimeout(function () {
        done(results);
    }, 1700);
    
        return this;
    };
    };
    
    </script>
    Написано более трёх лет назад
  • Как выполнить функции в порядке очереди, в которых содержатся таймеры?

    one_day
    one_day @one_day Автор вопроса
    Антон Спирин, да, актуально
    Написано более трёх лет назад
  • Как наследовать метод от родителя по цепочке?

    one_day
    one_day @one_day Автор вопроса
    Виталий Столяров, извиняюсь
    обновил

    кажется, с этим разобрался, функция step ожидает входным параметром другую функцию done, коротая записывает в массив строки, но теперь они записываются не по порядку
    0:"step4"
    1:"hello world"
    2:"Job succeded"
    3:"step3"

    codepen
    Написано более трёх лет назад
  • Как наследовать метод от родителя по цепочке?

    one_day
    one_day @one_day Автор вопроса
    Виталий Столяров, Александр Таратин, спасибо за ссылки

    Можете подсказать, как до ума довести в один поток?
    после выполнения всех функций в results[] ничего не записывает
    мне кажется что setTimeout(done, 1000, 'hello world'); не успевает выполнить вызов функции done и переходит к следующему job

    var results=[];
    
    function Parallel(setings,step,done) {
    
    this.parallelJobs = setings;
    
    this.job = function (step){
        step();
        return this;
    };
    
    this.done = function (done) {
        done();
        return this;
    };
    };
    
    function done(message) {
        results.push(message);
        console.log(results);
    }
    Написано более трёх лет назад
  • Как наследовать метод от родителя по цепочке?

    one_day
    one_day @one_day Автор вопроса
    Виталий Столяров, а вы не могли бы подсказать, что почитать по конкретному примеру про параллелизм?
    Написано более трёх лет назад
  • Как наследовать метод от родителя по цепочке?

    one_day
    one_day @one_day Автор вопроса
    Виталий Столяров, Спасибо!
    Параллелизма нет,все в один поток. Это следующее что буду пробовать.
    Написано более трёх лет назад
  • Как решить проблемы со слайдером и картинками?

    one_day
    one_day @one_day
    консоль что говорит?
    Написано более трёх лет назад
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • Следующие →
Самые активные сегодня
  • sergey-kuznetsov
    Сергей Кузнецов
    • 18 ответов
    • 0 вопросов
  • rPman
    • 9 ответов
    • 0 вопросов
  • TheAndrey7
    • 7 ответов
    • 0 вопросов
  • opium
    Пума Тайланд
    • 5 ответов
    • 0 вопросов
  • Dr_Elvis
    Elvis
    • 5 ответов
    • 0 вопросов
  • seven5674
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации