Перейти к содержимому

Как вызвать методы других приложений в Webasyst

Иногда в одном приложении нужно использовать функции другого. Например, получить список авторов блога для отображения на сайте магазина. В этой статье показано, как это сделать.

Перед вызовом убедитесь, что нужное приложение установлено. Функция wa() с идентификатором приложения открывает доступ к его классам:

if (wa()->appExists('blog')) {
wa('blog');
$blog_authors = blogHelper::getAuthors(1);
}

В шаблонах Smarty классы другого приложения доступны через объект $wa. Перед использованием убедитесь, что нужное приложение установлено:

{if $wa->blog}
{$blog_authors = blogHelper::getAuthors(1)}
{/if}

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

if (wa()->appExists('blog')) {
wa('blog');
// Проверяем, доступен ли статический метод getData класса плагина с идентификатором some
if (method_exists('blogSomePlugin', 'getData')) {
$data = blogSomePlugin::getData();
}
}
{if $wa->blog}
{* Проверяем, доступен ли статический метод getData класса плагина с идентификатором some *}
{if method_exists('blogSomePlugin', 'getData')}
{$data = blogSomePlugin::getData()}
{/if}
{/if}

Название класса плагина формируется так: сначала идентификатор приложения, потом идентификатор плагина в стиле CamelCase, потом слово Plugin. Например, для приложения blog и плагина some получится класс blogSomePlugin.