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


Новая документация

Настройка платежных систем
Настройка способа оплаты КупиВкредит
Настройка способа оплаты Acquiro
Настройка способа оплаты AvisoSMS

Обновленная документация 

Разработчикам (API)
Руководство пользователя

Дистрибутив модуля 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 – 2011 © Amiro.CMS Все права защищены.