Задать вопрос
  • (WordPress) Как реализовать раздел «Вопрос-ответ»?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    - Создать кастомный тип записи
    - Создать шаблон с формой публикации вопроса через фронт-энд. Можно обычную капчу повесить, чтобы не спамили. + при отправке записи он сохраняется в черновиках
    - Добавить кастомное поле "Ответ администратора", которое отображается при условии, если оно заполнено. Соответственно, админ заполняет его и он отображается на странице поста (Вопроса)
    Ответ написан
    2 комментария
  • (WordPress) Как реализовать раздел «Вопрос-ответ»?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    1. Создать страницу,
    2. на ней разрешить комментарии,
    3. в настройках WP ограничить комментарии двумя уровнями и снять галочку, что пользователи должны быть зарегистрированы для комментирования.
    4. Скрыть ссылку "Ответить" в комментариях для всех, кроме администраторов (или просто зарегистрированных). Функции is_user_logged_in или current_user_can( 'manage_options' ).

    Если совсем не хочется лезть в код, то скрыть можно с помощью css:
    .comment-reply-link {
        display: none;
    }
    
    .logged-in .comment-reply-link {
        display: inline;
    }

    Код можно добавить в Внешний вид -> Настроить -> Дополнительные стили.
    Ответ написан
    1 комментарий
  • Как узнать, что элемент вышел за пределы родителя?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Ответ написан
    Комментировать
  • Как заменять блок div.content на главное странице блоком div.content из другого .html файла?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    $('.list > a').click(function(event) {
      event.preventDefault(); // останавливаем переход по ссылке
      $('.content').load( $(this).attr('href') );
    })
    Ответ написан
    4 комментария
  • Как лучше реализовать такую страницу?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    js/ajax
    Ответ написан
    Комментировать
  • Как очищать текст в php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Никак не очищать.

    На самом деле этот вопрос встречается довольно часто. Вот например популярный ответ на Stack Overflow, который подробно разбирает этот распространённое заблуждение: https://stackoverflow.com/a/3126175. И основная мысль там:

    Понятие такой генерализованной "очистки данных" изначально бессмысленное и вредное.

    Особенно такой вот индусской функцией, которая сама по себе - пример редкого идиотизма: сначала заменяем символы < и > на HTML сущности... а потом бодро пытаемся вырезать HTML теги. Которых к этому моменту в тексте не останется ни одного!
    Или функция stripcslashes, которая здесь вообще ни к селу, ни к городу. Если я хочу написать сочетание \n, то с какой стати эта функция будет заменять его на перевод строки?
    Всё что можно оставить из этого безумного набора - это trim(). Да и то не всегда. Как правильно заметил Rsa97, могут быть случаи, когда лидирующие пробелы имеют значение, например, при выводе форматированного кода. Кстати, этим как раз грешит Хабр. Если запостить код с отступами, то первый будет "съеден"!


    Очистка

    Любая "очистка" (хотя правильнее говорить про форматирование), имеет смысл только в определённом контексте.
    И поэтому "очищать" надо только адресно, строго перед использованием в том или ином конкретном случае.

    Например, базе данных ни жарко, ни холодно от наличия HTML тегов.
    А проблемы могут начаться только при выводе данных в HTML. Но если мы будем предотвращать эти проблемы заранее, то просто попортим кучу данных. Поэтому форматировать данные для использования в контексте отрисовки HTML следет строго перед этой отрисовкой. То есть при выводе.
    Что и делают все популярные РНР шаблонизаторы автоматически.
    То есть вручную колупаться с "очисткой" вообще не нужно.

    Больше того, "очистка" HTML поможет данным, выводимым в яваскрипт, как мёртвому припарки. То есть опять же - всегда надо понимать, в какой именно контекст мы выводим данные, и форматировать соответствующим образом. В частности любые данные передавать в яваскрипт только через json_encode()

    И таких контекстов неисчислимое множество. Например, если мы используем переменную для передачи параметров в консольный скрипт, то надо обязательно обрабатывать её через escapeshellarg(). Если в регулярку - то preg_quote(). Имя файла для инклюда из переменной (хотя так делать вообще не стоит) надо хотя бы обрабатывать через basename(). И так далее.

    Валидация

    Если же наличие HTML тегов в поступающих данных противоречит техническому заданию, то надо заниматься не "очисткой", а валидацией: проверить регулярным выражением, есть ли в строке HTML теги. И если есть, то вернуть пользователю с сообщением об ошибке.

    Защита БД

    И кстати, по поводу "использую pdo".
    На всякий случай уточню, что само по себе использование PDO не защищает ни от каких проблем
    Важно помнить, что защита - это когда в базу данных отправляется строго константная строка запроса, полностью на 100% составленная из значений, прописанных в коде РНР, и в ней не используется ни одно значение, пришедшее в код извне. Причем PDO помогает здесь только наполовину, позволяя использовать в запросе подстановки вместо самих данных.
    Но при этом для всех остальных частей запроса - например имен полей - у ПДО нет никакой защиты и её надо организовывать самостоятельно. Либо проверяя по белому списку, лабо, по крайней мере, прогоняя через регулярку.
    Ответ написан
    13 комментариев
  • Как сделать форму обратной связи без php?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Если пользуйетесь CloudFlare, можно там сделать Worker, пересылающий сообщение в Тележку. Как бы бэк, без бэка. Бесплатно.

    Пример кода воркера для получения JSON с удалённого сервера — тут вы подставите URL Тележки с вашим секретным токеном.
    Ответ написан
    Комментировать
  • Как запретить менять тему на сайте?

    @alekcena
    Нелинейный наставник
    Никак. Это не зависящие от браузера обстоятельства.
    Ответ написан
    Комментировать
  • Как удалить родительский элемент через дочерний?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Что помешало разобраться с этим вопросом самостоятельно? Всего-то надо было догадаться погуглить пару вещей:

    1. Как получить родительский элемент
    2. Как удалить элемент

    Нет, серьёзно - ЧТО ВАМ ПОМЕШАЛО?

    UPD.

    Кого надо удалить, на кого надо нажимать, как будет производится удаление:

    const itemSelector = '.header';
    const buttonSelector = `${itemSelector} .delete_block`;
    const remove = el => el.closest(itemSelector).remove();

    Можно назначить обработчик клика каждой кнопке отдельно:

    document.querySelectorAll(buttonSelector).forEach(function(n) {
      n.addEventListener('click', this);
    }, e => remove(e.target));

    Или, применить делегирование:

    document.addEventListener('click', ({ target: t }) => (
      t.matches(buttonSelector) && remove(t)
    ));
    Ответ написан
    2 комментария
  • На чем сделать сайт?

    @archelon
    wordpress + плагин buddypress
    от 1 000 (тупо установить и запустить как есть) до ??? 000 (с версткой по макету, допиливанием по ТЗ)
    Ответ написан
    Комментировать
  • Как можно сократить этот JQuery код?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    const classes = [
      '.pict',
      '.buy',
    ];
    $(classes.map(c => c + i).join(',')).fadeIn(300);
    // или
    classes.forEach(cls => $(cls + i).fadeIn(300));


    Вопрос: нафига?
    Ответ написан
    Комментировать
  • Как можно сократить этот JQuery код?

    megakor
    @megakor
    Go/PHP developer | ВКонтакте
    $(`.pict${i}, .buy${i}`).fadeIn(300);
    Ответ написан
    Комментировать
  • Как проиграть анимацию до середины?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    в документации у них есть метод playSegments(), который похож на то, что вам нужно. Попробуйте что-то типа:
    const half = [0, 150]; // [ первый кадр, средний кадр ]
    
    if (this.showMobileMenu === true) {
        burgerLottieIcon.setDirection(1);
        burgerLottieIcon.playSegments(half, true);
    } else {
        burgerLottieIcon.setDirection(-1);
        burgerLottieIcon.playSegments(half, true);
    }
    Ответ написан
    1 комментарий
  • Можно ли улучшить код?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Array.prototype.amount = function() {
        return this.reduce((a, i) => a + Number(i), 0);
    }
    
    let nums = 123123;
    let arr = `${nums}`.split('');
    
    const sum1 = arr.slice(0, 3).amount();
    const sum2 = arr.slice(3, 6).amount();
    
    if (sum1 == sum2) {
        console.log('сумма первых цифр равняется остальным трём');
    } else {
        console.log('нет, не равняется');
    }
    Ответ написан
    Комментировать
  • Как отложить выполнение события mouseout?

    Stalker_RED
    @Stalker_RED
    Я просто оставлю это здесь: https://habr.com/ru/post/171905/

    Сейчас, кроме библиотеки описанной в статье есть еще куча подобных решений, но сходу не подскажу по каким словам их искать.
    Ответ написан
    Комментировать
  • Как при выборе input type="radio" активировать input type="checkbox"?

    KickeRocK
    @KickeRocK
    FrontFinish
    $(function () {
        $("#shipping_method_0_flat_rate25").on("change", function () {
            if ($("#shipping_method_0_flat_rate25").prop("checked")) {
                $("#ship-to-different-address-checkbox").attr("checked", true);
            } else {
                $("#ship-to-different-address-checkbox").removeAttr("checked");
            }
        });
    });

    checked - Boolean; if present, the checkbox is tog...
    То есть даже если у него значение "false" - он будет включен, чтобы отключить нужно его удалить.
    Ответ написан
    4 комментария
  • Как обрезать текст в таблице?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    -webkit-line-clamp :


    Почитать можно тут: https://habr.com/ru/company/ruvds/blog/535016/
    Ответ написан
    2 комментария
  • Как сделать вращение объекта по горизонтали через hammer.js?

    Alexandroppolus
    @Alexandroppolus
    кодир
    да тут без всякого хаммера можно обстряпать.
    обычный драг-н-дроп.

    при nousedown запоминаешь в переменную Х, где был курсор мыши, и в переменную A - угол поворота, который был в этот момент.
    при mousemove - берешь разницу текущего Х и сохраненного при старте (допустим, это число D), и делаешь текущий угол поворота равным A + k*D, где вещественное k подобрать по вкусу (чем больше, тем быстрее вращается).
    mouseup - отписка от событий mousemove и mouseup, прекращение драгндропа.
    всё как всегда, в общем.
    Ответ написан
    3 комментария