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

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

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

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

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

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

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

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


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

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


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

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


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

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


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

<&#063;php<br /> if (!defined("MODULE_FILE")) { <br /> Header("Location: ../../index.php");<br /> exit;<br /> }<br /> get_lang($conf['name']);<br /> $pagetitle = "".$conf["defis"]." "._ABOUT_COMPANY_TITLE."";<br /> head();<br /> title(""._ABOUT_COMPANY_LOGO."");<br /> open();<br /> 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>";<br /> close();<br /> switch($op) {<br /> default:<br /> main();<br /> break;<br /> <br /> case "founders":<br /> founders();<br /> break;<br /> }<br /> function main() {<br /> $bodytext = ""._ABOUT_COMPANY_TEXT."";<br /> open();<br /> echo $bodytext;<br /> close();<br /> }<br /> function founders() {<br /> $bodytext = ""._ABOUT_COMPANY_FOUNDERS."";<br /> open();<br /> echo $bodytext;<br /> close();<br /> }<br /> foot();<br /> &#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
Назад

Категории


Общее количество: 59 страниц в 8 категориях

Комментарии

SLAED CMS
3.24

3.24

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

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


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

3.00

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

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


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

4.00

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

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

Aquamarine
3.67

3.67

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

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

mafioz
2.95

2.95

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

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

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

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

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

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

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

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

86school34.info

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

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

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

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

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

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

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