• CMS Made Simple - Русская поддержка
Языки: CMS Made Simple - Official website CMS made Simple Czech Site Zur deutschsprachigen Supportseite CMS Made Simple - Danmark Sitio en Castellano Site francophone CMS Made Simple - Magyarország Benvenuto su CMSmadesimple CMSMS -  русский CMS Made Simple - slovenská verzia

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

В этой статье описывается создание собственного модуля для CMS Made Simple на примере модуля YandexSearch. Этот модуль позволяет разместить форму поиска по сайта на основе проиндексированных страниц поисковой системой Yandex.

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

Шаг 1

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

Шаг 2

Задайте имя разработчика модуля и его Email. Эта информация будет использована для документации модуля. Нажмите на Next.

Шаг 3

Задайте версию самого модуля, а также версии CMS Made Simple, под которыми этот модуль будет работать. В поле CMS Minimum Version рекомендуется задавать текущую версию CMSMS, если Вы не будете тестировать модуль на более ранних версиях. В поле CMS Maximum Version Вы можете также задать текущую версию и при обновлении CMSMS произвести обновление Вашего модуля. Нажмите на Next.

Шаг 4

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

Шаг 5

Будет ли модуль делать вывод на странице? Дело в том, существуют модули, которые не делают выдачи, например, SiteMapMadeSimple. Для таких модулей галочка в этом шаге не нужна. Но для нашего примера, будет выдача будет нужна. Примеры, поисковая форма и выдача результатов поиска, поэтом поставьте галочку и нажмите на Next.

Шаг 6

По умолчанию в каждом модуле используется метод default. Этот метод уже задан в списке над формой. При помощи этого метода в примере будут выводиться результаты поиска. Дополнительно нам понадобится метод search, для вывода поисковой формы в любом месте сайта. Задайте search в название метода (Add a User-Side method) и нажмите на Next.

Шаг 7

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

Шаг 8

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

Шаг 9

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

Шаг 10

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

Шаг 11

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

Шаг 12

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

На этом месте создание модуля закончено. Нажмите на Finished. Generate Module Stub и программа создаст все необходимые каталоги и файлы для модуля в директории modules. После создания модуля Вы можете установить его под Расширения->Модули. Выберите модуль в списке и нажмите на Установить. Создайте страницу типа "Контент" и добавьте в нее вывод {cms_module module='YandexSearch'}.

Для последующих шагов Вам понадобятся знания PHP. Откройте файл action.default.php в редакторе PHP. Кроме первой строчки (!не удалять) и комментариев Вы в нем ничего не найдете. Для того, чтобы добавить форму поиска нужно сделать несколько шагов. Дело в том, что CMS Made Simple очень четко разделяет код, контент и дизайн и поэтому мы будет добавлять куски кода в разные места. В файле action.default.php будет находится код:

$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'),'class="submit"'));
# кнопка для отправки формы
$this->smarty->assign('endform',$this->CreateFormEnd()); # тег для закрытия формы

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

Этот код сгенерирует отдельные элементы формы и передаст ее в шаблон search.tpl. Так как такого шаблона еще не существует, то нужно создать его в каталоге YandexSearch/templates. Добавьте в созданный файл search.tpl код:

{$startform}
<fieldset>
{$label_search}: {$input_search}
{$submit}
</fieldset>
{$endform}

Последним шагом в создании формы будет добавления русского языка для модуля. Для этого создайте новый каталог в 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('title_section',$this->Lang('prefs'));

$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()); # тег для закрытия формы

echo $this->ProcessTemplate('adminpanel.tpl'); # вызов шаблона

Код в шаблоне adminpanel.tpl, который был создан при помощи ModuleMaker, заменяем на:

<h3>{$title_section}</h3>
{$startform}
<div class="pageoverflow">
<p class="pagetext">{$label_host}:</p>
<p class="pageinput">{$input_host}</p>
</div>
<div class="pageoverflow">
<p class="pagetext">{$label_pagealias}:</p>
<p class="pageinput">{$input_pagealias}</p>
</div>
<div class="pageoverflow">
<p class="pagetext"></p>
<p class="pageinput">{$submit}</p>
</div>
{$endform}

Добавьте также не хватающие строки перевода в языковой файл ru_RU.php. Внешний вид администраторского интерфейса готов.

При сохранении любых форм в CMS Made Simple, все переменные ($_POST) записываются в переменную $params, которая всегда доступна внутри страниц и модуля. Зная, что эта переменная содержит нужные нам параметры, можно без труда создать код для сохранения формы:

if (isset($params['submit'])) {
$this->SetPreference('host',$params['host']);
$this->SetPreference('pagealias',$params['pagealias']);
}

Обратите внимание,что мы сначала проверяем наличие индекса submit в $params. Это - название, которое было дано кнопке "Сохранить". ($this->CreateInputSubmit($id,'submit',$this->Lang('save'))). Метод SetPreference доступен в модулях и используется для записи параметров. GetPreference соответственно выводит сохраненные значения. Последний метод мы использовали при построении полей ввода в административном интерфейсе.

Для поиска по сайту используем код, предоставленный поисковой системой Yandex. Для его внедрения Вам нужно выделить код, дизайн и контент из примера по ссылке. Вы можете посмотреть пример самой простой реализации в модуле YandexSearch.

Не забудьте добавить Ваш IP или IP сервера в панель Yandex, иначе запросы будут невозможны.

comments powered by Disqus