Документация - Модули - Создание собственного модуля

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

Чтобы создать собственный модуль для сайта, построенного с использованием SLAED, достаточно простейших знаний HTML и PHP, а также соблюдение их синтаксиса. Кроме этого потребуется правильная постановка задачи и внимательность. В качестве примера ниже приведены коды модулей, созданные для использования на всех версиях системы SLAED. При реализации модулей учитывайте, любой PHP код должен начинаться c <?php и заканчиваться ?>

1. Создание простейшего модуля

1.1. Представим себе, что Ваш сайт только на русском языке. Вы хотите для этого сайта сделать модуль «О компании». Для этого Вам нужно в директории http://www.ваш_сайт.com/modules/ создать поддиректорию «About_Company». В этой поддиректории должен находиться файл index.php. Вот как это должно выглядеть:

Структура каталогов и файлов модуля About_Company - Пример 1

(Кроме модуля «About_Company» на скриншоте представлен ещё и модуль «Account».)

В файле index.php для простейшего модуля должен быть такой код:

<&#063;php # Ставим защиту на прямое обращение к файлу index.php через браузер. # Если браузером обратиться к файлу # http://www.ваш_сайт.com/modules/About_Company/index.php, то браузер # будет перенаправлен в корень сайта к файлу http://www.ваш_сайт.com/index.php if (!defined("MODULE_FILE")) { Header("Location: ../../index.php"); exit; } # Название простейшего модуля, которое будет иметь вид «О компании - Название сайта». # Переменная "defis" задаётся в панели администратора на странице «Конфигурации» # в разделе «Настройки системы» >> «Основные конфигурации» # в опции «Символ, отделяющий титлы и заголовки». Рекомендуется # использовать разделитель «-». Переменная $pagetitle будет выводиться # в браузере в самой верхней строке, где указывается название странички. $pagetitle = "".$conf["defis"]." О компании"; # Вставляем в страничку «шапку» сайта, то есть его верхнюю часть, # которая будет одинаковой на всех страничках сайта. head(); # Заголовок модуля, который вставляется # в страничку отдельной строкой над телом модуля. title("О компании"); # Открываем таблицу open(); # Выводим на страницу содержание модуля. echo "Содержание модуля «О компании»"; # Закрываем таблицу. close(); # Вставляем в страницу «подвал» сайта, то есть его нижнюю часть, # которая будет одинаковой на всех страничках сайта. foot(); &#063;>

Без комментариев код модуля «О компании» выглядит так:

<&#063;php if (!defined("MODULE_FILE")) { Header("Location: ../../index.php"); exit; } $pagetitle = "".$conf["defis"]." О компании"; head(); title("О компании"); open(); echo "Содержание модуля «О компании»"; close(); foot(); &#063;>

В содержимое модуля можно вставлять не только текст, но и HTML-код, а также PHP-код. HTML-код нужно вставлять с соблюдением синтаксиса языка PHP.

1.2. Допустим, Вы хотите кроме текста на русском языке вставлять в модуль ещё и какие-то картинки. Для этого нужно добавить в директорию «About_Company» модуля «About_Company» поддиректорию «images», в которой будут храниться графические файлы. Структура директорий и файлов модуля «About_Company» будет выглядеть так:

Структура каталогов и файлов модуля About_Company - Пример 2

building.jpg — это фотография здания компании
company_logo.gif — это логотип компании
director.jpg — это фотография директора фирмы
index.html — это пустой файл, который нужен для того, чтобы невозможно было просмотреть браузером содержимое директории «images»
map.gif — это карта проезда к зданию компании

Разумеется, могут быть и другие графические файлы. Вы можете задавать свои имена графическим файлам.

1.3. Предположим, что Ваш сайт не на одном языке (только на русском), а на нескольких языках (русском, английском и немецком). В этом случае структура директорий и файлов модуля «About_Company» будет выглядеть так:

Структура каталогов и файлов модуля About_Company - Пример 3

language — это директория, содержащая в себе языковые файлы

.htaccess — этот файл запрещает всем доступ в директорию «language», в этом файле должна быть такая строка:

deny from all

Файл .htaccess нужно создавать, редактировать и сохранять только в программе «Блокнот» (Notepad) под Windows, так как этот файл должен быть сохранён в кодировке Unix, что обеспечивает его правильную работу на web-сервере, использующего операционную систему Unix или ей подобную (Linux, FreeBSD).

index.html — это пустой файл, который нужен для того, чтобы невозможно было просмотреть браузером содержимое директории «language»
lang-english.php — языковый файл модуля на английском языке
lang-german.php — языковый файл модуля на немецком языке
lang-russian.php — языковый файл модуля на русском языке

Код модуля «About_Company» в этом случае будет иметь вид:

