+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Дабы не было не понимания, скажу сразу, данный пост я писал для людей, которые только начинают знакомиться с CMS 1С-Битрикс. Можно сказать это краткий ликбез по принципу работы данной системы. Я опишу из каких компонентов она состоит, что за что отвечает и как формируется web страница. Рекомендую прочесть данный пост перед изучением официальной документации

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

Начну с небольшого пролога, система 1С-Битрикс разработана на основе Bitrix Framework. Которая в свою очередь, вроде как основывается на Zend Framework, в официальной документации об этом сказано в скользь. Данный фреймворк построен по принципу Model-View-Controller, написан на PHP и использует в качестве СУБД следующие продукты: MySQL, Oracle, MS SQL.
CMS 1С-Битрикс платная, но есть бесплатная 30-дневная пробная версия, которую можно скачать на официальном сайте (в гугле не сложно найти).
Логически 1С-Битрикс можно разбить не следующие элементы:
  • Модули
  • Компоненты
  • Шаблон
Сравнивая 1С-Битрикс с шаблоном проектирования Model-View-Controller, можно сказать что:
  • Модуль в 1С-Битрикс это модель в MVC.
  • Компонент в 1С-Битрикс это контроллер и представление в MVC (компонент с помощью API одного или нескольких модулей манипулирует данными, а  шаблон компонента (представление) выводит данные на страницу).
  • Шаблон в 1С-Битрикс это чистое представление в понятии MVC (от него зависит не содержимое сайта а его оформление).
P.S. Это деление условно, т.к. я считаю, что фреймворк Bitrix придерживается технологии MVC не достаточно строго.
Начнем с модулей…
Модули располагаются в /bitrix/modules/, задача каждого из них –  предоставить API для выполнения той или иной функцию для CMS в целом, например: дать возможность хранить и выводить информациювроде статей, новостей, фотогалерей (модуль «информационные блоки»); организовать интернет-магазин(модуль «Интернет-магазин»); гибко управлять ценами на товар и связывать интернет-магазин с 1С:Предприятие и другими сервисами вроде Яндекс.Маркет (модуль «Торговый каталог»); датьвозможность организовать блог (модуль «Блоги»), форум (модуль «Форумы») и т.п. Предоставляемые модулями функции могут использовать как другие модули так и компоненты.
Помимо модулей, задача которых в расширение возможностей, существуют модули обеспечивающие работу самой CMS, например : модуль с именем «Главный модуль» – отвечает за общее функционирование системы и взаимодействие всех модулей; модуль «Управление структурой сайта» – предоставляет панель администратора и т.д..
Вообщем, если обобщить выше сказанное, возможности CMS 1С-Битрикс зависят от состава модулей. Состав может быть минимальным, имея только необходимые модули и немного функциональных, а может быть распухшим с набитыми кучей модулей на все случаи жизни. Поэтому в зависимости от поставленных задач CMS 1С-Битрикс продается в разных исполнениях – называемыми редакциями, перечислю их:
  • Первый сайт (5 модулей)
  • Старт (11 модулей)
  • Стандарт (19 модулей)
  • Малый бизнес (25 модуля)
  • Эксперт (33 модуля)
  • Бизнес (40 модулей)
  • Веб-кластер (40 модулей)
  • Бизнес веб-кластер (43 модулей)
Касаться технических сторон создания своих модулей я не буду, думаю web-разработчикам, которые только знакомятся с 1С-Битрикс знать о таких подробностях пока излишне. Вы всегда можете найти всю необходимую информацию в официальной документации (ссылки указанны в начале поста).
О компонентах…
Про компоненты я расскажу более подробно, править их вы будете намного чаще, чем модули. Хочу внести ясность и однозначность в понимание понятие «компонента» в данной системе. Если вы работали на других CMS, то может возникнуть путаница, традиционно модулями в CMS называют некиефункциональные расширения, которые можно устанавливать/удалить, скачивать и разрабатывать самому. Например, это может быть модуль вывода формы на e-mail подписку или модуль выводящий список популярных постов. В CMS 1С-Битрикс эту роль играют – компоненты. Список доступных компонентов вы можете увидеть в данной директории www\bitrix\components\. Где директория bitrix это пространство имен для данных компонентов, нам как бы говорят что они «битриксовые», т.е. идут с системой из коробки.
Реализация логики и способа отображения компонента содержится в двух файлах:
  • В контроллере
www\bitrix\components\bitrix\имя_компонента\component.php
  • И в представление  (так называемый шаблон компонента) -
www\bitrix\components\bitrix\имя_компонента\templates\имя_ша­блона_компонента\template.php .
Суть работы компонента хорошо описана в официальной документации, повторю их слова еще раз  «компонент (т.е. его контроллер замечание от меня), с помощью API одного или нескольких модулей, манипулирует данными, шаблон компонента выводит данные на страницу».
Компонент в своем составе может иметь несколько шаблонов, один из которых будет активным(указывается при вызове компонента).
Помимо контроллера и представления, компонент имеет файлы, выполняющие более второстепенные задачи: файл – содержимого справки, логотип компонента для админпанели, файл-описание компонента для админпанели и т.п.
Типичная структура компонента выглядит так:
  • help (директория, файлы справки компонента, т.е. всплывающие подсказки при настройке компонента)
  • images (директория, изображения которые использует компонент)
  • lang (директория, содержит подпапки с языковыми файлами)
  • templates (директория с шаблонами, т.е. с представлениями)
  • .description.php (файл с описанием компонента)
  • .parameters.php (файл содержит описание входных параметров компонента, файл нужен только для конфигурирование компонента через окошко)
  • component.php (файл (контроллер), основная логика компонента)
Зайдя в директорию любого компонента (www\bitrix\components\пространство_имен\имя_компонента) вы всегда увидите схожую стркутуру, как продемонстрировано выше. Стоит добавить, что компонент все для своей работы хранит в своей папки, поэтому переносить компонент с одного web сайта на другой web сайт – значит просто скопировать папку.
Технически работу компонента можно представить следующим образом: в шаблоне сайта (footer.php или header.php, о них я расскажу позже) вызывается компонент с заданными шаблоном и параметрами:

1
2
3
4
5
6
7


