bitrix options php модуль

Страница настроек

Иногда полезно выносить какие-то настройки решения на отдельную страницу, отвлечённую от компонентов, к тому же компонентов может не быть вовсе, а всё равно надо дать возможность администратору сайта как-то влиять на работу модуля. В Битриксе довольно легко создавать страницы с параметрами для своих модулей, об этом ниже.

Что и где

Создание

Для создания нужно просто положить файл options.php в корень папки вашего модуля, никаких инициализаций.

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

Пример кода options.php лежит в папке шаблона модуля на гитхабе. Ссылка.

Получение настроек на страницах сайта

Чтобы получить значение какой-либо опции из настроек вашего модуля воспользуйтесь стандартной функцией Битрикса:

Настройки по умолчанию

Есть возможность задать каким-то опциям значения по умолчанию. Для этого создайте в корне своего модуля файл default_option.php. Он должен возвращать массив «Код_свойства» => «Значение» и называться <код_модуля>_default_option (точка в партнёрских модулях заменяется на нижнее подчёркивание).

Этот массив не влияет на файл options.php, но из него берутся значения в функции COption::GetOptionString, если сам запрашиваемый параметр не определён.

Примеры настроек

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

Заключение

Чтобы лучше понять суть вопроса посмотрите на страницу параметров любого другого модуля, например, Главного, а также загляните в код этих страниц. Быстрый старт для новых решений уже лежит в моём репозитории.

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

Источник

Bitrix options php модуль

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

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

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

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

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

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

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

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

Тесты

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

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

Что дальше?

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

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

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

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

Скачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на
Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox

iPhone:
FBReader
CoolReader
iBook
Bookmate

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

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

Источник

Работа с параметрами модулей хранимых в базе

Битрикс является модульной системой, и в зависимости от редакции может содержать различный набор модулей для работы. Каждый модуль имеет свой набор параметров, некоторые из них хранятся в базе данных. Управление параметрами модулей осуществляется в административном интерфейсе, в настройках соответствующего модуля.
Кроме всего этого, воздействовать на параметры модулей можно посредством API битрикса. Для работы с параметрами модулей, хранимых в базе данных, существует класс COption. Данный класс содержит набор методов, для взаимодействия с параметрами модулей. К примеру, мы можем получить некоторые параметры либо изменить их.

Список методов класса COption:

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

В административной части сайта параметры капчи находятся тут:
Настройки > Настройки продукта > CAPTCHA

Мы же попробуем воздействовать на параметры из кода. Итак, допустим известны два параметра, которые мне нужно получить:
CAPTCHA_arTextColor_1 — Нижняя граница случайного цвета шрифта;
CAPTCHA_arTextColor_2 — Верхняя граница случайного цвета шрифта;

Читайте также:  Что такое эпикантус у человека

Так как значения этих параметров имеет строковый тип, запрос будет осуществляться с помощью метода GetOptionString. Посмотрим, как с методом обращаться.

Синтаксис:

Метод возвращает строковое значение параметра option_id, принадлежащего модулю module_id.
Если не установлен параметр site_id, то делается попытка найти числовой параметр option_id, принадлежащий модулю module_id для текущего сайта. Если такого параметра нет, возвращается параметр, общий для всех сайтов.

Получаем строковые параметры:

Всё довольно просто, теперь давайте попробуем задать значения этих параметров с помощью метода SetOptionString.
Синтаксис:

Метод устанавливает строковое значение параметра option_id для модуля module_id. Если указан site_id, параметр установится только для этого сайта, и не будет влиять на аналогичный параметр другого сайта. Возвращает true, если операция прошла успешно, в противном случае — false.

module_id — Идентификатор модуля. Длина не более 50 символов.
name — Идентификатор параметра. Длина не более 50 символов.
value — Значение параметра. Необязательный. По умолчанию — «». Максимальная сохраняемая длина значения — 2000 символов.
desc — Описание параметра. Необязательный. По умолчанию — «false» (описание отсутствует). Начиная с версии 14.0.0 не используется.
site — Идентификатор сайта, для которого устанавливается параметр. Необязательный. Если установлен false, то будет текущий сайт (с версии 14.0).

Установка строковых параметров:

На этом пока всё. Более подробно о методах класса вы можете посмотреть информацию в документации по работе API битрикса.

Источник

Пишем первый модуль для 1С-Битрикс с использованием ядра D7

Совсем недавно, а точнее несколько месяцев назад, моя деятельность переплелась с системой управления содержимым 1С-Битрикс. И хотя в начале я был не восторге, а многие вещи мне казались запутанными и местами нелогичными, но чем дольше я работал с 1С-Битрикс, тем больше убеждался, что 1С-Битрикс – это система, которая позволяет реализовать проект любого уровня сложности. Если после установки одной из редакций движка, возникает необходимость в дополнительной функциональности, её можно расширить при помощи платных или бесплатных модулей. Сегодня же я расскажу, как написать такой модуль самому.

