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