Вход Регистрация
Файл: mc-master/docs/dev.modules.html
Строк: 208
<?php
<html>
    <!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
html xmlns="http://www.w3.org/1999/xhtml">
        <
head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <
title>Документация по MobileCMS</title>
            <
link rel="stylesheet" href="style.css" type="text/css" />
        </
head>

        <
body><div class="navheader">
                <
table width="100%" summary="Navigation header">
                    <
tr>
                        <
th align="center">Документация по MobileCMS</th>
                    </
tr>
                    <
tr>
                        <
th align="center">Структура модулей и их разработка</th>
                    </
tr>
                </
table>
                <
hr />
            </
div>

            <
div class="refsect1">
                <
h2>Введение</h2>
                <
class="classname">
                    
Модули в MobileCMS состоят из 4х основных частей:<br />
                    <
ul>
                        <
li>Файл <strong class="command"><b>module.ini</b></strong> - содержит важную информацию о модуле</li>
                        <
li>Папка <strong class="command"><b>controllers</b></strong> - содержит контроллеры модуля</li>
                        <
li>Папка <strong class="command"><b>views</b></strong> - содержит шаблоны модуля</li>
                        <
li>Папка <strong class="command"><b>helpers</b></strong> - содержит хелперы (помощникимодуля</li>
                    </
ul>
                    
Также модули могут содержать и другие необходимые для работы файлы и папки.<br />
                    <
br />
                    
Рассмотрим структуру модулей более подробно на примере тестового модуля.
                </
p>
            </
div>

            <
div><br /></div>

            <
div class="refsect1">
                <
h2>module.ini</h2>
                
Файл <strong class="command"><b>module.ini</b></strongсодержит важную информацию о модуленеобходимую для его установкиОсновные компоненты файла:
                <
ul>
                    <
li><strong class="command"><b>name</b></strong> - название модуляв названии могут быть только латинские буквыцифры и знаки подчеркиваниянапример,  <strong class="command">test</strong> (обязательный пареметр)</li>
                    <
li><strong class="command"><b>title</b></strong> - отображаемое имя модулянапример, <strong class="command">Тест</strong> (обязательный пареметр)</li>
                    <
li><strong class="command"><b>admin_link</b></strong> - ссылка на управление модулем в панеле управленияформат как для первого параметра функции <strong class="command">a_url()</strong> (сегменты ссылки), например, <strong class="command">test/admin</strong> (не обязательный пареметриспользуется только если есть управление модулем из панели управления)</li>
                    <
li><strong class="command"><b>description</b></strong> - краткое описание модулянапример, <strong class="command">Тестовый модуль</strong> (не обязательный пареметр)</li>
                    <
li><strong class="command"><b>author</b></strong> - автор модулянапример, <strong class="command">Ant0ha</strong> (не обязательный пареметр)</li>
                    <
li><strong class="command"><b>version</b></strong> - версия модулянапример, <strong class="command">0.1</strong> (не обязательный пареметр)</li>
                </
ul>
                
Пример module.ini:<br />
                <
pre class="programlisting">
name "test"
title "Тест"
admin_link "test/admin"
description "Тестовый модуль"
author "Ant0ha"
version "0.1"</pre>
            </
div>

            <
div><br /></div>

            <
div class="refsect1">
                <
h2>controllers</h2>
                
Папка <strong class="command"><b>controllers</b></strongсодержит контроллеры модуляКонтроллер это основная часть модулягде выполняется логика скрипта.<br />
                
Рассмотрим примеры простых контроллеров тестового модуля.<br />
                <
br />
                
Файл <strong class="command"><b>controllers/test.php</b></strong><br />
                <
pre class="programlisting">
&
lt;?php
/**
* Контроллеры модулей происходят от класса Controller.
* Название контроллера происходит от названия модуля с большой буквы с окончанием _Controller
*/
class Test_Controller extends Controller {
    
/**
    * Доступ к контроллеру (укажем 0 чтобы разрешить доступ каждому пользователю)
    */
    
public $access_level 0;
    
    
/**
    * Метод вызываемый по умолчанию
    */
    
public function action_index() {
        
# Вызовем главный и единственный метод нашего контроллера
        
$this->action_hello_world();
    }
    
    
/**
    * Метод выводит "Hello world!"
    */
    
public function action_hello_world() {
        
# Ассигнуем переменную для теста модуля
        
$this->tpl->assign(array(
            
'hello' => "Hello world!"
        
));
        
        
# Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views
        # Будет подключен файл modules/test/views/default/hello_world.tpl
        
$this->tpl->display('hello_world');
    }
}
?&
gt;</pre>
                <
br />
                
Так выглядит простой контроллер нашего тестового модуляпоказыающий всем фразу "Hello world!"теперь расмотрим самый простой контроллер нашего модуля для панели управления.<br />
                <
br />
                
Файл <strong class="command"><b>controllers/test_admin.php</b></strong><br />
                <
pre class="programlisting">
&
lt;?php
class Test_Admin_Controller extends Controller {
    
/**
    * В доступе к контроллеру пропишем 10, т.е. он доступен только админам сайта.
    * Чтобы разрешить доступ и модерам, можно будет прописать 8.
    */
    
public $access_level 10;
    
/**
    * Тема, используемая в контроллере, для админки необходимо указать "admin"
    */
    
public $template_theme 'admin';
    
    
/**
    * Метод вызываемый по умолчанию
    */
    
public function action_index() {
        
# Вызовем главный и единственный метод нашего контроллера
        
$this->action_hello_admin();
    }
    
    
/**
    * Метод выводит "Hello Admin!"
    */
    
public function action_hello_admin() {
        
# Ассигнуем переменную для теста модуля
        
$this->tpl->assign(array(
            
'hello' => "Hello Admin!"
        
));
        
        
# Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views
        # Будет подключен файл modules/test/views/admin/hello_admin.tpl
        
$this->tpl->display('hello_admin');
    }
}
?&
gt;</pre>
            </
div>

            <
div><br /></div>

            <
div class="refsect1">
                <
h2>helpers</h2>
                
Папка <strong class="command"><b>helpers</b></strongсодержит хелперы (помощникимодуляЭто служебные php файлыпомогающие в работе модуля.<br />
                
Обычно в helpers модуля присутствуют 2 хелпера инсталлер и виджетрассмотрим их более детально.<br />
                <
br />
                
Файл <strong class="command"><b>helpers/test_installer.php</b></strong> (название файла состоит из названия модуля и окончания <strong class="command">_installer.php</strong>) предназначен для выполнения каких-либо действий во время установки и деинсталляции модуляесли никаких действий не требуетсято этот файл не обязателен.<br />
                <
pre class="programlisting">
&
lt;?php
/**
* Название класса инсталлятора также состоит из названия модуля и окончания _installer
*/
class test_installer {
    
/**
    * Метод для установки модуля
    */
    
public static function install(&$db) {
        
# Создадим таблицу a_test, якобы нужную нашему модулю test
        
$db->query("CREATE TABLE`a_test` (
            `item_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
            `item` VARCHAR( 30 ) NOT NULL
            ) ENGINE = InnoDB ;
        "
);
    }
    
    
/**
    * Метод для удаления модуля
    */
    
public static function uninstall(&$db) {
        
$db->query("DROP TABLE a_test");
    }
}
&
gt;</pre>

                
В инсталляторе можно не только создавать/удалять таблицыно так же и создавать/удалять файлы и папкидобавлять правила роутингасобытия и т.д.<br />
                <
br />
                
Файл <strong class="command"><b>helpers/test_widget.php</b></strong> (название файла состоит из названия модуля и окончания <strong class="command">_widget.php</strong>) предназначен для вывода какой-либо информации на главную страницу сайта.<br />
                <
pre class="programlisting">
&
lt;?php
/**
* Название класса виджета также состоит из названия модуля и окончания _widget
*/
class test_widget {
    
/**
    * Показ виджета
    */
    
public static function display($widget_id) {
          return 
'Это виджет тестового модуля&lt;br /&gt;';
    }
    
    
/**
    * Настройка виджета
    */
    
public static function setup($widget) {
        
a_notice('Данный виджет не требует настройки'a_url('index_page/admin'));
    }
}
&
gt;</pre>
                <
br />
                
Виджет может быть намного сложнеевыводить динамическую информацию и иметь более сложные настройкидля примера можете посмотреть виджет модуля загрузок в <strong class="command">modules/downloads/helpers/downloads_widget.php</strongвашей копии MobileCMS<br />
                <
br />
                
Также хелперы модулей могут (и это очень рекомендуетсясодержать частоиспользуемые методы (функциив модуледля примера взгляните хелпер модуля смайлов <strong class="command">modules/smiles/helpers/smiles.php</strong>
            </
div>

            <
div><br /><br /></div>

            <
div class="navfooter"><hr />
                <
table width="100%" summary="Navigation footer">
                    <
tr>
                        <
td width="40%" align="left"><a href="dev.general_functions.html">Пред</a></td>
                        <
td width="20%" align="center"><a href="index.html">На уровень выше</a></td>
                        <
td width="40%" align="right"><a href="dev.module_main.html">След</a></td>
                    </
tr>
                    <
tr>
                        <
td width="40%" align="left" valign="top">Главные методы ядра</td>
                        <
td width="20%" align="center">Содержание</td>
                        <
td width="40%" align="right" valign="top">Методы модуля main</td>
                    </
tr>
                </
table>
            </
div>

        </
body>
    </
html>
?>
Онлайн: 0
Реклама