CMS Made Simple - Створення власного модуля

У цьому розділі

Створення свого модуля

Ця стаття описує створення власного модуля для CMS Made Simple на прикладі модуля YandexSearch. Цей модуль дозволяє розмістити форму пошуку по сайту на основі проіндексованих сторінок пошуковою системою Yandex.

Для початку встановіть модуль ModuleMaker на сайті. Цей модуль потрібний тільки для створення модулів і може бути видалено. Якщо установка неможлива через обмеження версії, відкрийте файл ModuleMaker.module.php і повністю видаліть з нього функцію MaximumCMSVersion. Модуль працює на версіях до 1.4.1. Для створення модуля перейдіть в адміністративному інтерфейсі на Розширення->ModuleMaker. Вам надається пройти 13 кроків із запитаннями, відповіді на які допоможуть створити основну структуру для Вашого модуля.

Задайте технічну назву модуля (Module Name), що складається лише з літер латинського алфавіту і не використовуйте пробіли. У другому полі додайте назву модуля у вільній формі (Module "Friendly" Name) - під цим ім'ям модуль буде відображатися в адміністративному інтерфейсі. Додати опис модуля (Module Description) і натисніть на Next

Введіть ім'я розробника модуля та його Email. Ця інформація буде використана для документації модуля. Натисніть кнопку Next.

Вкажіть версію самого модуля, а також версії CMS Made Simple, під якими цей модуль працюватиме. У полі CMS Minimum Version рекомендується задавати поточну версію CMSMS, якщо Ви не тестуватимете модуль на попередніх версіях. У полі CMS Maximum Version Ви також можете задати поточну версію і при оновленні CMSMS провести оновлення Вашого модуля. Натисніть кнопку Next.

Тут Вам надається можливість задати модулі, які Ви будетевикористовувати у своєму модулі і таким чином визначити їхню залежність. Наприклад, якщо Ви використовуватимете стандартний модуль надсилання пошти CMSMailer у коді Вашого модуля, то Ви повинні задати тут потрібні параметри. У прикладі не використовуються інші модулі. Залишіть поля незаповненими та натисніть Next.

Чи модуль робитиме висновок на сторінці? Справа в тому, що існують модулі, які не роблять видачі, наприклад, SiteMapMadeSimple. Для таких модулів галочка у цьому кроці не потрібна. Але для нашого прикладу буде видача буде потрібна. Приклади, пошукова форма та видача результатів пошуку, поставте галочку і натисніть на Next.

За замовчуванням у кожному модулі використовується метод default. Цей метод вже поставлений у списку над формою. За допомогою цього в прикладі будуть виводитися результати пошуку. Додатково нам знадобиться метод search для виведення пошукової форми в будь-якому місці сайту. Задайте search у назву методу (Add a User-Side method) та натисніть на Next.

Чи матиме модуль адміністративний інтерфейс? Для нашого прикладу він буде потрібний. Поставте галочку та натисніть на Next.

В якому розділі меню адміністративного інтерфейсу буде розміщено Ваш модуль? Для нашого прикладу виберіть the Content Menu у меню, що випадає (Admin Section) або виберіть будь-який інший розділ, що підходить за змістом. Додати опис модуля, який буде доступний для адміністраторів сайту і натисніть на Next

Для обмеження прав в адміністративному інтерфейсі Вам пропонується створити нову групу доступу, в яку згодом можуть бути додані користувачі, які мають доступ до адміністративного інтерфейсу. Для нашого прикладу додайте назву групи ModifyYandexSearch та натисніть Next.

Група доступу, створена Вами в попередньому кроці, тепер доступна дляналаштувань. Для доступу до модуля в адміністративному інтерфейсі виберіть у меню меню ModifyYandexSearch.

Для адміністративного інтерфейсу пропонується розробити способи. За замовчуванням буде створено метод defaultadmin. Для більш складних модулів Вам знадобиться кілька методів, але для нашого прикладу одного методу достатньо. Натисніть кнопку Next.

Для зручності використання великих модулів можна створювати різні закладки для адміністративного інтерфейсу. Для нашого модуля це не потрібно. Натисніть кнопку Next.

На цьому місці створення модуля закінчено. Натисніть Finished. Generate Module Stub та програма створить усі необхідні каталоги та файли для модуля в директорії modules. Після створення модуля Ви можете встановити його під Розширення->Модулі. Виберіть модуль у списку та натисніть кнопку Встановити. Створіть сторінку типу "Контент" та додайте до неї висновок.

$this->smarty->assign('startform', $this->CreateFormStart($id,'default',$returnid)); # тег початку форми $this->smarty->assign('label_search',$this->Lang('title_search')); # label для форми пошуку $this->smarty->assign('input_search',$this->CreateInputText($id,'search')); # поля для пошукової фрази $this->smarty->assign('submit', $this->CreateInputSubmit($id,'submit',$this->Lang('search'),' ')); # кнопка для відправки форми $this->smarty->assign('endform',$this->CreateFormEnd()); тег для закриття форми

echo $this->ProcessTemplate('search.tpl'); # виклик шаблону

Цей код згенерує окремі елементи форми та передасть їх у шаблон search.tpl. Так як такого шаблону ще не існує, потрібно створити його в каталозі YandexSearch/templates. Додайте до створеного файлу search.tpl код:

Останнім кроком у створенніформи буде додавання української мови до модуля. Для цього створіть новий каталог YandexSearch/lang/ і назвіть його ext. У цьому каталозі зберігатимуться всі мовні файли, відмінні від англійської. Відкрийте файл YandexSearch/lang/en_US.php і збережіть його в каталозі YandexSearch/lang/ext під ім'ям ru_RU.php після цього додайте два рядки в кінець файлу.

$lang['title_search'] = 'Пошукова фраза'; $lang['search'] = 'Шукати';

Форма пошуку готова. Зайдіть на сторінку "Пошук на сайті", на якій Ви задали виведення модуля та перевірте правильність Вашого коду.

Перед тим, як додавати код пошуку, потрібно налаштувати два параметри:

  • host = сайт, на якому проводитиметься пошук
  • page = сторінка з пошуковими результатами

Форма для збереження цих параметрів в інтерфейсі створюється за таким же принципом, як і форма для виведення форми пошуку. Додаємо до сторінки action.defaultadmin.php код:

$this->smarty->assign('startform',$this->CreateFormStart($id,'defaultadmin',$returnid)); # тег початку форми $this->smarty->assign('label_host',$this->Lang('title_host')); $this->smarty->assign('input_host',$this->CreateInputText($id,'host', $this->GetPreference('host'))); $this->smarty->assign('label_pagealias',$this->Lang('title_pagealias')); $this->smarty->assign('input_pagealias', $this->CreateInputText($id,'pagealias',$this->GetPreference('pagealias'))); $this->smarty->assign('submit',$this->CreateInputSubmit($id,'submit',$this->Lang('save'))); $this->smarty->assign('endform',$this->CreateFormEnd()); тег для закриття форми