Задать вопрос
  • Почему сайт загружается быстрее без плагина для кэширования?

    почему PageSpeed Insights показывает обратное?

    На эту часть ответить легко. PageSpeed Insights оценивает по формальным признакам, ожидая, что внедрением рекомендаций занимается человек, и человек делает это с умом.
    А плагин позволяет так же формально подгонять результат под оценку - переносить javascript в конец, склеивать css в один файл. Но, по факту, от этих автоматических действий ситуация лучше не становится.

    Замедление может быть от того, что регулярки ( я предполагаю, что там всё на регулярках), которыми оперирует плагин, тяжёлые.
    Ответ написан
    Комментировать
  • Как правильно использовать python скрипт через PHP backend?

    Если этот python скрипт можно запустить из шелла, то используйте shell_exec(), или backtick operator, или ещё что-нибудь ( в конце страниц онлайн мануала есть секция "See also" )
    Ответ написан
    Комментировать
  • Настройка поддоменов, как?

    на уровне .htaccess уже поздно что-то делать. Это настраивается на уровне VirtualHost: в ServerName пишете основной домен, в ServerAlias поддомены ( можно указать wildcard , в документации есть пример ).
    Необязательно делать именно так, но это самый простой и читабельный вариант.
    Ответ написан
    Комментировать
  • Как вставить переменную из js в template.php и обновить страницу?

    Вам надо добавить селекту имя и как-то сабмитить форму с селектом (на выбор есть GET и POST). Соответственно, в скрипте значение выбранного города будет в одном из значений в массиве $_GET или в массиве $_POST .

    P.S. Правильно пишется "city". Учите английский, в будущем пригодится.
    Ответ написан
    Комментировать
  • Почему возникает ошибка .htaccess со знаком $ (конец строги)?

    Ломается вот из-за этой конструкции:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php

    Если её убрать, то всё работает.
    С ней сообщение в логе:
    AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

    Собственно, частью про 'LogLevel debug' я и рекомендую Вас воспользоваться для удовлетворения любопытства
    Ответ написан
    Комментировать
  • Как написать сообщение коммита согласно спецификации?

    git commit -m 'fix (catalog): починил подменю
    
    после редизайна подменю в каталоге уехало вправо. Поправил css.
    
    https://багтрекер/ссылка-на-таск'
    Ответ написан
    Комментировать
  • Как подключить reCAPTCHA v3 к форме 1С Битрикс?

    CEvent::Send() только ставит сообщение в очередь ( читай "пишет в таблицу в БД"). А отправлено оно будет только на следующем хите, если повезёт.
    Для немедленной отправки используйте CEvent::SendImmediate()
    Ответ написан
  • Как защититься от создания пустых заказов ботами?

    повесьте обработчик на событие onOrderAdd и записывайте в какой-то лог всё, что нужно: $_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI'], что-нибудь ещё
    Ответ написан
    Комментировать
  • Как передать данные от компонента к компоненту при композитном сайте на Битрикс?

    Через параметры этого другого компонента. Если компоненты разделены, через $GLOBALS или их аналог $APPLICATION->SetPageProperty() , $APPLICATION->GetPageProperty()
    Ответ написан
    Комментировать
  • Как подключиться к Web-серверу по SSH и работать с Git через графическую оболочку наподобие Sourcetree?

    Мне кажется, Вы не очень правильно понимаете работу с гитом.
    Есть рабочая копия. Есть репозиторий ( по сути, такая же рабочая копия плюс обслуживающее её ПО).
    Традиционно работа строится так:
    • у Вас есть локальная рабочая копия, склонированная из какого-то репозитория,
    • на веб-сервере есть ещё одна рабочая копия, склонированная из того же репозитория,
    • Вы локально делаете правки, пушите их в репозиторий,
    • Заходите на веб-сервер по ssh и там делаете git pull. Ради одной-двух команд графическая оболочка не нужна.

    Вы, конечно, можете смонтировать удалённую папку как локальную ( в Linux это делается через FUSE, вроде бы), и натравить Sourcetree на точку монтирования. Но лично я такое не одобряю
    Ответ написан
  • Вывести описание раздела каталога Bitrix над его элементами?

    bitrix:catalog - это комплексный компонент. На странице element.php шаблона он подключает обычный компонент bitrix:catalog.element .
    Скорее всего, вам нужно посмотреть $arResult в шаблоне компонента bitrix:catalog.element -если там нет нужных данных, то догрузить их обращением к API в result_modifier.php .
    Ответ написан
    Комментировать
  • Как в Битрикс синхронизировать товары между основным сайтом и сайтом для разработки?

    Добавьте ещё b_file - там картинки.

    Если Вы хотите ограничиться только этими таблицами, то не так страшен чёрт, как его малюют. Я бы действовал так:
    1) через Adminer выгрузил структуру нужных таблиц на боевом и на тесте.
    2) сравнил эти структуры каким-нибудь инструментом ( например, Meld). В хорошем случае разница будет только в чём-то незначительном, типа автоинкремента.
    3) если всё хорошо, перелил таблицы.
    4) переиндексировал поиск, если это нужно.
    Возможно, диапазон таблиц стоит расширить до b_iblock_* , b_catalog_*
    Ответ написан
    Комментировать
  • Алгоритмы и структуры данных?

    поскольку f(n) асимптотически неотрицательна, то есть хотя бы иногда образается в ноль, то g(n) не может быть асимптотически положительной, так как ей необходимо ограничивать f(n) снизу: c*g(n) ≤ f(n).
    Для примера можно взять функцию sin(x)+1
    Ответ написан
    Комментировать
  • Как создать строку '-x-xx-xxx-xx-x-'?

    мой вариант:
    const divider = '-';
    const symbol = 'x';
    let x = symbol;
    let prefix = divider;
    let suffix = divider;
    for (let i = 0; i < 2; i++) {
        prefix += x + divider;
        suffix = divider + x + suffix;
        x += symbol;
    }
    let result = prefix + x + suffix;
    console.log(result);
    Ответ написан
    3 комментария
  • Поврежденный файл с расширением .NEF, как открыть?

    Там нечего восстанавливать. Второй файл весь забит двоичными единицами.
    Ответ написан
    Комментировать
  • Как изменить шаблон у внутренних страниц?

    Делайте так же, что Вас останавливает? Если не хотите плодить строчки, то я вижу 2 пути:
    1) использовать в "Тип условия" значение "Выражение PHP", а в "Условие" регулярное выражение. Вот пример от коробочного правила:
    preg_match("#^/video/([\.\-0-9a-zA-Z]+)(/?)([^/]*)#", $GLOBALS['APPLICATION']->GetCurPage(0))

    2) сделать комплексный компонент, регулярку задать в нём, поместить его, например, в /test/index.php . Или аналогично сделать через роутинг. Тогда в настройках сайта будет достаточно одной строчки с типом "Для папки или файла" .
    Ответ написан
    Комментировать
  • Как в Битриксе отключить товарное предложение?

    к ответу tgarl добавлю только, что если делать обработчик для onBefore события, то в нём не надо самому делать апдейт в базе, а надо делать
    $arFields['ACTIVE'] = 'N';
    Именно для этого $arFields и принимают по ссылке. И надо не забывать, что на том же событии могут быть другие обработчики, со своими изменениями
    Ответ написан
    Комментировать
  • Как настроить nginx + php fpm для 1c bitrix?

    попробуйте вот это:
    try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args;

    заменить на:
    try_files $uri $uri/ @bitrix;
    И добавить именованный location по образцу PHP-шного:
    location @bitrix {
      include fastcgi_params;
      fastcgi_intercept_errors on;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
      try_files $uri =404;
      fastcgi_read_timeout 3600;
      fastcgi_send_timeout 3600;
      fastcgi_param HTTPS "on";
      fastcgi_param SERVER_PORT 443;
      fastcgi_pass 127.0.0.1:{{php_fpm_port}};
      fastcgi_param PHP_VALUE "{{php_settings}}";
    }

    ( я это не проверял)
    Ответ написан
  • Почему иногда не срабатывает событие?

    Вы неправильно используете аргументы в CCrmCompany::getList(), из-за этого получаете вообще все компании и вынуждены их перебирать. Плюс, для событий "OnBefore....Add" ключ ID не может существовать - ведь такие события происходят до создания новой записи ( в смысле элемента, раздела, компании ).

    Должно быть что-то такое ( префиксный фильтр в arFilter должен работать, но я не проверял ):
    function OnBeforeCrmCompanyAddHandler(&$arFields)
    {
        $res = CCrmCompany::getList(['ID' => 'ASC'], ['=TITLE' => $arFields["TITLE"]], ['ID'], 1);
        if ($res->Fetch()) {
            $arFields["RESULT_MESSAGE"] = "Данная компания уже существует!";
            return false;
        }
        return true;
    }

    Список префиксов можно посмотреть в файле bitrix/modules/main/classes/general/sqlwhere.php , в свойстве $operations
    Ответ написан
    Комментировать
  • Как изменять инфу на сайте?

    ткните в любой из сетевых запросов ( в Вашем случае - картинку в середине скриншота ), и увидите заголовки запроса и ответа. И погуглите "http cache control".
    По рекомендациям гугла, ресурсы ( assets ) надо кешировать на год, а изменять через изменение пути к ресурсу.
    Ответ написан
    5 комментариев