• Почему окно браузера Google Chrome не реагируют на действия пользователя без перемещения его в сторону?

    VadimSoloviev
    @VadimSoloviev Автор вопроса
    Человек из касты создателей
    В версии 87.0.4280.66 баг исправили.
    Ответ написан
    Комментировать
  • Почему jetBrains не русифицирует свои продукты?

    GavriKos
    @GavriKos
    Потому что джетБрейнсам это ненужно - программистам удобнее и привычнее на английском. Да и вообще - русифицировать IDE не нужно. Можете ради интереса посмотреть русскую VisualStuido - тот еще кошмар. То кодировка в Output забавная, то "Верхний колонтитул" вместо "Header file".
    Ответ написан
    4 комментария
  • Почему Gulp не создает файлы при выполнении задач на Windows 8?

    @Drm
    В общем попался на такую же проблему, долго не мог понять, почему так происходит. Надеюсь кому-нибудь поможет:

    Дело в пути, на котором лежит папка. У меня возникала эта ошибка на win10 если в пути к работей папке были русские символу и знак "[ или ]"
    Ответ написан
    3 комментария
  • Найти имя файла в потоке gulp?

    Anubis
    @Anubis
    Люблю корейскую кухню и веб-разработку
    1) npm i --save-dev gulp-tap

    2) const tap = require('gulp-tap');

    3)
    gulp
        .src(...)
        .pipe(tap(file => {
            const path = file.path;
            const data = file.contents.toString();
        }));


    Где path - путь до файла относительно корневой папки проекта, data - строковое содержимое файла
    Ответ написан
    1 комментарий
  • Как назначить событие при изменении класса элемента?

    @iShatokhin
    JS developer
    var observer = new MutationObserver(function (mutations) {
        mutations.forEach(function (mutation) {
            var newVal = $(mutation.target).prop(mutation.attributeName);
            if (mutation.attributeName === "class") {
                // если зашли сюда, значит класс сменился на значение из newVal
            }
        });
    });
    
    observer.observe(document.body, { // заменяем document.body на нужный нам элемент
        attributes: true
    });
    Ответ написан
    Комментировать
  • Как назначить событие при изменении класса элемента?

    Вы можете переопределить ф-ю добавления класса, если вы используете jQuery, получится что-то типо этого:
    (function(){
        //Сохраняем ссылку на стандартный метод jQuery
        var originalAddClassMethod = jQuery.fn.addClass;
        //Переопределяем
        $.fn.addClass = function(){
            var result = originalAddClassMethod.apply(this, arguments);
            //Инициализируем событие смены класса
            $(this).trigger('cssClassChanged');
            return result;
        }
    })();
    
    $(function(){
        $("#test").bind('cssClassChanged', function(){ 
            //Отработает, как только сменится класс
        });
    });

    А вообще можно посмотреть в сторону angularjs с его дада-биндингом.
    Ответ написан
    Комментировать
  • Как при минификации HTML удалять комментарии?

    efiand
    @efiand
    Веб-разработчик, преимущественно фронтендер
    .pipe(htmlmin({
    collapseWhitespace: true,
    removeComments: true
    }))

    https://github.com/kangax/html-minifier#options-qu...
    Ответ написан
    Комментировать
  • Как при минификации HTML удалять комментарии?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    как вариант
    $ npm install --save-dev gulp-remove-html-comments

    var gulp = require('gulp');
    var removeHtmlComments = require('gulp-remove-html-comments');
     
    gulp.task('html', function () {
      return gulp.src('src/*.html')
        .pipe(removeHtmlComments())
        .pipe(gulp.dest('dist'));
    });

    https://www.npmjs.com/package/gulp-remove-html-comments
    Ответ написан
    1 комментарий
  • Как с помощью javascript узнать расстояние между элементами, не обращаясь к style?

    Insanus
    @Insanus
    там подробней

    offsetParent – «родитель по дереву рендеринга» – ближайшая ячейка таблицы, body для статического позиционирования или ближайший позиционированный элемент для других типов позиционирования.
    offsetLeft/offsetTop – позиция в пикселях левого верхнего угла блока, относительно его offsetParent.
    offsetWidth/offsetHeight – «внешняя» ширина/высота блока, включая рамки.
    clientLeft/clientTop – отступ области содержимого от левого-верхнего угла элемента. Если операционная система располагает вертикальную прокрутку справа, то равны ширинам левой/верхней рамки, если же слева (ОС на иврите, арабском), то clientLeft включает в себя прокрутку.
    clientWidth/clientHeight – ширина/высота содержимого вместе с полями padding, но без полосы прокрутки.
    scrollWidth/scrollHeight – ширина/высота содержимого, включая прокручиваемую область. Включает в себя padding и не включает полосы прокрутки.
    scrollLeft/scrollTop – ширина/высота прокрученной части документа, считается от верхнего левого угла.
    Ответ написан
    1 комментарий
  • Как сменить порт на клиенте Wireguard?

    @q2digger
    никого не трогаю, починяю примус
    Остановите клиент. Убедитесь что не запущен.
    Смените порт в конфиге. Запускайте.
    Ответ написан
    2 комментария
  • При компиляции SASS файла изменений в CSS нет, как решить?

    @Ivan_Efimov
    Junior frontend
    "Я использую плагин VS Code Live sass compiler" давайте уточним: вы используете Live sass compiler за авторством Glenn Marks? Далее, если вы используете данный плагин, то у вас в строке состояния отображается кнопка "Watch sass" и она находится в состоянии "watching...", когда вы вносите изменения в .sass, то "watching..." меняется на "success". Если не вносить каких-то специальных путей в настройки плагина в файле settings.json, то .css файл генерируется в той же папке.
    "но почему код не дублируется в CSS(он у меня пустой)?" - Live sass compiler генерирует css в файл с таким же названием, что и он сам. Возможно у вас открыт в редакторе другой файл css, который вы создали сами заранее, но компилятор о нём не знает. "на моменте создания CSS файла код скопировался и больше не копировался" - Live sass compiler постоянно заменяет предыдущий сгенерированный css-файл новой версией.

    Далее для google chrome: включаем режим разработчика, переходим на вкладку "soruces":
    60138e8fe32a6859767525.jpeg
    Попробуйте поискать изменения там, откройте папку, в которой находится нужный подключённый css.
    Ответ написан
    2 комментария
  • Как решить проблему с отображением слайдера Slick?

    @PerfectLab
    Попробуйте инициализировать слайдер после клика на таб:
    $(".slider").slick('reinit');
    Ответ написан
    8 комментариев
  • Как убрать категорию по умолчанию Woocommerce?

    @YanAlexandrov
    Чайник со стажем
    Хоть и поздно, но всё же, вдруг кому пригодится. Можно через хук:
    add_filter( 'option_default_product_cat', function( $value, $option ) {
    	return false;
    }, 9999, 2 );
    Ответ написан
    Комментировать
  • Как выбрать несколько элементов инфоблока Bitrix по массиву ID?

    Вообще то значения массива arFilter поддерживают массивы.
    $arFilter = Array("IBLOCK_ID"=>1, "ID"=>array(1,2,3));
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, array());
    while($ob = $res->Fetch())
    {
     
    }
    Ответ написан
    1 комментарий
  • Как в 1с-битрикс реализовать избранные товары?

    alexfilus
    @alexfilus
    Senior backend developer
    Во многих готовых решениях это есть.
    Самое простое - хранить в сессии ID избранных товаров. Это если не надо долго их там держать. Если долго, то 1 своя таблица. Всего 2 поля. USER_ID и PRODUCT_ID, их оба объявить как primary (составной ключ). Компонент для вывода будет совсем простой.
    Ответ написан
    Комментировать
  • Как в 1с-битрикс реализовать избранные товары?

    @ncheremisin
    Принимаю заказы на Битрикс
    У Раруса тут да, немного по-дурацки написано, сам наткнулся и понял что статья не полная. В общем то, там все хранится или в куки или у пользователя в профиле. Отдельную таблицу создавать не надо, все в принципе прозрачно если немного разобраться.

    Сначала они предлагают вывести кнопку в шаблон с ссылкой и количеством избранных товаров в шапку, затем страницу Избранное и потом уже в карту товара повесить код
    <a class="favor" data-item="<?=$arResult['ID']?>">В избранное</a>

    Ну и в компонент-эпилог повесить обработчики на js, чтобы в кеш не попадать.
    Ответ написан
    4 комментария
  • Пишет Class not found. Как правильно определить пространство имен?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Эээ... а что вы сделать то хотите ?

    Я вот о чем говорю: при использовании ООП в bitrix вы сталкиваетесь сразу с 2 большими стенами - применение ооп и битрикс. Прежде чем разбирать конкретный код хотелось бы немножко просветить вас в самой архитектуре битрикса.
    В терминологии Битрикса он использует концепцию MVC, но в рамках битрикса, а это означает что на любой странице где вы общаетесь с ним вы должны подключить пролог (хотя бы prolog_before) и эпилог (хотя бы epilog_after, ну в идеале). Именно "компонент" и является тем самым MVC (Вообще это скорее VC + row access, так как модели по сути нет). Есть класс CBitrixComponent (контроллер) и класс CBitrixComponentTemplate (который совместно с файлами шаблона и образует view).

    Вызов компонента происходит из глобальной переменной $APPLICATION путем метода IncludeComponent. До версии 14 (если мне не изменяет память) вообще не было такого понятия как class.php, где можно было отнаследоваться от CBitrixComponent и перекрыть какие-нибудь функции (шаблонизатор к примеру сменить), а после нового ядра d7 появилась возможность отнаследоваться от CBitrixComponent и в файле class.php разместить свой код (таким образом мы сохраняем и class.php с новыми функциями и component.php с логикой), а перекрывая метод executeComponent вы можете избавиться и от component.php.

    С точки зрения архитектуры (рекомендую изучить документацию, она очень обширна и познавательна) все компоненты должны лежать в так называемом пространстве имен, чем обычно служит ник-нейм или название компании (Естественно начинается не с цифры и содержит только латинские буквы), которые в свою очередь могут располагаться в /bitix/components/#пространство_имен#/#название_компонента#/

    Теперь построчно разберем Ваш вопрос:

    Вы положили свой класс сюда: /bitrix/templates/app/Pi/Test.php, что является неверным с точки зрения архитектуры, так как поместили класс отвечающий за контроллер в папку с шаблоном. Если вы не пишете свой модуль вы можете подключить его например в /local/php_interface/classes/ (пример надуманный, можете просто в /local/php_interface положить или сразу в init.php), однако для этого вы должны будете написать autoloader, так как у битрикса он работает только для модулей. Предположим вы в init.php напишете грубый require_once с файлом.

    Затем вы делаете следующее:

    Что является неверным, так как по сути вы обьявляете неймспейс для файла и это с точки зрения php выглядит вот так в конечном итоге:

    class app\Pi\test extends app\Pi\CBitrixComponent
    {
    // ...
    }

    А класса app\Pi\CBitrixComponent не существует. Так что вам нужно поправить пример хотя бы так:

    class test extends \CBitrixComponent

    Настоятельно рекомендую прочитать документацию или хотя бы посмотреть видео с академии битрикс. Сама система не подарок, а другой программист который увидит ваш код будет говорить что это битрикс виноват.
    Ответ написан
    Комментировать
  • Как найти источник медленных запросы MySQL?

    @0x131315
    Многие запросы на битрикс немного ускоряются, если уточнить запрос, например вместо 'IBLOCK_ID'=>10 указывать '=IBLOCK_ID'=>10
    Ответ написан
    Комментировать
  • Как найти источник медленных запросы MySQL?

    BusteR27
    @BusteR27
    Lead bitrix dev
    Найти место, где генерятся эти запросы не сложно - достаточно запустить Монитор производительности с записью sql-запросов.

    Так найдется место где неоптимизированный запрос. На вкладке с запросами можно будет запустить анализ индексов.
    Ответ написан
    1 комментарий
  • Как найти источник медленных запросы MySQL?

    @anton99zel Куратор тега 1С-Битрикс
    29а класс средней школы №7
    Уменьшите количество элементов на страницу, включите кэширование, удалите неиспользуемые свойства, выводите только нужные, проведите оптимизацию на странице производительности, пересоздайте фасетный поиск. Проверьте компоненты на сторонний код. Смотрите сервер - сколько памяти и как она расходуется, используйте php7
    Короче тут можно трехтомник писать этих советов)
    Ответ написан
    5 комментариев