<$APPLICATION->IncludeComponent(
componentName, // имя компонента
componentTemplate,  // шаблон компонента, пустая строка если шаблон по умолчанию
arParams=array(),   // параметры
parentComponent=null,
arFunctionParams=array()
);>
Далее CMS формирует массив с параметрами $arParams, который обрабатывает контроллер «component.php». Контроллер (component.php) согласно своей логике работы и полученного массива параметров формирует результат своей работы, т.е. массив $arResult, который далее использует шаблон компонента (templates\имя_шаблона_компонента\template.php). Представление (или шаблон компонента) отображает результат работы в виде html кода, в задуманном оформление, в том месте где вы вызвали указанный выше код.
Параметры массива arParams=array() можно задать через запяту напрямую в коде (“ключ” => “значение”) или через окошко «параметры компонента». Хочу добавить, что если изменять параметры через окошко«параметры компонента», то они все равно сохраняются в коде, как содержимое массива arParams. Что бы вызвать это окно,  первым делом нужно авторизоваться в системе как администратор, далее зайти на сам сайт, выбрать компоненты -> режим правки, далее кликнуть по нужному компоненту два раза.
Как  пример, на пальцах. В желтом овале компонент «bitrix:search.form» (перед двоеточием пространство имен в котором данный компонент, после название компонента), по которому я тыкнул два раза. Далее откроется окошко «параметры компонента». Если мы изменим значение параметра (тот что в красном овале) и нажмем сохранить. То в соответствующем файле представления шаблона (footer.php или header.php, о них я расскажу позже), в коде вызова компонента (обозначил зеленой рамкой) измениться значение параметра (в красном кружке). И наоборот, изменения в коде, будут заметны через окошко.
Замечу еще, что шаблоны компонентов могут быть системными и пользовательскими. Системные это те, что уже идут в стандартной поставки и распологаются в дриектории «www\bitrix\components\bitrix\имя_компонента\templates\». Если нам нужен свой шаблон для компонента, то мы должны создать пользовательским шаблон, и поместить его в папку со своим шаблоном сайта, т.е. по следующему адресу «www\bitrix\templates\имя_шаблона_сайта\components\bitrix\имя­_компонента\имя_шаблона_компонента». Дальше, остается подключить наш пользовательский шаблон к компоненту, это можно сделать в визуальном редакторе шаблона (при двойном шелчке по нему) или подправить код его вызова (второй параметр $APPLICATION->IncludeComponent(…)).
Если при вызове или настройке компонента шаблон не указывается, то используется системный шаблон «.default».
В том случае если изменением шаблона компонента вам будем мало, допустим вы хотите выводить какую-то еще информацию в шаблоне, помимо той что может обеспечить логика компонента (component.php). То вы можете добавить в директорию пользовательского шаблона компонента файл – файлresult_modifier.php (в нем мы работаем с $arResult перед кешированием) и файл component_epilog.php (в нем работаем с $arResult  после кеширования), таким образом вы дополняете нужную вам функциональность в компонент не изменяя его контроллер (т.е. component.php). Это хорошее правило, ведь все изменения в работе чего либо в CMS должны приходить и уходить вместе с шаблоном сайта, плюс к этому, системный компонент можно спокойно обновлять, до новых версий.
Есть правда и другой способ добавления функциональности, копируем тот компонент, который хотим изменить из www\bitrix\components\bitrix в свое пространство именwww\bitrix\components\мое_прост_имен, далее делаем с ним что хотим, добавляем нужный функционал и вызываем его вместо прежнего компонента в шаблоне сайта (footer.php или header.php). Но в этом случае обновляться будет только системный компонент. Этот способ стоит использовать если предыдущий метод (использовать файлы result_modifier.php и component_epilog.php в шаблоне компонента) не помогает достичь нужную вам функциональность.
P.S. В документации написано, что файл result_modifier.php подключается и исполняется, только тогда когда шаблон не кешируется, но у меня, на реальной практики он почему-то исполняется в любом случае.
И наконец шаблоны …
Тут все просто, шаблон в CMS 1C-Битрикс складывается из двух частей, верхней и нижней, все что между ними это информационное наполнение сайта, т.е. контент. Храняться шаблоны в директорииwww\bitrix\templates, каждая папка это отдельный шаблон. Среди папок вы всегда найдете «.default», это специальный  «шаблон», он содержит шаблоны компонентов и файлы, общие для остальных шаблонов сайта. Трогать при интеграции макета мы его вряд ли будем.
Зайдя в директорию любого шаблона вы увидите следующую структуру:
  • components (директория, содержит поддиректории с шаблонами компонент)
  • images (директория, картинки данного шаблона)
  • include_areas (директория, содержит файлы, которые включаются в шаблоне сайта)
  • lang (директория, содержит языковые файлы)
  • page_templates (директория, содержит файлы-шаблоны, они выводятся с помощью компонента «подключаемые области» (bitrix:main.include), при выводе в браузер данных шаблонов их содержимое  наполняется в каждом отдельном разделе или подразделе с помощью файла index_inc.php)
  • snippets (директория, содержит сниппеты – маленькие фрагменты html-кода для ускорения работы контент-менеджера по созданию часто встречающихся блоков кода)
  • themes (директория, содержит подпаки с темами оформление данного шаблона, под темой понимается своя директория: с шаблонами компонент – components, директория – images с изображениями, файл с названием темы – description.php, изображение-превьюшки данной темы и файл стилей шаблона template_styles.css)
  • header.php (файл, отвечающий за вывод верхней части шаблона, т.е. до контента)
  • footer.php (файл, отвечающий за вывод нижний части шаблона, т.е. после контента)
  • description.php (файл, содержит название и описание шаблона, которое выводиться в админпанели)
  • .styles.php (файл, описания стилей для визуального редактора страниц)
  • template_styles.css (файл, стили шаблона)
  • styles.css (файл, стиль для контента и подключаемы областей, вообщем стиль контента сайта)