Что же написать? Тут я решил не мудрить и залез на маркетплейс и наткнулся:

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

Структура модуля

Теперь рассмотрим папку install поподробнее:

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

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

Установка и удаление модуля Битрикс

Вот мы и приступили непосредственно к написанию кода. Первое, что стоит заполнить это файл version.php:

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

В новом ядре D7 широко используются пространства имен, поэтому подключаем все необходимые для нашего файла. Далее загружаем языковые файлы:

Теперь нам нужно написать класс, в котором будет реализована установка и удаление модуля:

Имя класса должно соответствовать папке модуля и являться наследником от CModule, только вместо точки стоит прописать нижние подчеркивание, после чего в адмике мы увидим, что система определила наш модуль:

Двигаемся дальше и сообщим системе больше информации, о нашем модуле, указав основные свойства, делать это я буду в конструкторе класса:

Рассмотрев несколько примеров решений, я пришел к выводу, что конструктор лучше всего подходит для выполнения такого рода задач. В нем мы подключили наш файл version.php и заполнили основные свойства для нашего класса. Перед тем, как посмотреть результат этих действий, нам нужно заполнить соответствующий языковой файл:

Вернемся в админку и посмотрим, как теперь выглядит модуль:

Следующий метод, который мы напишем, реализует процесс установки:

Добавим ещё несколько переменных в языковой файл:

Опишем три метода, к которым мы обратились из установочного DoInstall():

Читайте также:  менеджмент креативных проектов что это

Копируем наши скрипты и стили в систему.

Так как мы не работаем с базой, оставляем этот метод пустым.

Регистрируем событие OnBeforeEndBufferContent. Перед тем, как страница будет отрисоваться, мы добавим свой HTML код, в котором сохраним настройки для нашей кнопки. Этот весь механизм далее напишем в файле Main.php.

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

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

Мы описали ещё одну языковую переменную, добавим её в соответствующий файл:

А теперь поговорим о методах:

Удаляем добавленные скрипты и стили из системы.

Удаляем из базы настройки нашего модуля.

И в последнем методе удаляем регистрационную запись обработчика события OnBeforeEndBufferContent. Чтобы увидеть результат нам осталось описать два файла step.php и unstep.php так и сделаем.

В коде мы добавили строки, отвечающие за вывод сообщения об ошибке версии и кнопку, которая позволит пользователю вернуться в список установленных решений. Добавим в соответствующий языковой файл новые элементы массива MESS:

И посмотрим, что получилось:

В принципе, он не сильно отличается от варианта в первом файле, добавим новые языковые переменные в соответствующий файл и проверим удаление модуля Битрикс:

Пишем страницу настроек для модуля Битрикс

Выше мы уже узнали, что страница настроек находится в файле options.php, сейчас он пуст и в административной части эта страница выглядит так:

Первым делам подключим все необходимые классы, языковые файлы и получим id модуля.

Что теперь? Надо описать настройки модуля и поместить их в массив.

Через административную часть мы позволим пользователю изменять:

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

Нам осталось отрисовать форму, для этого создадим новый экземпляр класса CAdminTabControl, куда и передаём массив с настройками:

И обозначим конец отрисовки формы:

У нас появилось ещё две языковые переменные, добавим и их:

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

Как видите, получилось весьма годно, нам осталось только добавить код для сохранения настроек. Поместим его после массива с параметрами:

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

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

Тут могут быть разные пути для решения этой задачи. В самом начале статьи, когда мы описывали код установки модуля, мы привязались к событию перед отрисовкой страницы и указали метод appendScriptsToPage() класса Main как обработчик. Теперь нам его нужно написать:

В методе мы определили, что он будет отрабатывать только на стороне клиента. Далее сформировали HTML код с набором настроек в json формате для удобства и добавили его в HEAD документа. В конце подключили скрипты и стили нашего Битрикс модуля кнопка наверх.

JavaScript и CSS кнопки наверх Битрикс модуля

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

Незабываем код упаковать и добавить в style.min.css. Для работы кнопки нам нужна библиотека jQuery, качаем её с официального сайта и также добавляем её в соответствующий файл. Теперь напишем JavaScript, который и будет добавлять кнопку с учетом настроек:

В результате у нас получился такой код. Сам принцип написания кнопки я уже рассматривал в статье: Плавная кнопка прокрутки «Наверх», если вам интересен сам механизм. Осталось увидеть плоды нашей работы:

Перед тем, как смотреть, нужно удалить и заново установить модуль

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

Источник

Как сделать модуль 1С-Битрикс

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

Можно много спорить о самом Битриксе, но он продолжает существовать, и разработчикам нужны знания. Я опишу создание модулей на примере шуточного модуля “Почта России”. Он запретит редактирование элементов инфоблоков в субботу, воскресенье и в обед.

Читайте также:  прием на оплачиваемую практику в рб