<&#063;php if (!defined("MODULE_FILE")) { Header("Location: ../../index.php"); exit; } # Запрашиваем языковые файлы из директории «language» и автоматически выбираем # языковый файл, который соответствует активному языку сайта (русскому, например). get_lang($conf['name']); $pagetitle = "".$conf["defis"]." "._ABOUT_COMPANY_TITLE.""; $bodytext = ""._ABOUT_COMPANY_TEXT.""; head(); title(""._ABOUT_COMPANY_LOGO.""); open(); echo $bodytext; close(); foot(); &#063;>

Без комментариев код модуля «About_Company», который работает на мультиязычном сайте, имеет вид:

<&#063;php if (!defined("MODULE_FILE")) { Header("Location: ../../index.php"); exit; } get_lang($conf['name']); $pagetitle = "".$conf["defis"]." "._ABOUT_COMPANY_TITLE.""; $bodytext = ""._ABOUT_COMPANY_TEXT.""; head(); title(""._ABOUT_COMPANY_LOGO.""); open(); echo $bodytext; close(); foot(); &#063;>

Содержимое файла http://www.ваш_сайт.com/modules/About_Company/language/lang-russian.php такое, например:

<&#063;php define("_ABOUT_COMPANY_TITLE","О компании"); define("_ABOUT_COMPANY_LOGO","О компании"); define("_ABOUT_COMPANY_TEXT","<div align=center class=option>Общая информация о компании</div><p>1.&nbsp;Наша компания была зарегистрирована в 1995-м году в Москве. Учредителями компании являются частные и юридические лица. Список учредителей можно посмотреть <a href=index.php&#063;name=About_Company&op=founders> здесь</a>.</p><p>2.&nbsp;Наша компания занимается следующими видами деятельности:</p><ul><li>Дизайн сайтов</li><li>WEB-программирование</li> <li>Продвижение сайтов в Интернете</li></ul><p>3.&nbsp;Наш адрес и как с нами связаться:<p><ul>123124 Москва, Кривоколдобинский переулок, дом 8, строение 3, корпус 5, 2-й подъезд, 4-й этаж, офис 18.<p>Телефон: (495) 123-45-67<p> Факс: (495) 123-45-68<p>Электронная почта: info@supersite.ru<p> Сайт: <a href=http://www.supersite.ru/>www.supersite.ru</a></ul></p> <p>4.&nbsp; Режим работы компании:<p><ul>В рабочие дни (понедельник — пятница) — с 9:00 до 18:00, без перерыва на обед.<p>Суббота и воскресенье — выходные дни.</ul> </p><p>5.&nbsp;Схема проезда:<p><img src=modules/About_Company/images/map.gif width=240 height=200 border=0 alt=Схема title=Схема></p> <p>6.&nbsp;Фотография здания нашей компании:<p> <img src=modules/About_Company/images/building.jpg width=300 height=250 border=0 alt=Здание title=Здание></p> <p>7.&nbsp;Фотография директора компании «SuperSite» Иванова Петра Сидоровича:<p> <img src=modules/About_Company/images/director.jpg width=100 height=180 border=0 alt=Фотография title=Фотография></p>"); define("_ABOUT_COMPANY_FOUNDERS","<div align=center class=option>Учредители компании</div><p>Учредителями компании «SuperSite» являются частные и юридические лица. Список учредителей:</p><ul><li>Иванов Пётр Сидорович</li> <li>Демидов Николай Александрович</li><li>ЗАО «PromoInternet»</li> <li>OАО «Star Design»</li></ul>"); &#063;>

В языковых файлах lang-english.php и lang-german.php информация, представленная в файле lang-russian.php, должны быть переведена на соответствующие языки.

В данном примере всё содержимое (контент) и внутреннее оформление (дизайн) модуля «About_Company» находится в языковых файлах. Для более сложного содержимого модуля (таблицы, например) целесообразно размещать HTML-код в файле index.php модуля «About_Company», а в языковые файлы нужно выносить только языковые константы (define("_ABOUT_COMPANY_TITLE","О компании");, например), что существенно облегчит работу с языковыми файлами, а также позволитс меньшими затратами времени вносить изменения в контент и дизайн модуля.

1.4. Для доступа к страничке со списком учредителей компании нужно применить оператор switch.

Код файла index.php модуля «About_Company» должен иметь вид:

<&#063;php if (!defined("MODULE_FILE")) { Header("Location: ../../index.php"); exit; } get_lang($conf['name']); $pagetitle = "".$conf["defis"]." "._ABOUT_COMPANY_TITLE.""; head(); title(""._ABOUT_COMPANY_LOGO.""); # Открываем таблицу open(); # Создаём навигацию на страничке модуля echo "<div align=center><b>[ <a href=index.php&#063;name=".$conf['name']." >Общая информация о компании</a> | <a href=index.php&#063;name=".$conf['name']." &op=founders>Учредители компании</a> ]</b></div>"; # Закрываем таблицу close(); # C помощью оператора switch разделяем содержание # странички на несколько разделов switch($op) { default: main(); break; case "founders": founders(); break; } # Создаём раздел main function main() { $bodytext = ""._ABOUT_COMPANY_TEXT.""; open(); echo $bodytext; close(); } # Создаём раздел founders function founders() { $bodytext = ""._ABOUT_COMPANY_FOUNDERS.""; open(); echo $bodytext; close(); } foot(); &#063;>

Без комментариев код модуля «About_Company» будет выглядеть так:

<&#063;php if (!defined("MODULE_FILE")) { Header("Location: ../../index.php"); exit; } get_lang($conf['name']); $pagetitle = "".$conf["defis"]." "._ABOUT_COMPANY_TITLE.""; head(); title(""._ABOUT_COMPANY_LOGO.""); open(); echo "<div align=center><b>[ <a href=index.php&#063;name=".$conf['name'].">Общая информация о компании</a> | <a href=index.php&#063;name=".$conf['name']."&op=founders>Учредители компании</a> ]</b></div>"; close(); switch($op) { default: main(); break; case "founders": founders(); break; } function main() { $bodytext = ""._ABOUT_COMPANY_TEXT.""; open(); echo $bodytext; close(); } function founders() { $bodytext = ""._ABOUT_COMPANY_FOUNDERS.""; open(); echo $bodytext; close(); } foot(); &#063;>

В языковом файле http://www.ваш_сайт.com/modules/About_Company/language/lang-russian.php (а также в файлы lang-german.php и lang-russian.php) должна быть языковая константа _ABOUT_COMPANY_FOUNDERS. Файл lang-russian.php будет иметь вид, как было указано выше.

Указанный модуль не хранит информацию в базе данных, что позволяет чуть быстрее выводить эту информацию на страничку в браузер посетителя сайта, к тому же такой способ хранения информации меньше загружает MySQL-сервер хостера.

Для внесения новой информации, для редактирования существующей информации в файлах модуля (языковые файлы http://www.ваш_сайт.com/modules/About_Company/language/lang-russian.php) требуются начальные знания синтаксиса HTML и PHP.

Автор: Кирилл Мезинцев

124

Комментарии

SLAED CMS
3.24

3.24

Группа
Клиент
Регистрация
30.04.2005
Пол
Мужчина
Из
Germany
Предупреждения
Нет
SLAED CMS
08.04.2015 20:27:19

deather, да, конечно, такая возможность тоже есть. Можно создать собственный блок и выводить любую, необходимую вам информацию. Подробнее о создании своего блока можно узнать в данном отделе или как вариант, скачать и установить готовый блок из нашего каталога файлов.


О сколько нам открытий чудных, Готовит просвещенья дух, И опыт, сын ошибок трудных, И гений, парадоксов друг...
deather
3

3

Группа
Пользователи
Регистрация
03.06.2010
Пол
Мужчина
Предупреждения
  1. Использование нелегальной версии
deather
08.04.2015 19:29:03

Меня интересует можно ли создать на главной ленту в виде блока, чтоб выводились статьи из определенной категории? Не из всего модуля файлов а чисто из конкретных?


[url=http://bysmeta.ru/]bysmeta.ru[/url]
Atlantica
4

4

Группа
Новички
Регистрация
02.04.2013
Пол
Мужчина
Предупреждения
Нет
Atlantica
02.04.2013 12:54:40

Полезный урок!

Aquamarine
3.67

3.67

Группа
Клиент
Регистрация
27.09.2006
Пол
Мужчина
Из
Россия, Екатеринбург
Предупреждения
Нет
Aquamarine
03.09.2010 10:58:32

А как сделать,чтобы было 2 или более списков учредителей?

mafioz
2.95

2.95

Группа
Клиент
Регистрация
16.06.2008
Пол
Мужчина
Предупреждения
Нет
mafioz
15.03.2009 08:56:07

отличная статья сделал пару своих модулей по ней Смайл - 04

""И как сделать не удаляя ?""
это всегда должно быть.

illimited
Статус
Гость
illimited
04.02.2009 11:11:17

И как сделать не удаляя ?

if (!defined("MODULE_FILE")) { Header("Location: ../../index.php"); exit; }

Гость
Статус
Пользователь удалён
Гость
07.09.2008 08:04:29

Спасибо.
Очень помогло!

86school34.info

Гость
Статус
Пользователь удалён
Гость
28.03.2008 17:09:43

оперативненько, большое спасибо !

Гость
Статус
Пользователь удалён
Гость
27.03.2008 03:27:56

Все думал, как из скрипта который состоит из двух файлов сделать модуль под Slaed . Теперь знаю

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

Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код

Предварительный просмотр