Просмотр файла mc-2.7.0/docs/dev.modules.html

Размер файла: 12.96Kb
  1. <html>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Документация по MobileCMS</title>
  6. <link rel="stylesheet" href="style.css" type="text/css" />
  7. </head>
  8.  
  9. <body><div class="navheader">
  10. <table width="100%" summary="Navigation header">
  11. <tr>
  12. <th align="center">Документация по MobileCMS</th>
  13. </tr>
  14. <tr>
  15. <th align="center">Структура модулей и их разработка</th>
  16. </tr>
  17. </table>
  18. <hr />
  19. </div>
  20.  
  21. <div class="refsect1">
  22. <h2>Введение</h2>
  23. <p class="classname">
  24. Модули в MobileCMS состоят из 4х основных частей:<br />
  25. <ul>
  26. <li>Файл <strong class="command"><b>module.ini</b></strong> - содержит важную информацию о модуле</li>
  27. <li>Папка <strong class="command"><b>controllers</b></strong> - содержит контроллеры модуля</li>
  28. <li>Папка <strong class="command"><b>views</b></strong> - содержит шаблоны модуля</li>
  29. <li>Папка <strong class="command"><b>helpers</b></strong> - содержит хелперы (помощники) модуля</li>
  30. </ul>
  31. Также модули могут содержать и другие необходимые для работы файлы и папки.<br />
  32. <br />
  33. Рассмотрим структуру модулей более подробно на примере тестового модуля.
  34. </p>
  35. </div>
  36.  
  37. <div><br /></div>
  38.  
  39. <div class="refsect1">
  40. <h2>module.ini</h2>
  41. Файл <strong class="command"><b>module.ini</b></strong> содержит важную информацию о модуле, необходимую для его установки. Основные компоненты файла:
  42. <ul>
  43. <li><strong class="command"><b>name</b></strong> - название модуля, в названии могут быть только латинские буквы, цифры и знаки подчеркивания, например, <strong class="command">test</strong> (обязательный пареметр)</li>
  44. <li><strong class="command"><b>title</b></strong> - отображаемое имя модуля, например, <strong class="command">Тест</strong> (обязательный пареметр)</li>
  45. <li><strong class="command"><b>admin_link</b></strong> - ссылка на управление модулем в панеле управления, формат как для первого параметра функции <strong class="command">a_url()</strong> (сегменты ссылки), например, <strong class="command">test/admin</strong> (не обязательный пареметр, используется только если есть управление модулем из панели управления)</li>
  46. <li><strong class="command"><b>description</b></strong> - краткое описание модуля, например, <strong class="command">Тестовый модуль</strong> (не обязательный пареметр)</li>
  47. <li><strong class="command"><b>author</b></strong> - автор модуля, например, <strong class="command">Ant0ha</strong> (не обязательный пареметр)</li>
  48. <li><strong class="command"><b>version</b></strong> - версия модуля, например, <strong class="command">0.1</strong> (не обязательный пареметр)</li>
  49. </ul>
  50. Пример module.ini:<br />
  51. <pre class="programlisting">
  52. name = "test"
  53. title = "Тест"
  54. admin_link = "test/admin"
  55. description = "Тестовый модуль"
  56. author = "Ant0ha"
  57. version = "0.1"</pre>
  58. </div>
  59.  
  60. <div><br /></div>
  61.  
  62. <div class="refsect1">
  63. <h2>controllers</h2>
  64. Папка <strong class="command"><b>controllers</b></strong> содержит контроллеры модуля. Контроллер - это основная часть модуля, где выполняется логика скрипта.<br />
  65. Рассмотрим примеры простых контроллеров тестового модуля.<br />
  66. <br />
  67. Файл <strong class="command"><b>controllers/test.php</b></strong><br />
  68. <pre class="programlisting">
  69. &lt;?php
  70. /**
  71. * Контроллеры модулей происходят от класса Controller.
  72. * Название контроллера происходит от названия модуля с большой буквы с окончанием _Controller
  73. */
  74. class Test_Controller extends Controller {
  75. /**
  76. * Доступ к контроллеру (укажем 0 чтобы разрешить доступ каждому пользователю)
  77. */
  78. public $access_level = 0;
  79. /**
  80. * Метод вызываемый по умолчанию
  81. */
  82. public function action_index() {
  83. # Вызовем главный и единственный метод нашего контроллера
  84. $this->action_hello_world();
  85. }
  86. /**
  87. * Метод выводит "Hello world!"
  88. */
  89. public function action_hello_world() {
  90. # Ассигнуем переменную для теста модуля
  91. $this->tpl->assign(array(
  92. 'hello' => "Hello world!"
  93. ));
  94. # Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views
  95. # Будет подключен файл modules/test/views/default/hello_world.tpl
  96. $this->tpl->display('hello_world');
  97. }
  98. }
  99. ?&gt;</pre>
  100. <br />
  101. Так выглядит простой контроллер нашего тестового модуля, показыающий всем фразу "Hello world!", теперь расмотрим самый простой контроллер нашего модуля для панели управления.<br />
  102. <br />
  103. Файл <strong class="command"><b>controllers/test_admin.php</b></strong><br />
  104. <pre class="programlisting">
  105. &lt;?php
  106. class Test_Admin_Controller extends Controller {
  107. /**
  108. * В доступе к контроллеру пропишем 10, т.е. он доступен только админам сайта.
  109. * Чтобы разрешить доступ и модерам, можно будет прописать 8.
  110. */
  111. public $access_level = 10;
  112. /**
  113. * Тема, используемая в контроллере, для админки необходимо указать "admin"
  114. */
  115. public $template_theme = 'admin';
  116. /**
  117. * Метод вызываемый по умолчанию
  118. */
  119. public function action_index() {
  120. # Вызовем главный и единственный метод нашего контроллера
  121. $this->action_hello_admin();
  122. }
  123. /**
  124. * Метод выводит "Hello Admin!"
  125. */
  126. public function action_hello_admin() {
  127. # Ассигнуем переменную для теста модуля
  128. $this->tpl->assign(array(
  129. 'hello' => "Hello Admin!"
  130. ));
  131. # Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views
  132. # Будет подключен файл modules/test/views/admin/hello_admin.tpl
  133. $this->tpl->display('hello_admin');
  134. }
  135. }
  136. ?&gt;</pre>
  137. </div>
  138.  
  139. <div><br /></div>
  140.  
  141. <div class="refsect1">
  142. <h2>helpers</h2>
  143. Папка <strong class="command"><b>helpers</b></strong> содержит хелперы (помощники) модуля. Это служебные php файлы, помогающие в работе модуля.<br />
  144. Обычно в helpers модуля присутствуют 2 хелпера - инсталлер и виджет, рассмотрим их более детально.<br />
  145. <br />
  146. Файл <strong class="command"><b>helpers/test_installer.php</b></strong> (название файла состоит из названия модуля и окончания <strong class="command">_installer.php</strong>) предназначен для выполнения каких-либо действий во время установки и деинсталляции модуля, если никаких действий не требуется, то этот файл не обязателен.<br />
  147. <pre class="programlisting">
  148. &lt;?php
  149. /**
  150. * Название класса инсталлятора также состоит из названия модуля и окончания _installer
  151. */
  152. class test_installer {
  153. /**
  154. * Метод для установки модуля
  155. */
  156. public static function install(&$db) {
  157. # Создадим таблицу a_test, якобы нужную нашему модулю test
  158. $db->query("CREATE TABLE`a_test` (
  159. `item_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  160. `item` VARCHAR( 30 ) NOT NULL
  161. ) ENGINE = InnoDB ;
  162. ");
  163. }
  164. /**
  165. * Метод для удаления модуля
  166. */
  167. public static function uninstall(&$db) {
  168. $db->query("DROP TABLE a_test");
  169. }
  170. }
  171. &gt;</pre>
  172.  
  173. В инсталляторе можно не только создавать/удалять таблицы, но так же и создавать/удалять файлы и папки, добавлять правила роутинга, события и т.д.<br />
  174. <br />
  175. Файл <strong class="command"><b>helpers/test_widget.php</b></strong> (название файла состоит из названия модуля и окончания <strong class="command">_widget.php</strong>) предназначен для вывода какой-либо информации на главную страницу сайта.<br />
  176. <pre class="programlisting">
  177. &lt;?php
  178. /**
  179. * Название класса виджета также состоит из названия модуля и окончания _widget
  180. */
  181. class test_widget {
  182. /**
  183. * Показ виджета
  184. */
  185. public static function display($widget_id) {
  186. return 'Это виджет тестового модуля&lt;br /&gt;';
  187. }
  188. /**
  189. * Настройка виджета
  190. */
  191. public static function setup($widget) {
  192. a_notice('Данный виджет не требует настройки', a_url('index_page/admin'));
  193. }
  194. }
  195. &gt;</pre>
  196. <br />
  197. Виджет может быть намного сложнее, выводить динамическую информацию и иметь более сложные настройки, для примера можете посмотреть виджет модуля загрузок в <strong class="command">modules/downloads/helpers/downloads_widget.php</strong> вашей копии MobileCMS<br />
  198. <br />
  199. Также хелперы модулей могут (и это очень рекомендуется) содержать частоиспользуемые методы (функции) в модуле, для примера взгляните хелпер модуля смайлов <strong class="command">modules/smiles/helpers/smiles.php</strong>
  200. </div>
  201.  
  202. <div><br /><br /></div>
  203.  
  204. <div class="navfooter"><hr />
  205. <table width="100%" summary="Navigation footer">
  206. <tr>
  207. <td width="40%" align="left"><a href="dev.general_functions.html">Пред</a></td>
  208. <td width="20%" align="center"><a href="index.html">На уровень выше</a></td>
  209. <td width="40%" align="right"><a href="dev.module_main.html">След</a></td>
  210. </tr>
  211. <tr>
  212. <td width="40%" align="left" valign="top">Главные методы ядра</td>
  213. <td width="20%" align="center">Содержание</td>
  214. <td width="40%" align="right" valign="top">Методы модуля main</td>
  215. </tr>
  216. </table>
  217. </div>
  218.  
  219. </body>
  220. </html>