Ответы пользователя по тегу PHP
  • Как со стринги сделать html php?

    @Kontrael
    Не понимаю, откуда у вас на скрине "body=", но вообще прогоните html через urldecode.

    Но в целом, вы выбрали плохой путь реализации.
    Письма так не отправляются. У вас должны быть сверстаны шаблоны писем, которые лежат в отдельных файлах, вы их читаете и подставляете в шаблоны нужные данные.
    Ответ написан
    Комментировать
  • Почему не подключается ядро (prolog_before.php) при вызове скрипта по cron?

    @Kontrael
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Cache-Control: no-cache, must-revalidate");
    header("Content-type: text/html; charset=utf-8");
    header("Pragma: no-cache");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
    define("NO_KEEP_STATISTIC", true);
    define("NOT_CHECK_PERMISSIONS", true);
    
    if (!$_SERVER["DOCUMENT_ROOT"]) {
        $_SERVER["DOCUMENT_ROOT"] = '/home/bitrix/www'; //тут укажите свой путь
    }
    require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
    Ответ написан
  • Как задать правило для данной функции?

    @Kontrael
    У вас не верный подход в принципе. Вы смешиваете логику и представление, но это отдельная тема.

    Вот это:
    if ( '' === $product->get_price() || 0 == $product->get_price() )

    Вообще можно заменить на
    if (!$product->get_price())

    И тогда необходимость в функции
    product_price_free_zero_empty
    отпадает.
    В коде, который собирает html страницы пишете что-то вроде:
    if (!$product->get_price()){
        echo '<span class="woocommerce-Price-amount amount">By request</span>';
    }

    А под тегами, где нужна кнопка:
    if (!$product->get_price()){
        echo '<input type="button" value="Кнопка" /> ';
    }
    Ответ написан
    3 комментария
  • Как профилировать php на 1с-Битрикс через XHProf?

    @Kontrael
    Профилировщик это уже скальпель, для поиска конкретного проблемного куска кода, натравливать его на весь хит - решение сомнительное, которое выльется в проблемы с которыми вы столкнулись.
    Локализуйте проблему и собирайте данные профилировщиком уже внутри компонента. Но по опыту, это действительно нужно процентах в 10 случаев.
    Начните со встроенного отладчика.
    5ec67305b1f79562550586.png
    Посмотрите число запросов с кешем и без, время выполнения. Там же увидите, какие компоненты много себе позволяют, и там уже, при необходимости, запускайте профилировщик. Хотя скорее всего, вы увидите проблему до его запуска.
    Ответ написан
    Комментировать