Битрикс где файл init php

Обновлено: 02.07.2024

activities — действия БП; components — компоненты; gadgets — гаджеты рабочего стола; modules — модули; php_interface — init.php, папка user_lang; templates — шаблоны сайтов, шаблоны компонентов, шаблоны страниц.

Весь код, который пишется для проекта должен находиться в папке

Находится ядро системы, которое изменяется средствами системы обновлений CMS. Никогда не правьте файлы ядра.

Основной репозиторий проекта, в нем содержится все, что относится к разработке проекта.

Файлы относящиеся к IDE. Название папки зависит от используемой вами IDE, если отличается от указанного, то нужно включить вашу папку в исключения git.

/public

Корневая директория сайта, все файлы, доступные из сети находятся в ней.

/bitrix

Ядро систему 1С Битрикс, изменять файлы в этой директории категорически запрещается, исключением являются файлы, поддержка которых не реализована в папке локал, например файлы настроек БД.

/bitrix/.git

Репозиторий подмодуля ядра системы.

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

/bitrix/.gitignore

Файл исключений для репозитория ядра системы.

/bitrix/php_interface/dbconn.php

Файл конфигурации для старого ядра Битрикс. В целях повышения безопасности этот файл включен в исключения git, для настройки системы при переносе из репозитория присутствует пример файла настроек dbconn.example.php

/bitrix/php_interface/dbconn.example.php

Пример файла настроек.

/bitrix/.settings.php

Файл конфигурации для нового ядра Битрикс. В целях повышения безопасности этот файл включен в исключения git, для настройки системы при переносе из репозитория присутствует пример файла настроек .settings.example.php

/public/bitrix/.settings.example.php

Пример файла настроек.

/upload

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

/upload/.htaccess

Стандартный код от битрикса не отключает обработку PHP, когда оно в режиме FastCGI (специфика режима). Для отключения обработки PHP в режиме FastCGI нужно сперва аннулировать типы, т.е. правильно файл должен содержать следующий код:

Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.

Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте "1С-Битрикс". .

