Итак, к сожалению я знаком с этой cms.
Если Вы только начинаете, то лучше не знакомьтесь с ней ни в коем случае, не тратьте на это время и не занимайтесь этим, выучите лучше что-нибудь посерьезней. Но если все же Вам это необходимо, то надеюсь, что моя статья немного Вам поможет. Опытные разработчики могут ее не читать 🙂
Итак, тут я хочу немного рассказать про то, что мне никто в свою очередь не рассказал, и я это понял сам и довольно поздно, про архитектуру, если это можно так назвать.
Ну и надеюсь, что прочитав данную статью, Вы не будете делать тех ошибок, которые делал я.
Сейчас я попытаюсь разъяснить что такое модули и компоненты.
Модули
Битрикс, как одна из лучшх CMS на российском рынке имеет модульную архитектуру.
Это хорошо.
То есть там есть различного рода модули (интернет-магазин, информационные блоки), которые являются законченными структурами.
Что это озночает? А все просто.
Строение модуля
За пример возьмем модуль sale — модуль интернет-магазина В конечном счете, весь код данного модуля находится в папке /bitrix/modules/sale. Таблицы данного модуля хранятся в общей базе и имеют префикс (как правило наименование модуля, например b_sale_order, где:
b — часть префикса, указывающая на то, что сами битриксоиды разработали данный столь чудесный и законченный модуль
sale — название модуля
order — название таблицы
Тут думаю и вопросов быть не может.
В системе управления сайтом, так называемом «администрировании» модули располагаются в разделе настройки -> настройки продукта -> модули.
Модули можно переустановить.
Что такое переустановка модулей в битрикс? В целом, это может быть что угодно, установщик модуля пишет сам разработчик и делать он может что угодно. Но как правило установщик модуля установит таблицы, установит компоненты, создаст почтовые шаблоны и агенты. Удаляльщик это все дело может удалить.
Теперь внимание!
Очень часто (практически постоянно) код стандартных модулей битрикса может чуть-чуть не удовлетворять Вашим требованиям. Как мы обычно делаем? Правим код, прямо в модулях. Но здесь так делать не рекомендуется. Почему? Битрикс имеет механизм обновления, и при обновлении измененных стандартных модулей могут возникнуть серьезные проблемы.
Что же в таком случае делать?
- Забить на неудовлетвроенность (нам это не подходит)
- Забить и залезть в модуль, ждать обновления (мне это не подходит :))
- Пытаться придумать какой нибудь костыль в компоненте (расскажу позже) (иногда это бывает приемлемо)
- Форкнуть модуль (взять текущую версию, внести изменения и использовать этот модуль,отказавшись от изменений)
Тут крайне важно понимать (как на мой взгляд), что вносить правки в стандартные модули не стоит. Выхода два: либо костыли либо форки. По этим же причинам, нигде нельзя делать прямые запросы к базам данных, опираясь на текущую структуру таблиц, так как в дальнейшем все может измениться.
API модулей
Хорошие модули, со своими таблицами в базе данных, как правило имеют API для доступа к этим данным.
Выполнено это в виде классов, с различного рода методами.
Например, для выемки заказов из базы данных мы используем следующую конструкцию:
CSaleOrder::GetList( array arOrder = array(), array arFilter = array(), array arGroupBy = false, array arNavStartParams = false, array arSelectFields = array() );
Вот такая вот конструкция. Не знаю как в 12, но в 11 версии PHPStorm кидал ворнинги на каждый такой вызов, а все потому что внутри класса CSaleOrder ни у одной функции не указана ни область видимости, ни то что эта функция статическая. Можно конечно сначала инстанцировать объект класса CSaleOrder, но я ведь все делаю по документации битрикса! Впрочем ладно.
Итоги
Тут я очень кратко попытался показать самые базовые вещи по модулям. Там много интересного и еще было непонятно и непонятно как работающего 😀 Но это если хоть кому-то это будет полезно. Создание своего модуля рассмотрим в отдельной статье.
Цитата «лучше не знакомьтесь с ней ни в коем случае, не тратьте на это время и не занимайтесь этим, выучите лучше что-нибудь посерьезней»
Почему?
Сергей, если Вы на самом деле разработчик битрикс API (меня немного смущает Ваш Казахстанский IP), я отвечу Вам.
Битрикс это безулосвно достойная внимания CMS, но чтобы советовать другим людям заниматься разработкой на ней необходимо чтобы Вы:
1 Перепроектировали и переписали все что у Вас есть на сегодняшний день
2 Навели порядок в документации
Всего 2 пункта, как просто не правда ли?
Я не считаю себя каким-то супер-программистом, и я не разработал свою CMS, которая лучше битрикса во всех отношениях, но это просто мое личное мнение.
Еще раз, резюмирую: Мои слова, это не истина в последней инстанции, это мое мнение.