Иногда возникает необходимость использования методов одного модуля внутри другого. Для этого нужно получить объект - экземпляр класса этого модуля, воспользовавшись методом getModule класса cmsController.
Функция module cmsController :: getModule((string) $moduleName) возвращает экземпляр модуля $moduleName, если модуль существует и установлен, в противном случае возвращает false.
Пример вызова:
<?php
// получаем экземпляр модуля "users"
if ($oUsersMdl = cmsController::getInstance()->getModule("users")) {
// теперь доступны все public методы и свойства данного модуля
// проверяем, авторизован ли пользователь
if ($oUsersMdl->is_auth()) {
echo "Здравствуйте, " . $oUsersMdl->user_fullname . " (" .$oUsersMdl->user_login . ")";
}
else {
echo "Вы гость";
}
}
else {
echo "Не удалось загрузить модуль";
}
?>
Примечание: Таким способом нельзя получить экземпляры модулей core, system, custom.
Чтобы получить доступ к методам этих модулей, используйте следующую конструкцию:
<?php
if($macros['module'] == "core" || $macros['module'] == "system" || $macros['module'] == "custom") {
$module = system_buildin_load($macros['module']);
}
else {
$module = cmsController::getInstance()->getModule($macros['module']);
}
?>