Центр документации
Карта сайта

Создай визитку сам!


Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »


Дистрибутив модуля Hello World

Задача

Создать модуль "Hello World", который будет выводить текстовую строку "Hello World!".

Модуль должен работать на публичной части сайта.

Суть решения

Определим основу и состав модуля.

С использованием инструмента Генератор решений создадим дистрибутив с соответствующей конфигурацией.

Для вывода текстовой строки будет использована пользовательская компонента типа "informer". Создадим классы контроллера компоненты и ее отображения для публичной части сайта, создадим шаблон компоненты.

Далее, рассмотрим эти шаги более подробно. 

Определяем основу модуля и состав дистрибутива

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

Создаваемая в этом примере конфигурация базового гипермодуля будет называться hello_world.

Файлы PHP кода модуля Amiro.CMS префиксуются как ИмяГипермодуляCamelCase_ИмяКонфигурацииCamelCase_, соответственно файлы с кодом данного модуля будут иметь префикс AmiClean_HelloWorld.

Создание основы модуля

Используя расширение Генератор расширений, создадим дистрибутив со следующими параметрами:

После добавления, файлы дистрибутива будут размещены в каталоге "_local/modules/data/ami_devtool/my.hello_world/".

Cостав дистрибутива

Для реализации расширения нам потребуется следующее:

1) Код модуля для публичной части сайта

  • контроллер модуля
  • контроллер компоненты
  • отображение компоненты

2) Мета-файл модуля

3) Конфигурация модуля (скелет экземпляра)

  • заготовки кода экземпляра модуля
  • заготовки настроек и объявления экземпляра модуля
  • заготовки шаблонов и файлов языковых переменных публичной части сайта

4) Манифест

Все файлы расширения уже созданы Генератором решений, и размещены в каталоге "_local/modules/data/{genModId}/my.hello_world/":

/code/

AmiClean_HelloWorld_Frn.php
AmiClean_HelloWorld_Meta.php  

/distrib/configs/ami_clean/hello_world/code/

--modId--_Frn.php

/distrib/configs/ami_clean/hello_world/declaration/

declaration.php
properties.php

/distrib/configs/ami_clean/hello_world/templates_frn/

--modId--.tpl

/distrib/configs/ami_clean/hello_world/locales_frn/

--modId--.lng

/manifest.xml

Более подробно структура файлов дистрибутива рассмотрена в разделах "Состав дистрибутива" и "Конфигурация модуля"

Код модуля для публичной части сайта

/code/AmiClean_HelloWorld_Frn.php

<?php
/**
 * Контроллер модуля
 */
class AmiClean_HelloWorld_Frn extends Hyper_AmiClean_Frn{
    public function __construct(AMI_Request $oRequest, AMI_Response $oResponse){
        // хз как это описать
        $this->setDefaultBodyType('informer');
        parent::__construct($oRequest, $oResponse);
        // Добавление компонеты типа "informer"
        $this->addComponents(array('informer'));
    }
}
 
/**
 * Контроллер компоненты типа "Informer"
 */
class AmiClean_HelloWorld_InformerFrn extends Hyper_AmiClean_ComponentFrn{
    protected $useModel = false;
    // Возвращает тип компоненты
    public function getType(){
        return 'informer';
    }
}
 
/**
 * Отображение компоненты типа "informer"
 */
class AmiClean_HelloWorld_InformerViewFrn extends Hyper_AmiClean_ComponentViewFrn{
    // Получение результата
    public function get(){
        // Возвращает результат обработки сета informer текущего шаблона компоненты
        return $this->parse(
            'informer'// имя сета
            array(
                // передаем в сет текст через переменную ##text##
                'text' => 'HELLO WORLD!'
            )
        );
    }
}

Мета-файл модуля

/code/AmiClean_HelloWorld_Meta.php 

 

<?php
/**
 * Мета-файл модуля "Hello World"
 */
class AmiClean_HelloWorld_Meta extends AMI_HyperConfig_Meta{
    /**
     * Версия кода модуля
     */
    protected $version = '1.0';
    /**
     * Можно устанавливать несколько экземпляров (FALSE)
     */
    protected $isSingleInstance = FALSE;
    /**
     * Название модуля
     */
    protected $aTitle = array(
        'ru' => 'Hello World'
    );
    /**
     * Информация о модуле
     */
    protected $aInfo = array(
        'ru' => array(
            'description' => 'Описание модуля',
            'author'      => 'Разработчик'
        )
    );
    /**
     * Дополнительные поля в диалоге установки экземпляра модуля
     */
     protected $aCaptions = array(
        '' => array(
            'header' => array(
                'obligatory' => TRUE,
                'type' => self::CAPTION_TYPE_STRING,
                'locales' => array(
                    'ru' => array(
                        'name' => 'Заголовок',
                        'caption' => 'HELLO WORLD',
                    )
                )
            ),
            'menu' => array(
                'obligatory' => TRUE,
                'type' => self::CAPTION_TYPE_STRING,
                'locales' => array(
                    'ru' => array(
                        'name' => 'Заголовок для меню',
                        'caption' => 'Hello World',
                    )
                )
            ),
            'description' => array(
                'obligatory' => FALSE,
                'type' => self::CAPTION_TYPE_TEXT,
                'locales' => array(
                    'ru' => array(
                       'name' => 'Описание модуля для стартовой страницы интерфейса администратора',
                       'caption' => 'Описание модуля Hello World',
                    )
                )
            ),
        )
    );
}

Заготовки шаблонов и файлов языковых переменных публичной части сайта

На публичной части сайта для вывода и тела модуля и спецблоков используется единый шаблон - шаблон модуля.

 /distrib/configs/ami_clean/hello_world/templates_frn/--modId--.tpl

##--system info: module_owner="##section##" module="##modId##" system="1"--##
 
<!--#set var="informer" value="<div class="informer_front">##text##</div>"-->

Манифест

Последний, но самый необходимый элемент дистрибутива - манифест. Без манифеста установка дистрибутива невозможна.

<?xml version="1.0" encoding="utf-8"?>
<package id="my.hello_world" version="1.0" manifestVersion="1.0">
    <information lang="en">
        <!-- Информация о дистрибутиве на английском языке -->
        <title>My Hello World module</title>
        <description>Amiro.CMS sample module</description>
        <author>Author</author>
        <source>http://author's site</source>
    </information>
    <information lang="ru">
        <!-- Информация о дистрибутиве на русском языке -->
        <title>Мой модуль Hello World</title>
        <description>Демонстрационный модуль Amiro.CMS</description>
        <author>Автор</author>
        <source>http://сайт автора</source>
    </information>
    <installation>
        <!-- Гипермодуль, имя конфигурации гипермодуля, и версия конфигурации -->
        <install hypermodule="ami_clean" configuration="hello_world" version="1.0" />
    </installation>
    <dependencies>
        <!-- Данный модуль для установки требует наличия гипермодуля ami_clean версии 1.0 -->
        <dependency hypermodule="ami_clean" version="1.0" />
    </dependencies>
</package>

 

На этом разработку модуля "Hello World" и его дистрибутива можно считать завершенной.

Расширение может быть установлено через действие модуля Генератор решений. Там же можно скачать tar.gz файл дистрибутива.

Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API)
 2000 – 2019 © Amiro.CMS Все права защищены.