Методика решения
1. Мы воспользуемся хэндлерами, чтобы поймать и заблокировать событие редактирования элемента.
2. Мы обернём эти хэндлеры в модуль, чтобы наш функционал можно было использовать на любом сайте.

Этот подход будет полезен, когда
1. При сохранении элемента инфоблока нужно специфически проверять данные (и это повторяется из раза в раз, на различных проектах)
2. При сохранении или изменении одной сущности, нужно задействовать другую, например:
— запостили веб-форму — изменили что-то в инфоблоках
— изменили секцию — необходимо изменить что-то в её элементах или других секциях и т.п.)
— изменили элемент в инфоблоке — необходимо создать агент, который в указанное время отправит письма.
и т.п.
3. По достижению некоего события, нужно бросить событие в модуль статистики.
4. Вы хотите научиться делать модули для 1С-Битрикс и выкладывать их на Маркетплэйс.

Шуточный модуль «Почта России»

Шаг 1: пишем хэндлер

На этом шаге всё до банальности просто и качественно задокументировано.
Пользуясь хэндлером OnBeforeIBlockElementAdd
и близких к нему мы создаём функцию, блокирующую редактирование в определённое время

Вынесем надпись в настройки модуля, чтобы научиться это делать.
Итак, для хранения настроек модулей существует класс COption. Добавим это в нашу функцию:

Памятка:
После того, как напишете код, который собираетесь обернуть в компонент — выделите в нём настройки.

Разумеется, ниже мы рассмотрим, как сделать админку, позволяющую редактировать настройки модуля. Также хочется предупредить, что класс COption умеет хранить только два типа настроек — integer и string. К сожалению, поддержки массивов не существует и в случае необходимости её придётся реализовывать окольными путями, например, с помощью таблицы.

Шаг 2: создадим “болванку” модуля.

Создайте в папке bitrix/modules папку russianpostjoke. Это будет папка нашего модуля.
О том, какие файлы и почему нужно создать в папке можно прочитать в официальной документации.
Дабы не засорять статью листингами, предлагаю изучить исходники на гитхабе: https://github.com/may-cat/bitrix-dull-module

Возможные ошибки:
Если Вы создадите модуль и в названии будет присутствовать точка, возможно Вы не увидите его в списке модулей в админке. Битрикс преобразует точку в подчёркивание в названии класса и функций. Внимательно изучите исходники Битрикса и/или чужие модули, если собираетесь использовать точку.

Итак, заменив в вышеприведённой “болванке” название модуля на russianpostjoke везде, где это необходимо, мы получили нашу заготовку.
Перейдём к наполенению её необходимым функционалом.

Шаг 3: наполняем модуль функционалом

Создадим класс cBlocker и разместим его в папке russianpostjoke/classes/general/cMainRPJ.php — туда мы внедрим наш хэндлер в качестве метода.

Памятка:
Старайтесь размещать классы, используемые в своём модуле именно в папке /classes/, следуя стандартам, заданным уже стандартными модулями Битрикс.

Теперь, нам необходимо прописать установку модуля. Воспользуемся файлом
russianpostjoke/install/index.php в котором есть методы DoInstall() и DoUninstall().
При этом в нашем случае необходимо выполнить три условия:
а) Воспользоваться функцией RegisterModuleDependences, чтобы установить в систему наш хэндлер из класса cBlocker, привязав его к штатным OnBeforeIBlockElementAdd и подобным.
б) Сообщить системе, что модуль установлен. Нам поможет RegisterModule($this->MODULE_ID);
в) Вызвать вывод сообщения для пользователя:

Обратите внимание, что этот вызов должен осуществляться последним, прямо перед конструкции return.

В результате, Вы должны увидеть у себя в админке нечто подобное:

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

Шаг 4: админка

Если сейчас зайти в административной панели Битрикса на страницу Настройки / Настройки продукта / Настройки модулей / %Заглавие нашего модуля% то можно увидеть… ничего. А между тем, именно на этой странице должны находиться настройки нашего модуля.
Интересующая нас страница задаётся файлом russianpostjoke/options.php, и с этим связаны хорошие и плохие новости.
Плохая новость — все настройки, включая сохранение настроек, на данном этапе развития Битрикса, задаются этим файлом, зачастую в виде “простыни”.
Хорошая новость — многое уже сделали до вас, и можно воспользоваться существующими наработками. Рекомендую обратить внимание на то, как описаны настройки “Монитора производительности” (perfmon) — они достаточно просты для понимания.
Нам необходимо создать настройки одного-единственного поля WE_ARE_CLOSED_TEXT, которое мы использовали на шаге №1.
Полные исходники модуля выложены на гитхабе: https://github.com/may-cat/bitrix-russianpostjoke

Вместо заключения

Мы рассмотрели самый простейший модуль, есть о чём рассказать ещё минимум на 3 статьи. Если тебе, %username%, оказался полезным этот материал, или ты, как и я, хочешь улучшения уровня разработчиков под 1С-Битрикс, поддержи статью. Спасибо.

Источник

Образовательный портал