Курс для разработчиков - продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.

Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:

  • Интерфейс программы - в главе Элементы управления курса Контент-менеджер.
  • Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
  • Информационные блоки - в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
  • Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
  • Работа с инструментами системы - в главе Работа с инструментами курса Администратор. Базовый.
  • Модуль Поиск - в главе Поиск курса Администратор. Базовый.
  • Вся информация по администрированию модулей размещена в курсах:
      - модули "1С-Битрикс: Управление сайтом" - модули "1С-Битрикс: Управление сайтом", связанные с коммерческой деятельностью в Интернете. - модули "1С-Битрикс: Корпоративный портал"

    Как построен курс

    Общепринятая градация квалификации разработчиков в рамках курса обозначает что:

    • Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
    • Middle разработчик может работать с API Bitrix Framework.
    • Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.
    Примечание: Такое построение удобно для пошагового изучения принципов работы Bitrix Framework. По этому же принципу построены и тесты. Но такая структура не очень удобна для использования содержания курса как постоянного источника информации. Что бы переключить курс в режим Справочника, воспользуйтесь переключателем в верхнем правом углу шапки курса.

    Начальные требования к подготовке

    Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):

    • основами PHP, баз данных;
    • основами HTML, CSS.

    У нас часто спрашивают, сколько нужно заплатить

    Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.

    Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

    Баллы опыта

    В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
    окно подтверждения:


    уроке.

    Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

    Тесты

    После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

    Комментарии к статьям

    Что дальше?

    Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:

    Для преподавания оффлайн

    Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).

    Если нет интернета

    iPhone:
    FBReader
    CoolReader
    iBook
    Bookmate

    Windows:
    Calibre
    FBReader
    Icecream Ebook Reader
    Плагины для браузеров:
    EpuBReader – для Firefox
    Readium – для Google Chrome

    iOS
    Marvin for iOS
    ShortBook
    обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.

    Свои СТИЛИ в визуальном редакторе 1С Битрикс

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

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

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

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

    init.php подключение в прологе

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

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

    Документация 1С Битрикс

    Если в системе несколько сайтов, то делается отдельная директория с ID сайтом, где для каждого сайта можем создать индивидуальный init.php .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    И распринтуем его с помощью нашей функции <?PR($arr)?>

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

    распечатка массива

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

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

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

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

    Отключение footer

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

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

    Часто встречаются, что некоторые разработчики в файл 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

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

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

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

    Как избежать ошибок в файле init.php

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

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

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

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

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

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

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

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

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

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

    Параметр для включения файла init.php

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

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

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

    Максим Месилов: С течением времени на проекте накапливается ворох «общих» функций, обработчиков событий, специфических библиотек и т.д. Очень часто всё это валят в init.php и там чёрт ногу сломит.

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

    Файл может содержать в себе инициализацию обработчиков событий, подключение дополнительных функций - общие для всех сайтов. В этом случае он располагается по пути /bitrix/php_interface/init.php . Для каждого отдельного сайта может быть свой аналогичный файл. В этом случае он располагается по пути /bitrix/php_interface/ID сайта/init.php . Если есть оба файла, то система подключит оба, но первым при этом будет файл /bitrix/php_interface/init.php .
    Начиная с версии 14.0.1 рекомендуется размещать этот файл в папке /local Чтобы сделать жизнь разработчиков проектов удобнее основные файлы проекта вынесены из папки /bitrix в папку /local . Это позволит изолировать изменяющиеся файлы проекта от папки продукта. По сути, в исключения достаточно будет добавить одну папку /bitrix .

    Подробнее . по пути /local/php_interface/ID сайта/init.php .

    Примечание: Файл /bitrix/php_interface/ID сайта/init.php не подключается в административном разделе, так как там отсутствует понятие сайта. Учтите и то, что SITE_ID равен текущему языку и, следовательно, может подключиться не тот файл, который ожидался.

    Код условного отключения по значению $_SESSION в файле init.php не работает, так как эта переменная определяется позже.

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

    Рекомендуется придерживаться следующих самых общих правил:

    1. init.php содержит только подключения файлов. Причем подключать эти файлы желательно через __autoload. Штатными средствами это делается так:
    2. Если функционал используется только на одном из сайтов в системе, то он выносится в свой init.php;
    3. Обработчики событий лучше группировать в одном файле и тщательно аннотировать где они используются и какая задача перед ними стоит.

    Как избежать проблем при редактировании init.php без ftp/ssh доступа

    • У клиента хостинг под Windows, а у вас "серый" IP и ftp не работает.
    • Хостинг под Linux, но php и ftp работают из-под разных пользователей и файл недоступен для редактирования по ftp.
    • У клиента свой сервер и доступ по ftp он не дает.

    Если доступ есть только через веб, то один из наиболее простых способов - вынос всего вашего кода во внешний файл и подключение его примерно так:

    Примечание: Параметр в адресной строке noinit=Y - отключает подключение, noinit=N - включает подключение. Свой функционал должен быть размещен (в примере) в /bitrix/php_interface/functions.php .

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

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

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

    init.php или собственный модуль?

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

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

    Либо, при многосайтовости, есть и ещё один способ: воспользоваться уже готовыми папками. Например, папками шаблонов. (Теоретически, с точки зрения системы, это "шаблон", для нас - просто общее хранилище файлов.)

    И при втором и первом способах код include $_SERVER["DOCUMENT_ROOT"]."/bitrix/templates/. " ведет в одно и то же место для всех сайтов, где можно разместить общие для всех проектов файлы. В том числе никто не мешает создать свою папку для своих классов и уже оттуда их подключать, обращаясь к /bitrix/templates/my_classes/. .

    Использование симлинков на папки с кастомными библиотеками в точно такой же степени обязаны поддерживать совместимость как и модули. (Не важно где именно, при этом, они будут располагаться). Нет никакой особой разницы в подходах при поддержке и разработке, только охват проектов в первом случае ограничен рамками одного сервера.

    Модули. Использование init.php будет предпочтительным если создаются проекты, которые точно всю жизнь проживут на одном сервере, и вы хотите максимально минимизировать затраты на поддержку кастомных библиотек. Желательно также чтобы эти библиотеки поддерживал один и тот же человек. Но если планируется эти наработки также использовать для заказных проектов, то дальновиднее делать модуль.

    Читайте также: