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

Пишем модуль на примере модуля FAQ

Все модули GMS находятся в директории system/GMS/third_party/.
 

Папка модуля и файлы

Для начала создайте папку faq в директории third_party. Каждый модуль имеет 3 обязательных файла:
  • mcp.faq.php - Файл для админ панели (backend)
  • upd.faq.php - Файл установки и удаления модуля
  • mod.faq.php - Файл для работы пользователями (frontend)
 
Для того чтобы отображать в админ панели название модуля, необходимо создать языковой файл. 
Файл faq_lang.php находится в директории third_party/faq/language/russian/.
Название файла состоит из имени модуля и приставки lang соединённых подчёркиванием и с расширением php.
 
Языковой файл содержит 2 обязательных значения массива:
<?php
$lang = array(
// Required for MODULES page
'faq_module_name'		=> 'FAQ',
'faq_module_description'	=> 'Модуль вопросов и ответов а также справочной информации по кабинету.',
// END
''=>'',
);
Обязательные ключи это faq_module_name и faq_module_description.
Они используются для отображения модуля в админ панели.
 

Установка модуля, файл upd.faq.php

Файл установки содержит класс состоящий из трёх обязательных методов.
 
Класс имеет имя модуля и префиксом _Upd, в данном случае это класс Faq_upd.
 

Метод install()

Данный метод устанавливает все необходимые данные.
 
Пример использования:
function install(){
	
	$data = array(
		'module_name' => 'Faq',
		'module_version' => $this->version,
	);
	
	$this->GMS->db->insert('modules', $data);

		
	return true;
}

Метод uninstall()

Данный метод удаляет данные если это необходимо.
Пример использования:
function uninstall(){
	
	$this->GMS->db->where('module_name', 'Faq');
	$this->GMS->db->delete('modules');
	
	return true;    
}

Метод update()

Данный метод используется при обновлении модуля, если версия модуля новее установленной версии то GMS запустит данный метод для обновления.
 
Метод принимает 1 входящий параметр - старую версию модуля.
 

Полный пример файла установки

<?php defined('APPPATH') or die('No direct script access.');
// ------------------------------------------------------------------------
/**
 * FDCore Studio
 *
 * @package GMS
 * @author  NetSoul
 * @copyright   Copyright (c) 2011, FDCore Studio
 * @link    http://fdcore.ru/gms/
 * @since   Version 1.0
*/
// ------------------------------------------------------------------------

class Faq_upd { 

	 var $version = '1.0'; 
	 
 	function __construct() 
    { 
		$this->GMS =& get_instance();		
    }
    
    
    function install(){
    	
		$data = array(
			'module_name' => 'Faq',
			'module_version' => $this->version,
		);
		
		$this->GMS->db->insert('modules', $data);

			
		return true;
    }
    
    function uninstall(){
		
		$this->GMS->db->where('module_name', 'Faq');
		$this->GMS->db->delete('modules');
		
		return true;    
    }
    
    function update($v=''){
    	return true;
    }
}
 

Создание backend модуля

 
Функциональная часть модуля в админ панели находится в файле mcp.faq.php
Для в файле содержится класс Faq_mcp.
 
Пример файла:
 
<?php

class Faq_mcp{

	function __construct()
	{
		$this->GMS =& get_instance();
	}

	function index(){

		$this->tags['title'] = 'Вопросы и ответы';

		return $this->GMS->twig->display_mcp('index.html', $this->tags);

	}

}
 
По умолчанию выполняется метод index().
 
Создание frontend модуля
 
Пользовательская часть содержится в файле mod.faq.php и отличается лишь названием класса - Faq_mod
 
продолжение следует...