1С-Битрикс: Создание своего модуля

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

1С-Битрикс: Создание своего модуля

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

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

В данной статье мы рассмотрим основы разработки битрикс модулей. Мы опишем процесс разработки «чистого» модуля, который позволит понять архитектуру модулей в битрикс и сделает создание своего модуля битрикс более простой и интересной задачей.

Структура папок и файлов модулей 1С-Битрикс

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

Установка (регистрация) и удаление модуля в 1С-Битрикс

За регистрацию модуля и его удаление отвечает файл install/index.php. Его листинг приведен ниже.

/**

* Инсталляция модуля dd_blank_module

*

* @author Dev2Day

* @since 22/01/2012

*

* @link http://dev2day.net/

*/

*/

/**

* Подключаем языковые константы

*/ global $MESS;

$strPath2Lang = str_replace(«\\», «/», __FILE__);

$strPath2Lang = substr($strPath2Lang, 0, strlen($strPath2Lang)-18);

@include(GetLangFileName($strPath2Lang.»/lang/», «/install/index.php»));

IncludeModuleLangFile($strPath2Lang.»/install/index.php»); class dd_blank_module extends CModule { public $MODULE_ID = ‘dd_blank_module’; public $MODULE_VERSION = ‘1.0.0’; public $MODULE_VERSION_DATE = ‘2012-01-22 13:00:00’; public $MODULE_NAME; public $MODULE_DESCRIPTION;

/**

* Инициализация модуля для страницы «Управление модулями»

*/ public function dd_blank_module() {

$this->MODULE_NAME = GetMessage( ‘DD_BM_MODULE_NAME’ );

$this->MODULE_DESCRIPTION = GetMessage( ‘DD_BM_MODULE_DESC’ );

}

/**

* Устанавливаем модуль

*/ public function DoInstall() { if( !$this->InstallDB() || !$this->InstallEvents() || !$this->InstallFiles() ) { return;

}

RegisterModule( $this->MODULE_ID );

}

/**

* Удаляем модуль

*/ public function DoUninstall() { if( !$this->UnInstallDB() || !$this->UnInstallEvents() || !$this->UnInstallFiles() ) { return;

}

UnRegisterModule( $this->MODULE_ID );

}

/**

* Добавляем почтовые события

*

* @return bool

*/ public function InstallEvents() { return true;

}

/**

* Удаляем почтовые события

*

* @return bool

*/ public function UnInstallEvents() { return true;

}

/**

* Копируем файлы административной части

*

* @return bool

*/ public function InstallFiles() { return true;

}

/**

* Удаляем файлы административной части

*

* @return bool

*/ public function UnInstallFiles() { return true;

}

/**

* Добавляем таблицы в БД

*

* @return bool

*/ public function InstallDB() { return true;

}

/**

* Удаляем таблицы из БД

*

* @return bool

*/ public function UnInstallDB() { return true;

}

}

Как видите, все достаточно просто. Перед описанием класса подключаем файл с языковыми константами (lang/ru/install/index.php). Листинг этого файла:

/**

* Языковые константы для файла install/index.php

*

* @author Dev2Day

* @since 22/01/2012

*

* @link http://dev2day.net/

*/

$MESS[‘DD_BM_MODULE_NAME’] = ‘«Чистый» модуль’;

$MESS[‘DD_BM_MODULE_DESC’] = ‘Реализует базовую архитектуру для создания своего модуля битрикс’;

Класс должен совпадать с идентификатором модуля (dd_blank_module). Метод dd_blank_module отвечает за инициализацию модуля на странице «Управление модулями». Там можно увидеть название модуля ($MODULE_NAME), его описание ($MODULE_DESCRIPTION), версия ($MODULE_VERSION) и дату последнего обновления ($MODULE_VERSION_DATE).

Метод DoInstall вызывается при инсталляции модуля в системе. Здесь можно разместить создания таблиц в БД, необходимых для функционирования нашего модуля. В конце необходимо вызвать метод RegisterModule( $this->MODULE_ID ), который и зарегистрирует наш модуль в системе.

Метод DoUninstall по аналогии с предыдущим методом вызывается при удалении модуля из системы. Здесь при необходимости удаляем все, что связано с модулем. В конце вызываем UnRegisterModule( $this->MODULE_ID ), который и удаляет модуль из системы.

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

Подключение опций модуля 1С-Битрикс

Большинство модулей битрикс имеют настройки. Для того, чтобы сформировать страницу с настройками создайте файл options.php следующего содержания:

/**

* Настройки модуля dd_blank_module

*

* @author Dev2Day

* @since 22/01/2012

*

* @link http://dev2day.net/

*/

/**

* Идентификатор модуля

*/

$sModuleId = ‘dd_blank_module’;

/**

* Подключаем модуль (выполняем код в файле include.php)

*/

CModule::IncludeModule( $sModuleId );

/**

* Языковые константы (файл lang/ru/options.php)

*/ global $MESS;

IncludeModuleLangFile( __FILE__ ); if( $REQUEST_METHOD == ‘POST’ && $_POST[‘Update’] == ‘Y’ ) {

/**

* Если форма была сохранена, устанавливаем значение опции модуля

*/

COption::SetOptionString( $sModuleId, ‘option’, $_POST[‘option’] == ‘Y’ ? ‘Y’ : ‘N’ );

}

/**

* Описываем табы административной панели битрикса

*/

$aTabs = array( array(

‘DIV’ => ‘edit1’,

‘TAB’ => GetMessage(‘MAIN_TAB_SET’),

‘ICON’ => ‘fileman_settings’,

‘TITLE’ => GetMessage(‘MAIN_TAB_TITLE_SET’ )

),

);

/**

* Инициализируем табы

*/

$oTabControl = new CAdmintabControl( ‘tabControl’, $aTabs );

$oTabControl->Begin();

/**

* Ниже пошла форма страницы с настройками модуля

*/

?>

BeginNextTab();?>

: checked=»checked» value=»Y» />

Buttons();?>

<?=GetMessage( ‘DD_BM_BUTTON_SAVE’ )?>

<?= GetMessage( ‘DD_BM_BUTTON_RESET’ )?>

End();?>

Как можно заметить, листинг файла options.php не очень сложный и его можно разделить на 3-и логические секции: инициализация, обработка сохранения настроек и формирование самой страницы с настройками.

В инициализации происходит подключение файлов модуля (выполняется файл include.php) и подключение языковых констант файла настроек.

Листинг lang/ru/options.php:

/**

* Языковые константы для файла options.php

*

* @author Dev2Day

* @since 22/01/2012

*

* @link http://dev2day.net/

*/

$MESS[‘DD_BM_LABEL’] = ‘Работать/не работать’;

$MESS[‘DD_BM_BUTTON_SAVE’] = ‘Сохранить’;

$MESS[‘DD_BM_BUTTON_RESET’] = ‘Сбросить’;

$MESS[‘DD_BM_GROUP_TITLE’] = ‘Группа настроек модуля’;

Если форма была засабмичена, то происходит сохранение значений настроек модуля. В нашем случае, это установка значения через метод SetOptionString класса COption.

Тело страницы формируется при помощи класса CAdmintabControl с настройками для вывода табов.

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: