• Как настроить редирект с URL в верхнем регистре на соответствующие им URL в нижнем регистре?

    @dodo512
    Начиная с версии Apache 2.4 https://httpd.apache.org/docs/2.4/expr.html#functions
    RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.+)/"
    RewriteRule [A-Z] %1 [R=301,L]
    Ответ написан
    Комментировать
  • Как получить из url в переменную без слэшей?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Пример с вашей ссылкой достаточно простой, но чаще в ссылке присутствует больше компонентов, а в конце может быть слеш. Вот 3 универсальных способа решить вашу задачу

    1. С помощью функции pathinfo()

    $string = 'site.by/cat/subcat/name/';
    var_dump(pathinfo($string, PATHINFO_BASENAME)); // выводим "name"


    2. С помощью функции explode()

    $string = 'site.by/cat/subcat/name/';
    
    $string = preg_replace('/(\/)$/', '', $string); // убираем последний слеш если есть
    $array = explode('/', $string); // делим строку на массив
    $array = array_reverse($array); // переворачиваем
    
    var_dump($array[0]); // выводим первый элемент "name"


    3. С помощью регулярки

    $string = 'site.by/cat/subcat/name/';
    $name = preg_replace('/(([\w\d\-\_\:\.\/]+)\/([^\/]+)[\/]?)$/', '$3', $string);
    
    var_dump($name); // выводим "name"
    Ответ написан
    1 комментарий
  • Как изменить API готового компонента из marketplace?

    alexyarik
    @alexyarik
    Битрикс разработчик
    документации к компоненту никакой нету

    Используйте модуль сканер функций АПИ
    https://marketplace.1c-bitrix.ru/solutions/bitrix....
    Ответ написан
    Комментировать
  • Где лежат данные для функции showhead в bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Файл: /bitrix/modules/main/classes/general/main.php
    Строки: ~837 - ~847
    Выдержка кода:
    public function ShowHead($bXhtmlStyle=true)
    	{
    		echo '<meta http-equiv="Content-Type" content="text/html; charset='.LANG_CHARSET.'"'.($bXhtmlStyle? ' /':'').'>'."\n";
    		$this->ShowMeta("robots", false, $bXhtmlStyle);
    		$this->ShowMeta("keywords", false, $bXhtmlStyle);
    		$this->ShowMeta("description", false, $bXhtmlStyle);
    		$this->ShowLink("canonical", null, $bXhtmlStyle);
    		$this->ShowCSS(true, $bXhtmlStyle);
    		$this->ShowHeadStrings();
    		$this->ShowHeadScripts();
    	}


    P.S. Худо-бедно путешествовать по ядру битрикса можно и через онлайн-документацию по ссылке: bxapi.ru/src/?id=166792
    Ответ написан
    6 комментариев
  • Как сделать вызвать функцию чтобы получилась рекурсия?

    Melkij
    @Melkij
    PostgreSQL DBA
    И не стыдно? Моментально в "Пригласить эксперта" жмёте.

    У функций не бывает ключевого слова public. Следовательно, удивление PHP выглядит вполне корректным. видимо функции delDir у вас не объявлено.
    А методы класса вызываются именно как методы.
    Ответ написан
    1 комментарий
  • Как внедрить парсер в Bitrix?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Написать агента достаточно просто, но без конкретных данных рассматривать вашу ситуацию довольно сложно.
    Я могу порекомендовать общие подходы для более глубокого изучения проблемы.

    1) Дописываем разработанный механизм логгирование.
    Принимая во внимание, что windows-путь и linux-путь это 2 разных способа написания путей, то путь к этому файлу лучше определить относительно $_SERVER['DOCUMENT_ROOT'] и с использованием функции realpath
    Парсер должен логгировать:
    - Время вызова
    - Путь до файла (откуда он собирается читать)
    - Наличие файла (есть ли этот файл вообще)
    - Корректность файла (правильное ли расширение, все ли столбцы есть и т.п.)
    - [все бизнес-моменты, как успех, так и провал, в том числе причину провала]
    - Время завершения вызова (когда работа закончена)

    2) Проверяем ТТХ парсера
    - Есть ли спец. требования (например bitrix ставит mb_string = 2, многие парсеры работают строго при mb_string = 0)
    - Версию php (миноры должны быть строго одинаковы)
    - Наличие php-модулей (а вдруг вы используете XMLReader, который на боевом выключен?)

    3) Если все выше "Ок", то проверяем - работает ли парсер без агентов (т.е. прямым вызовом c подключением ядра битрикса)
    Проверяем, чтобы это был не просто php код, а это был код оформленный по соответствующим агентам правилам. Смотрим чтобы лог-файл корректно отработал и записал нужную информацию!
    Особенно поможет документация: https://dev.1c-bitrix.ru/learning/course/index.php...

    4) Создаем агента и смотрим ход выполнения.
    Если что-то не работает - смотрим логи и правим.

    P.S. Если версия вашего php выше 7, то в работе очень поможет try-catch с Throwable, который поймает многие перехватываемые ошибки исполнения.
    Ответ написан
    Комментировать
  • Как передать данные в инфоблок с помощью формы, на AJAX?

    alexyarik
    @alexyarik
    Битрикс разработчик
    1. Добавляете для формы обработчик action="create_form.php"
    2. данные формы получаете в массиве $_POST
    3. Полученные значения передаёте ключам массива параметров $arLoadProductArray
    4. Далее создаёте новый элемент new CIBlockElement
    https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
    Ответ написан
    Комментировать