ЗадачаСоздать модуль "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 );
$this ->addComponents( array ( 'informer' ));
}
}
class AmiClean_HelloWorld_InformerFrn extends Hyper_AmiClean_ComponentFrn{
protected $useModel = false;
public function getType (){
return 'informer' ;
}
}
class AmiClean_HelloWorld_InformerViewFrn extends Hyper_AmiClean_ComponentViewFrn{
public function get(){
return $this ->parse(
'informer' ,
array (
'text' => 'HELLO WORLD!'
)
);
}
}
|
Мета-файл модуля/code/AmiClean_HelloWorld_Meta.php
<?php
class AmiClean_HelloWorld_Meta extends AMI_HyperConfig_Meta{
protected $version = '1.0' ;
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:
</information>
<information lang= "ru" >
<!-- Информация о дистрибутиве на русском языке -->
<title>Мой модуль Hello World</title>
<description>Демонстрационный модуль Amiro.CMS</description>
<author>Автор</author>
<source>http:
</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 файл дистрибутива.
|