Обязательные файлы обеспечивающие минимум шаблона это:
  • header.php
  • footer.php
  • description.php
  • template_styles.css
  • styles.css
Файл header.php – содержит html код с php вставками <? ?>, в которых вызываются компоненты и подключаются файлы, в footer.php все аналогично. В данных файлах задается верхняя и нижняя часть шаблона.
Стили задаются в template_styles.css и styles.css.
Файл description.php необходим для описания шаблона для админпанели.
После всего сказанного у вас может возникнуть вопрос, если  в header храниться верхняя часть шаблона а в footer нижняя а между ними контент, то к чему относить левую и правую боковую панелью(sidebar) ? Разработчики предлагают как вариант такое решение
Оранжевым цветом обозначено то что относиться к header.php, зеленым к footer.php, а голубым к контенту. Вы можете выбрать какой-то свой вариант. Могут быть ситуации, когда одна из боковых панелей зависит от каждой страницы сайта, тогда её логично вынести из дизайна шаблона и считать её контентом.
О разделах, подразделах и наполнение информации…
Итак, мы рассматриваем CMS 1С-Битрикс как взаимодействие модулей, компонентов и шаблона. И с ними мы вроде как разобрались, осталось  понять как сайт в системе 1С-Битрикс наполнить информацией. А если быть точнее, то, как наполнить структурированной информацией, т.е. как создать разделы, если нужно подразделы разделов и страницы разделов.
Вообщем, раздел в Битрикс это просто директория, которая располагается в  /www. Называть ее можно по любому, т.к. имя раздела в данной CMS не зависит от  имени папки. В директории-раздел должны быть как минимум следующие файлы:
  • index.php – центральная страница раздела, это php скрипт, отвечающий за наполнение контентом. В данном файле  могут вызываеться компоненты, подключаться файлы, а также можно просто хранить статичный текст.
  • .section.php – файл содержит описание – имя данного раздела
Помимо этих двух основных, могут быть еще файл:
.положение.menu.php – Файл php, отвечает за то, что показывать компоненту «меню» («menu»), когда мы зайдем в данный раздел сайта. Технически – это файл с массивом $aMenuLinks, в котором каждый элемент содержит название и ссылку. Данный файл считывает компонент «menu» и выводит соответствующие пункты меню. Вместо «положение» вы должны указать какой компонент «menu» (их может быть несколько) будет читать этот файл, это может быть «top», «right», «left» и т.д. Как задается тип компонента? Смотрим код вызова компонента «menu» (в header.php или foter.php) и обращаем внимание на параметр ROOT_MENU_TYPE, его значение и укажет его тип или что он будет читать: .top.menu.php или.left.menu.php и т.д.
Если шаблон компонента «menu» позволяет показывать подкаталоги (выдвижное меню), то мы должны указать какой файл читать для подкаталогов в параметре CHILD_MENU_TYPE.
Если файла  «.положение.menu.php» в директории раздела не будет, то движок Битрикс будет искать его вкаталоге сверху, пока не найдет. Меню же нужно знать что выводить.
P.S. Помимо index.php в разделе могут быть другие страницы.
В любом разделе (или директории) могут быть подразделы (директории в данной директории), содержимое их аналогичное. Также хочу сказать, что директория www также имеет свой набор index.php,.section.php и .положение.menu.php, ее можно рассматривать как главный раздел сайта.
Наполнять сайт структурированной информацией (создавать разделы, подразделы, их страницы с информацией)  можно как через панель администратора (красный овал)
так и вручную, т.е. сами создаем папки, необходимые файлы в них, редактируем файл “.положение.menu.php” в www (иначе нашего нового раздела не будет в меню).
На этом, данный пост я закончу. Для разработчика, который только знакомиться с CMS 1С-Битрикс данной информации будет достаточно что-бы примерно понять, что эта за система, удобна она или нет, найти сходства с другими CMS или наоборот увидеть явные различия. Это даст первое приближение, более глубокое погружение вы получите уже изучая документацию и работая с данной CMS.



Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA