Обзор 1С-Битрикс для будущих разработчиков, Можно сказать это краткий ликбез по принципу работы данной системы. Я опишу из каких компонентов она состоит, что за что отвечает и как формируется web страница. Рекомендую прочесть данный пост перед изучением официальной документации или как вариант посл
Дабы не было не понимания, скажу сразу, данный пост я писал для людей, которые только начинают знакомиться с 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 это пространство имен для данных компонентов, нам как бы говорят что они «битриксовые», т.е. идут с системой из коробки.
Реализация логики и способа отображения компонента содержится в двух файлах:
Суть работы компонента хорошо описана в официальной документации, повторю их слова еще раз «компонент (т.е. его контроллер замечание от меня), с помощью 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.
Которая в свою очередь, вроде как основывается на Zend Framework
Круто
Цитата
Про компоненты я расскажу более подробно, править их вы будете намного чаще, чем модули.
Фух, ну хоть так, а не наоборот...
Такое ощущение от текста поста, что вы бывший СЕОшник, и после изучения системы наконц-то более менее въехали в суть происходящего, и вас "вшторило" от этого. Да да бывает когда что-то до тебя доходит, появляется приятное ощущение с которым хочется поделится, вот мы это и видим.
Походу мои слова не были услышаны "Дабы не было не понимания, скажу сразу, данный пост я писал для людей, которые только начинают знакомиться с CMS 1С-Битрикс."
Может кому нибудь, этот материал поможет сделать первые шаги. Я допустим, когда начинаю изучать новую для себя CMS, всегда ощущая нехватку материала, в котором пробежались бы "по верхам", это дает первое впечатление. Но это все индивидуально.
Документация нужна, но для более глубокого понимания, когда мы уже от представления о системе переходим к практики работы с ней. Вспомните, когда вы сели первый раз за компьютер, первый опыт скорее всего получали тыканием кнопочек, метод проб и ошибок, а не изучением "Руководства администратора".
И это было правильно получать методом проб и ошибок. а потом вспомнив, что есть документация прочитать и понять что чего раньше не прочитал. По крайней мере там все понятно и доходчиво. И все что вы написали там все можно отыскать, только вот упрощаяя людям обучения вы им свинью подкладываете. Знания пришедшие легко забудутся еще быстрее, и читая отыскивая, человек находит много новых решений и знаний, а когда все в 3 словах, он так и будет неучем.
И это было правильно получать методом проб и ошибок. а потом вспомнив, что есть документация прочитать и понять что чего раньше не прочитал.
Все правильно, я так и говорил. Но делать свои пробы и ошибки в 1С-Битрикс, куда быстрее начнешь если тебе покажут в какую сторону "педали крутить".
Цитата
Знания пришедшие легко забудутся еще быстрее, и читая отыскивая, человек находит много новых решений и знаний, а когда все в 3 словах, он так и будет неучем.
Опять же, не спорю, официальную документацию никто не отменял, я же писал ликбез, который поможет сделать первый шаг, пощупать систему. Человек становиться неучем из-за банального отсутствия желания развиваться, а не от глубины предоставляемых ему знаний)
P.S. Мы залезли в философию какую-то, тут все дело вкуса. Не пойму о чем тут спорить, все равно же каждый при своем останется.
Рамиль Юналиев пишет: Такое ощущение от текста поста, что вы бывший СЕОшник , и после изучения системы наконц-то более менее въехали в суть происходящего, и вас "вшторило" от этого. Да да бывает когда что-то до тебя доходит, появляется приятное ощущение с которым хочется поделится, вот мы это и видим.
Ну не знаю... Несколько лет назад мне бы наверно это помогло. Так что думаю кому-то может оказаться очень полезным. Вот именно такая пробежка по верхам. Потому что сунься в документацию - а там либо все разжевывается со стороны вэбинтерфейса, из которого нужное не сделать, либо все объясняется на уже более низком уровне, понять который без определенных знаний сначала тяжело. В итоге большую часть знаний все равно изучаешь читая код. А этот пост хотя бы объясняет что и откуда начинать читать.
Но изучая таким мокаром Вы упускаете возможность подчерпнуть нужную Вам информацию. так по пути выискивая, вы найдете несколько решений, которые оставите у себя в памяти, что они есть и в будующем будете знать где искать. С таким же подходом, Вы все равно придете к решению читать всю документацию, только не будете знать где что искать и потребуется дополнительное время ее читать. Результат один мы все равно придем к одному решению но лучше к этому решению прийти сразу.
Александр Маджугин пишет: Ну не знаю... Несколько лет назад мне бы наверно это помогло.
Так я же не против, любая информация о чем либо, пусть даже 100 раз разжеванная, это хорошо. И если этот пост помог хоть 1 человеку хоть что-то понять, то автор молодец.
При написании поста автор все еще раз перечитал и что-то понял глубже, это как в школе писать шпаргалки, пока пишешь все запоминаешь
Всем спасибо за критику. Если что-то посчитаю стоящим, обязательно выложу, дабы не захламлять форум. А все остальное, кому интересно можете посмотреть на блоге (ссылка под статьей)
И еще огромная просьба автору. Умоляю - исправьте грамматику. Нашел материал для себя зело полезным, но трудно продираться через грамматические ошибки.
Автору спасибо! Реально, эта инфа помогает новичку. По Битриксу очень много информации, но очень трудно найти статьи, которые образно создают понимание принципа работы системы.