• Bitrix: причина белого экрана при обновлении PHP?

    smilingcheater
    @smilingcheater
    До обновление в админке в настройках главного модуля включите вывод ошибок и предупреждений.
    В более новых версиях битрикса можно включить отладку в файле /bitrix/.settings.php, но я уже и не помню был ли он в 14й версии. Если есть - в блоке exception_handling выставить параметр 'debug' => true.

    После этого смотрите логи ошибок сервера и разбирайтесь, что именно упало.
    Ответ написан
  • Почему после установки сертификата SSL выводится '"if" directive is not allowed here in /etc/nginx/sites-enabled/vst-install.sh:15'?

    smilingcheater
    @smilingcheater
    Зачем вы положили этот шелл-файл в папку конфига сайтов nginx?
    Он его пробует подключить как конфиг-файл, соответственно ожидает, что синтаксис в нём как в конфиг-файле nginx, а не в шелл-файле
    Ответ написан
    6 комментариев
  • Как найти ошибку в коде PHP?

    smilingcheater
    @smilingcheater
    <a href="<?= $arItem['PROPERTIES']['LINK']['VALUE'] ?>" id="<span id=" title=" Код PHP: &lt;? $this-&gt;GetEditAreaId($arItem['ID']); ; ?&gt;"


    Весь вот этот блок со ссылкой отредактируйте и поправьте. От id= и дальше. Внутрь попали куски разметки визуального редактора битрикса.

    Скорее всего должно быть что-то типа
    <a href="<?= $arItem['PROPERTIES']['LINK']['VALUE'] ?>" 
       id="<?= $this->GetEditAreaId($arItem['ID']); ?>" 
       class="main-slider__item swiper-slide" 
       style="background-image: url();" 
       data-bx-app-ex-style="background-image: url(<?= $arFile['SRC'] ?> );">
        <div class="main-slider__content">
            <h1><?= $arItem['PROPERTIES']['CAPTION']['VALUE']; ?></h1>
            <?= $arItem['PREVIEW_TEXT']; ?>
        </div>
    </a>


    Вообще с битриксом очень хорошее правило - никогда не редактировать что-то, и имеющее в себе PHP-код, через визуальный редактор.
    Ответ написан
    2 комментария
  • Как вывести все данные из JSON файла в HTML?

    smilingcheater
    @smilingcheater
    Не работает, потому что указанная вами в рабочем примере кода ссылка умеет работать с JSONP (при вызове с параметром callback возвращаемые данные оборачиваются в вызов указанной функции, попробуйте открыть learn.cf.ac.uk/webstudent/sem5tl/javascript/assign... )

    А вторая ссылка, с который вы хотите работать - так не умеет. Вызов xn--80aqahnxhf0b.xn----7sbhaopdx2angr0b9ina.xn--p1... никаких параметров не добавляет.

    НО! эта нужная вам ссылка отдаёт разрешающий CORS-заголовок (Access-Control-Allow-Origin: * и сопутствующие), поэтому её можно запросить напрямую аяксом через обычный формат JSON.

    Пример: https://codepen.io/smilingcheater/pen/PozpmXK
    Так же обратите внимание, что в нужной вам ссылке другой формат данных. Смотрите что именно приходит и как это обрабатывать при выводе результатов
    Ответ написан
  • Как удалить дубли со странным url в битрикс?

    smilingcheater
    @smilingcheater
    Эти "дубли" выглядят как дописанный к текущей странице номер телефона, либо номер телефона + кусок вёрстки. Проверьте ссылки, которые стоят на номерах телефонов на этой странице. Ссылка на номер телефона должна начинаться с протокола tel:, дальше должны идти цифры номера телефона без каких-либо доп. символов типа пробелов, скобок, плюсов и т.д.
    Почему это именно дубли, т.е. почему у вас открывается контент основной страницы/раздела - надо спрашивать у вашего роутинга. Т.к. это Битрикс - я предположу что в этом разделе лежит какой-то комплексный компонент, который сам должен разруливать роутинг. Либо он не умеет в принципе обрабатывать некорректные ссылки, либо в его настройках не выставлен флаг, что надо выставлять 404 для несуществующих ссылок.
    Ответ написан
    Комментировать
  • Как вытащить обрезанное изображение с холста Canvas?

    smilingcheater
    @smilingcheater
    Дмитрий, Вы созданному канвасу после создания не задаёте размеры
    canvas.setAttribute('width', ....);
    canvas.setAttribute('height', ....);
    Пропишите сюда размеры результирующего изображения
    И рисуйте изображение на канвасе от точки 0:0
    Ответ написан
    Комментировать
  • Почему не компилируется vue-cli?

    smilingcheater
    @smilingcheater
    Вы папку node_modules скопировали со старого компа?
    У вас в ошибке написано, что для текущей версии ноды нет бинарных биндингов.
    У вас стоит сейчас 12 нода, а стояла 14

    Удалите папку node_modules и установите зависимости заново.
    Ответ написан
    Комментировать
  • Где именно тут Mixed-content?

    smilingcheater
    @smilingcheater
    У вас кривые ссылки на фоновые картинки в коде
    https://pasteboard.co/JjqOZPO.png
    браузер пробует скачать их
    Ответ написан
    2 комментария
  • Что значит false при вызове компонента?

    smilingcheater
    @smilingcheater
    В этом параметре вызова передаётся родительский компонент, если этот компонент вложен в его шаблон. Требуется для корректного кеширования. В документации это есть.
    https://dev.1c-bitrix.ru/api_help/main/reference/c...
    Ответ написан
    1 комментарий
  • Почему выдает ошибку undefined?

    smilingcheater
    @smilingcheater
    1. у вас в выложенном на гитхаб проекте не прописаны нужные зависимости в package.json - gulp-clean-css, gulp-concat, gulp-less, gulp-stylus
    2. Путь в файлу test.sass в path.styles.src формируется криво - получается что-то типа
    C:/Users/koles/Desktop/gulp-switzerland/src/sass/test.sass/sass/test.sass - 2 раза кусок sass/test.sass в конце
    3. а зачем вообще хардкодить полный путь? Это же не будет работать нигде , кроме вашего компа?
    4. Даже после этих исправлений всё равно выведется ошибка
    Error: File not found with singular glob: C:/Users/koles/Desktop/gulp-switzerland/src/sass/test.sass (if this was purposeful, use `allowEmpty` option)
    Внимательно её прочитайте.
    И исправьте.
    Ответ написан
    2 комментария
  • Как анимировать эту SVG картинку?

    smilingcheater
    @smilingcheater
    @keyframes rotation {
            from {
                transform: rotate(0deg);
            }
            to {
                transform: rotate(360deg);
            }
        }
        svg {
            animation: rotation 1s steps(9) infinite;
        }
    Ответ написан
    Комментировать
  • Как задать и получить пользовательские параметры настоек компонента Bitrix в массив $arParams?

    smilingcheater
    @smilingcheater
    Переношу комментарии в ответ.

    Вы точно сохранили файл с подключением этого компонента после изменения его настроек?
    Если посмотреть файл, где вы подключаете компонент, как PHP-код - в нём заданы эти параметры?

    Вы пока только описали эти параметры. Пока вы не сохраните компонент с подключенными параметрами - в $arParams они не попадут. В $arParams попадает только то, что прописано в php-коде.
    Достаточно будет зайти в настройку подключения компонента (то окно, которое у вас в вопросе на 2 скрине) и сохранить его.
    Ответ написан
    Комментировать
  • Как работает Битрикс с memcached?

    smilingcheater
    @smilingcheater
    Отвечу в обратном порядке - мерялка скорости работы проверяет не только скорость отдачи HTML бекендом (битриксом), но и насколько быстро этот HTML выводится браузером. Если у вас быстрый бек, но тяжёлый фронт - мемкеш вам ничем не поможет. Надо смотреть подробную статистику что именно тормозит.

    Вы пишете, что у вас установлен PHP 7 - а какой именно - 7.0, 7.1, ..., 7.4?
    И какое у вас веб-окружение - шаред-хостинг, vps/vds, BitrixVM?
    В общем случае чтобы заставить битрикс работать с мемкешем, надо:
    (все команды привожу для Debian/Ubuntu)
    apt-get install -y memcached - поставить на сервере сам мемкеш
    apt-get install -y php7.1-dev - установить dev-пакет для вашей версии PHP
    pecl install memcache - через PECL установить модель memcache для битрикса
    возможно потребуется установить дополнительные библиотеки, чаще всего спотыкается на zlib:
    apt-get install -y zlib1g-dev
    после этого добавить подключение библиотеки в php.ini:
    extension=memcache.so
    и перезапустить вебсервер
    После этого в конфиге битрикса прописать (файл /bitrix/.settings.php)
    'cache' => array(
            'value' => array (
                'type' => 'memcache',
                'memcache' => array(
                    'host' => '127.0.0.1',
                    'port' => '11211'
                ),
                'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
             ),
        ),

    (заменив текущий блок 'cache')
    Ответ написан
    Комментировать
  • Почему в элемент не добавляется массив изображения?

    smilingcheater
    @smilingcheater
    Зачем вы хотите в каждый отзыв копировать аватар пользователя? Это как минимум не рационально. В отзыве уже хранится ИД пользователя, при выводе картинки просто доставайте его аватар.
    Ответ написан
  • Загловок h1 выводиться только с припиской в url - ?clear_cache=Y?

    smilingcheater
    @smilingcheater
    Предположу, что этот заголовок у вас выводится где-то внутри шаблона компонента, и вы меняли вёрстку в этом шаблоне с h2 на h1.
    Почему так происходит - потому что компоненты в битриксе кешируются. Обновление кеша рендерит текущую страницу без учёта кеша, но глобально кеш не сбрасывает.

    Сбростьте полностью кеш битрикса. Админка - Настройки - Настройки продукта - Автокеширование. Вкладка "Очистка файлов кеша", выбрать "Все", и нажать "Начать".
    Ответ написан
  • Почему не работает push на git?

    smilingcheater
    @smilingcheater
    Насколько я понимаю - в гите сильно большой объём изменений накопился. Попробуйте разбить пуш на 2 - сделать ветку из какого-нибудь промежуточного коммита (промежуточного между вашим мастером и тем, что на гитлабе), пушнуть её. Потом пушнуть текущего мастера.
    Ответ написан
  • Как найти метод с медленным запросом к БД и как сократить время выполнения?

    smilingcheater
    @smilingcheater
    У вас эти картинки реально на файловой есть? Выглядит так, будто картинки нет, вместо неё возвращается 404, которая отдаётся битриксом. Я бы предложил открыть в браузере 404, включить битриксовую отладку (панель эрмитажа, развернуть, кнопка "Отладка") и в выведенной отладочной информации искать виновника.

    На вашем скрине в статистике время выполнения запросов порядка 0.25-0.35 сек, но время выполнения всей страницы доходит до 4-5 сек. Выглядит так, будто какой-то тяжёлый компонент на 404 работает с выключенным кешированием.

    А ещё лучше - настроить, чтобы картинки отдавал NGINX, и 404 на картинки тоже он.
    Ответ написан
    1 комментарий
  • Проблема с повторным запуском контейнера?

    smilingcheater
    @smilingcheater
    Ругается, что не может найти сеть с каким-то странным именем. Вероятно надо как-то сделать чтобы имя сетевого адаптера (?) не менялось. Пробовали прописывать конкретные настройки сети в докер-композе? https://docs.docker.com/compose/networking/

    Опишите секцию network
    Ответ написан
    Комментировать
  • Почему Phpstorm запрашивает несуществующий путь к файлу?

    smilingcheater
    @smilingcheater
    Попробуйте отключить "виртуальный диск" в настройках опенсервера (Настройки, вкладка "Сервер", самая первая настройка). Опенсервер почему-то упорно думает, что установлен на диске E. После этого перезапустите опенсервер (возможно потребуется перезагрузиться).

    Либо пропишите конктеный путь до папки в расширениями:
    ПКМ на флажок опенсервера в трее - Дополнительно - Конфигурация - PHP
    откроется файл шаблона конфигурации (не самого конфига, а шаблона, из которого опенсервер при каждом запуске собирает свой конфиг. Так что после изменения этого файла обязательно перезапускать опенсервер)
    Ищите строку extension_dir=....
    У меня оно равно
    extension_dir = "%sprogdir%/modules/php/%phpdriver%/ext/"
    переменная sprogdir - "Генерируемый путь до папки с Open Server с учетом виртуального диска (слеш "/")" (описано в доках https://ospanel.io/docs/ )

    Надо заполнить переменную extension_dir реальным полным путём до папки \modules\php\PHP_7.1-x64\ext\ и перезапустить опенсервер, чтобы он перегенерировал файл конфига
    Ответ написан
    1 комментарий
  • Почему "array_walk_recursive" не срабатывает в данном случае?

    smilingcheater
    @smilingcheater
    Эм, ну как бы потому, что это array_walk_recursive.
    Если она встречает массив как значение текущего ключа - она в него заходит и начинает применять коллбек на скалярные элементы в нём.
    ---
    Итоговый вариант ответа: написать собственную рекурсивную функцию для обхода массива. Например вот так:
    function recursiveProcess($array) {
        foreach ($array as $key => $value) {
            if ($key == 'car' && is_array($value) && isset($value['color'])) {
                // Нашли!
            }
            
            if (is_array($value)) {
                // Встретили массив - заходим в него
                recursiveProcess($value);
            }
        }
    }
    Ответ написан