Bitrix php interface init php

14.Ноя.2019 Не выгружаются заказы в 1С
Не выгружаться заказы в 1С из сайта на битрисе могут по разн.

07.Ноя.2019 Видео youtube на фон сайта
Как-то на сайт мне нужно было вывести видео на весь экран, к.

05.Ноя.2019 Свойство с большим списком (датой)
Если в инфоблоке необходимо использовать свойство типа списо.

05.Ноя.2019 Основные настройки BitrixVM
Приведу основные пути и файлы конфигурации в виртуальной маш.

24.Окт.2019 Безлимитный интернет от Билайн не безлимитный
Как-то мне пришла смс от Билайна, что мне доступна услуга бе.

24.Окт.2019 Как мне помог сервис kwork.ru
Хочу поделиться своей истории о том, как я начал зарабатыват.

04.Май.2019 Вывод ошибок в .settings.php
Если у вас на сайте произошла ошибка, но она не отображается.

15.Июн.2018 Пагинация REL PREV NEXT 1С-Битрикс
Что бы облегчить поисковикам работу можно указать в теге hea.

07.Июн.2018 Как выровнять блок по центру экрана
Что бы выровнять блок по горизонтали, достаточно прописать с.

  • CSS / CSS3
  • Flexbox CSS
  • JavaScript
  • JavaScript с нуля
  • JS и Jquery
  • Уроки по 1С-Битрикс
    • Контент менеджер
      • Авторизация на сайте
      • Элементы управления
      • Работа с информацией
      • Управление структурой
      • Сайт на 1С-Битрикс
        • Создание landing page
        • Видео новости
        • Модули расширений
        • Расширения и плагины
          • Bootstrap
          • Дополнительное видео

            ПОДПИСКА на УРОКИ

            По немного приучаемся работать с документацией битрикс, в уроке разберем такой файл как init.php , его назначение, где он находиться, какие задачи выполняет и как с ним работать.

            Определение:
            init.php — необязательный файл в рамках структуры файлов Bitrix Framework. Он автоматически подключается в прологе при загрузке страницы.

            Назначение файла init.php

            Сам по себе файл не обязательный, особенность его в том, что он подключается в начале каждой страницы сайта и служит для инициализации обработчиков событий или подключение дополнительных функций.

            То есть, в нем мы можем размещать код, который необходим для выполнения на каждой странице сайта.

            Последовательность очереди подключения можно посмотреть в документации по битрикс, переходим на сайт документации для разработчиков, воспользуемся поиском, введем «страница подключение» и тут видим, первое идет подключение пролога, а за тем наш init.php .

            Если в системе несколько сайтов, то делается отдельная директория с >init.php .

            Расположение, создание файла init.php

            Сам файл init.php располагается в структуре сайта, в папке bitrix > php_interface > init.php и как упоминал выше он не обязательный, а следовательно, может вовсе там отсутствовать.

            Давайте его создадим через административную часть, жмем кнопку добавить, выбираем из списка «Добавить файл». Перед нами появилась форма по созданию нового файла, укажем редактировать через PHP , прописываем название нашего файла init.php , из области редактирования все удаляем.

            Для примера, определим в нем свою константу:

            Нажмем кнопку Применить.

            Затем перейдем на сайт, откроем тестовую страничку и в режиме кода вызываем константу которую определяли в init , сохраняемся.

            Получаем вывод значении dwstv. То есть, таким образом можно работать как при использовании стандартных функций php, а также писать свой код или задействовать API битрикс.

            Функция распечатки массива

            Для примера создадим свою функцию, которая будет принтовать переданный в неё массив в удобном оформлении для разработчика.

            Открываем init.php на редактирование, вставляем свой код функции, и разберем, как она работает.

            Функция принимает один обязательный параметр, $var в который передаем массив, и два не обязательных параметра, $die и $all .

            В моем случае я в начале проверяю пользователя на его ID , то есть только принтую данный массив себе, если желаете вывести массив для администраторов тогда можно воспользоваться методом $USER->IsAdmin() который позволяет распечатать массив для группы администраторов.

            Что бы ознакомиться с методом $USER->IsAdmin() более подробно, перейдите в документацию 1С — битрикс , в поиске пропишите IsAdmin , вот у нас есть его описание, мы видим что данный метод делает и какие его параметры использования.

            Возвращаемся к нашей функции, пишем оператор (ИЛИ), где является данный параметр $all равный true . Это сделано для возможности распечатать массив без авторизации.

            Ниже принтовка в оформлении, а затем условие на завершение всех операций после отработки скрипта. Этим параметром пользуюсь, когда необходимо.

            Сохранимся и перейдем на тестовую страничку. Пропишем простенький массив:

            И распринтуем его с помощью нашей функции

            Сохранимся, как видим, появилась распечатка массива.

            Если мы сейчас разлогинимся то массив нам не отобразится.

            Давайте теперь повторно авторизуемся и добавим в нашу функцию дополнительный параметру $all какое ни будь значение, и теперь этот массив будут видеть все пользователи в том числе, не авторизованные.

            Тоже самое если нам нужно завершить все операции, тогда для параметра $die введем значение и сохранимся.

            Как видите, с правой стороны исчез правый сайтбар, снизу пропал footer .

            Таким образом, работает данный скрипт, кто желает скачать его код, ссылка в верху под видео.

            Как правильно писать код в init.php

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

            Битрикс в этом случае рекомендует разбивать код логическими группами, по отдельным файлам и классам, подключая их через директиву include .

            Давайте прислушаемся к рекомендации, и весь код подключим отдельно.

            Для этого откроем init.php , скопируем весь наш код который до этого вносили Переходим в папку include , если у Вас ее нет, создайте, в ней размещаем файл functions-dump.php и перенесем полностью нашу функцию с init.php , сохранимся.

            В init.php в место функции подключаем файл functions-dump.php , для этого прописываем условие на проверку file_exists .

            С помощью $_SERVER["DOCUMENT_ROOT"] подключаемся к корню нашего сайта, далее пишем путь до файла и если он присутствует, при помощи директивы require_once подключаем его к init.php

            Сохраняемся, и мы получили вот такую ошибку.

            Parse error: syntax error, unexpected ‘/’ in /home/httpd/vhosts/dws.mcdir.ru/httpdocs/bitrix/php_interface/init.php on line 1

            Как избежать такого рода ошибок

            Я специально допустил синтаксическую ошибку, что бы Вам показать, как при редактировании файла init.php можно получить ошибку, которая полностью отрубит сайт, как визуальную, так и его административную части.

            Как можно работать через Веб

            Если у Вас доступ для работы с сайтом через веб, тогда наиболее простой способ, нужно содержание файла init.php вынести в отдельный файл и подключить его другим способом в init .

            Давайте покажу, как это все делается. В первую очередь исправлю ошибку.

            Допустим, у нас не было ошибки, но мы знаем о том, что такое может случиться. Перейдем, в наш init.php , переносим код из файла. Далее пройдем в нашу директорию include создаем тут файл initswitch.php сохраняемся.

            Открываем на редактирование init.php , и в нем прописываем следующее условие подключение.

            Давайте сохранимся и посмотрим, все ли у нас работает. Для этого перейдем на тестовую страницу, и видим, что массив у нас отображается, все работает, замечательно.

            Теперь все подключать будем при помощи initswitch.php . И так, перейдем в него и повторим нашу ошибку, открываем initswitch.php , допускаем синтаксическую ошибку, и сохраняемся.

            Сайт отрубился, как административная часть, так и визуальная его часть не доступна.

            Теперь что бы его реанимировать, нам нужно в адресной строке прописать параметр, тем самым производим отключение файла initswitch.php , а параметр &noinit=N как вы догадались, наоборот его включает.

            Тут же не выходя, открываем адресную строку и прописываем параметр &noinit=Y , мы попали в админку а дальше дело техники.

            Мое личное мнение, все же рекомендую работать с файлом init.php через FTP, так как не совсем удобно кодировать через редактор и править такого рода ошибки.

            И так, придерживаясь данных правил:

            • не пишите напрямую код в init.php ;
            • используйте отдельный файл для хранения функционала;
            • и все файлы в init.php подключайте через require_once() .

            Кому понравилось материал обязательно поделитесь им в социальных сетях, статью подготовил Горелов Денис.

            Довелось мне дописать как-то в /bitrix/php_interface/init.php кусочек кода на отправку уведомлений о новой записи в инфоблок и изменении статуса записи. Громкими словами швыряться не буду, сначала картинка:

            Например, задачка: гостевая книга. Форма на вопрос или отзыв, премодерация и ответ администрации. Чтоб было понятнее. Написание страницы, размещение компонента с формой и шаблон компонента рассматривать здесь не буду. Для многих случаев хватит «умолчального», а если экзотика — всего не опишешь.
            Теперь важное — надо сделать так. чтобы администрация получала на почту себе уведомление о том, что оставлена новая запись в гостевой (или задан вопрос). Это раз. Когда администрация прокомментировала запись, пользователю (автору вопроса) на его почту приходит уведомление, что ему ответили. А теперь по шагам.

            Шаг 1 — делаем новый тип почтового события;
            Шаг 2 — делаем новый почтовый шаблон и привязываем его к почтовому событию из п.1;
            Здесь два важных момента: текст письма с уведомлением админу и пользователю мы можем написать сами. Вот пример, взятый из шаблона письма администратору:

            Задал вопрос: #QUESTION#

            IP-адрес посетителя: #IP#

            Чтобы ответить на вопрос, можно перейти: *сюда пишем вашу гиперссылку*

            Письмо сгенерировано автоматически, и отвечать на него не нужно.

            А вот пример из шаблона уведомления пользователю:

            Здравствуйте, ваш e-mail был указан в качестве адреса для оповещения об ответе на вопрос, заданный на сайте Научной библиотеки имени Н.Н.Страхова НИУ «БелГУ».

            Вопрос и ответ опубликованы в разделе *тут урл где опубликовано на сайте*

            Если вы не задавали вопрос и не указывали свой e-mail, просто проигнорируйте это письмо.

            Мы нигде и никогда не будем публиковать ваш e-mail.

            Это письмо сгенерировано автоматически, и отвечать на него не нужно.

            Дальше — шаг 3 и самый ответственный. Лезем в /bitrix/php_interface/init.php
            Исходный код написан с комментариями, привожу его кусочек, небольшое пояснение в начале поста в картинке. НЕ ЗАПУТАЙТЕСЬ СО СКОБКАМИ для завершения функций, почаще делайте бэкапы и не забудьте разрешить участие в документообороте (для изменения статусов паблиш и драфт). Удачи!

            $arEventFields = array(
            «NAME» => $arFields[«NAME»],
            );
            $props = CIBlockElement::GetProperty(83, $arFields[«ID»]);

            while($ar_props = $props->Fetch())
            <
            switch ($ar_props[«ID»])
            < // свойства в инфоблоке — их ID и КОД
            case 2426:
            $arEventFields[«QUESTION»]=$ar_props[«VALUE»]; // Вопрос
            break;
            case 2427:
            $arEventFields[«ANSWER»]=$ar_props[«VALUE»]; // Ответ
            break;
            case 233:
            $arEventFields[«EMAIL»]=$ar_props[«VALUE»]; // Почта пользователя, задававшего вопрос
            break;
            >
            >

            if(filter_var($arEventFields[«EMAIL»], FILTER_VALIDATE_EMAIL)) <
            CEvent::Send(«NEW_QUESTION_ANSWER», ‘ab’, $arEventFields, «N», 281); // тип почтового события (NEW_QUESTION_ANSWER), символьный код сайта (ab), ID почтового шаблона (281)
            >
            >
            // сюда писать для нового инфоблока
            >
            /***********************************************************************************/

            function SendNewMessage(&$arFields) // Отправка уведомления админу, что появилась новая запись в инфоблоке
            <

            if($arFields[«IBLOCK_ > <
            CIBlockElement::SetPropertyValuesEx($arFields[«ID»],83,array(«ip»=>$_SERVER[«REMOTE_ADDR»]));
            if($arFields[«WF_PARENT_ELEMENT_ > <
            $arEventFields = array(
            «NAME» => $arFields[«NAME»],
            «ID» => $arFields[«ID»],
            /*
            «QUESTION» => «»,
            «EMAIL» => «»,
            «CITY» => «»,
            «CATEGORY» => «»,
            «IP» => «»,
            */
            );
            $props = CIBlockElement::GetProperty(83, $arFields[«ID»]);
            while($ar_props = $props->Fetch())
            <
            switch ($ar_props[«ID»])
            < // свойства в 83-м инфоблоке
            case 2426:
            $arEventFields[«QUESTION»]=$ar_props[«VALUE»]; // Вопрос
            break;
            case 233:
            $arEventFields[«EMAIL»]=$ar_props[«VALUE»]; // Почтовый ящик посетителя
            break;
            case 232:
            $arEventFields[«CITY»]=$ar_props[«VALUE»]; // Город
            break;
            case 2417:
            $arEventFields[«CATEGORY»][]=$ar_props[«VALUE_ENUM»];
            break;
            case 2425:
            $arEventFields[«IP»]=$ar_props[«VALUE»];
            break;
            >
            >
            $arEventFields[«CATEGORY»]=implode(«, «,$arEventFields[«CATEGORY»]);
            //$arEventFields[«CATEGORY»]=var_export($arEventFields[«CATEGORY»],true);
            CEvent::Send(«NEW_PROG_NAME», ‘ab’, $arEventFields, «N», 280);
            >
            >
            >


            [an error occurred while processing the directive]
            Карта сайта