Лучшая система размещения статей
 Добавить в избранное |  Сделать стартовой 
Поиск По Сайту
Навигация
     Главная
     Форум
     Новости
     Обзор новостей
     Гостевая
     Статьи
     Файлы
     Магазин
     Пользователи
     Контакты
     О Проекте
     Карта Сайта
Вход
Логин:

Пароль:


Запомнить меня
Вам нужно Авторизоваться.
Забыли Пароль?
Регистрация
Атестат
Подписка на новости: Подписаться

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

Автор: Александр Ковальский
E-Mail: webing@kmstudio.com.ua
Источник: www.kmstudio.com.ua
Добавлено: 2005-05-04 22:00:56

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

1. Расположение Файлов
2. Переменные
3. Пути и Ссылки
4. Защита Модуля от несанкционированного доступа
5. Многоязычный Модуль
6. Создадим Экземпляр Модуля На Главной Странице
7. Создание Своей Системной Переменной
8. Управление Правами Доступа К Модулю
9. Как создать отдельную страницу на портале
10. Что должно быть в файлах PHP


1. Расположение Файлов

Структура расположения файлов модулей для пользователей, все модули хранятся в директории mod/. Соответственно, Вам необходимо будет создавать директорию с Юзер-Частью модуля в этой директории.

Все ссылки генерируются автоматически, после добавления информации о модуле в БД Навигации (см. Как создать отдельную страницу на портале).
Нас интересует, как же происходит обращение к файлам модулей.

По умолчанию, "стартовая" страница модуля - index.php, поэтому Ваш модуль будет вызываться как:
http://my_domen.ru/?nma=faq&fla=index или http://my_domen.ru/?nma=faq

Переменная $nma показывает какой модуль мы загружаем (mod/faq/), а переменная $fla – файл, если он не указан, то по умолчанию (mod/faq/index.php).

Нас спрашивали, можно ли загрузить скрипт, находящийся на другом сервере:
http://my_domain.ru/?nma=http://xaker.com&fla=crack
И типа в этом случае в движок загрузится файл http://xaker.com/crack.php

Хочу опровергнуть данную теорию: в index.php движка идет проверка на наличие модуля конкретно на НАШЕМ сервере, т.е. проверка идет по файловой структуре сервера, поэтому не возможно таким образом загрузить файл с другого сервера.
Кроме всего прочего идет проверка всех имен переменных есть ли вних "не символы".

Административная часть модуля должна храниться в директории admin/, где тоже необходимо создать папку, например, faq. В этой папке и должен лежать фаил index.php, который отвечает за администрацию Вашего модуля.


2. Переменные

Все переменные, применяемые в работе модуля, должны имеет уникальное имя, т.е. такие как $name, $login, $mail - лучше не использовать, они могут встречаться в самой оболочке, и модуль может перенять значение именно этих "системных" переменных. Поэтому рекомендую имена переменных указывать, как, например: $mymodper01, $mymodper02, $mymodper03 и так далее.

Так же должен обратить Ваше внимание, что все пользовательские модули находятся внутри функции, поэтому при передаче переменной как методом ГЕТ так и ПОСТ Вам необходимо будет глобализировать все используемые Вами переменные.
Например:global $fio,$vozrast;
А если Вы используете функцию, то Вам нужно глобализировать переменную ДО функции и ВНУТРИ функции. Системные переменные уже глобализированны. При создании модуля Вам будут доступны следующие системные переменные:


Конфигурационные Переменные
Переменная Допустимые Значения Описание
$portal_url URL Сайта Адрес (url) портала. Используется для проверки получаемых данных.
$portal_mail E-Mail E-Mail портала, от его имени будут расходится все письма с портала (рассылка, запросы на активацию).
$portal_skin Имя Директории С Темой Используемая тема, расположенная в директории /thema/
$portal_alias Имя Директории С Темой Используемая тема, если браузер не IE (альтернативная тема), расположенная в директории /thema/
$portal_smtp SMTP сервер SMTP сервер, через который будет отправляться почта, если в Опциях системы указана отправка через SMTP сервер
$portal_smtpuser Login Логин от Ваше Mail-аккаунта для соединения с SMTP сервером
$portal_smtppass Password Пароль от Ваше Mail-аккаунта для соединения с SMTP сервером
$portal_mailmetchod Число Определяет метод отправки почты с портала:
0 - Функция MAIL, HTML формат;
Не рекомендуется, т.к. все сообщения создавались под текстовый формат
1 - Через SMTP Сервер;
2 - Функция MAIL, TXT формат.
$portal_counter yse/none Определяет, включен или выключен внутренний счетчик и статистика портала.
$portal_lang Язык Определяет язык используемый порталом по умолчанию
$portal_flood Число Время "Флудинга" в секундах. 0 означает отключенную проверку на флудинг
$portal_optcomm Число Определяет состояние автоматической оптимизации БД.
1 - оптимизация включена, 0 - выключена
$portal_optimize Число Определяет время в часах между автоматической оптимизацией БД
$portal_opttime time() Т.к. автоматическая оптимизация запускается при запуске движка, т.е. не использует Cron, эта переменная содержит значение time() c момента последней оптимизации БД
$portal_time Положительное или отрицательное число Определяет расхождение времени между временем портала и сервером. Используется в случаях, если посетители и сервер находятся в разных часовых поясах
$portal_gen Число Определяет состояние отображения "времени генерации" страниц. Значение 0 отключает эту функцию, значение 1 - включает
$portal_gzip Число Определяет состояние функции Gzip-компресии. Значение 0 отключает эту функцию, значение 1 - включает
$portal_act Число Определяет метод регистрации пользователейна портале.
0 - после заполенния регистрационной формы на e-mail пользователя приходит ссылка для активации его учетной записи;
1 - активация не требуется, сразу после заполенния регистрационной формы пользователь может авторизоваться;
2 - регистрация не доступна.
$portal_close Число Может принимать значение 0 - портал работает, или 1 - портал отключен.
Можно использовать, если Вы проводите какие-либо технические работы на портале.
$portal_closetext HTML Код HTML код отображаемый вместо страниц портала, если портал отключен (см. $portal_close).
Примечание: все эти переменные так же доступны через массив $wcpsval
(например: $wcpsval[′portal_skin′], $wcpsval[′portal_smtp′])
 
Переменные Сессий
Переменная Допустимые Значения Описание
$sname ЛОГИН Логин пользователя. Не используется при отображении (для безопасности), но используется для привязки данных к пользователю (внутренная почта, записи в блокноте и т.п.)
$auth Число Состояние пользователя: 1 - авторизован, инече не авторизован
$urov Число Определяет уровень пользователя:
1 - Администратор;
2 - Модератор;
3 - Пользователь;
с версии 2.0 добавлены "свободные" уровни: U4, U5, U6, U7, U8 и U9. Они предназначены для создателей модулей, по усолчанию не имеют прав
$lang Язык Указывает язык пользователя. Если пользователь не выбирал для себя индивидуальный язык, то значение по умолчанию (см. $portal_lang)
$skin Имя Директории С Темой Указывает на тему выбранную пользователем. Если пользователь не выбирал для себя индивидуальную тему, то значение по умолчанию (см. $portal_skin)
$scan_d yes/none Определяет состояние "сканера тем". При значении "none" загрузка страницы портала пользователем приводит к сканированию директории с шаблоном, значение "yes" означает, что сканирование уже произведено и массив $tema_scan заполнен (о массиве $tema_scan см. ниже)
$user_id Число Идентификатор пользователя по таблице БД dasvasas_user. Используется для привязки данных к пользователю.
$user_fio Ник Содержит Ник (Имя) пользователя
$user_mail E-Mail Содержит E-Mail пользователя
$user_url URL Сайта URL Сайта пользователя, если есть
$tema_scan Массив имен файлов При запуске "Сканера тем" заполняется массивом имен файлов шаблона, в дальнейшем используется для подключения необходимых файлов шаблонов
$user_chmod Права для модераторов Модератор имеет право на каждый отдельный модерируемый модуль
$useripadress IP адресс пользователя Используется для зашиты портала
Переменные сессий лучше вызывать и записывать через масив $_SESSION, вид будет например: $_SESSION[′user_mail′]
Переменные Автоопределения
Переменная Допустимые Значения Описание
$portal_root ПОЛНЫЙ СЕРВЕРНЫЙ ПУТЬ Определяет полный серверный путь к директории, куда установлен портал.
$portal_subdir СУБДИРЕКТОРИЯ В случае, если портал установлен не в корень сайта, а в директорию (например: http://my.ru/portal/index.php), то эта переменная содержит промежуточную между http://my.ru и index.php директорию (субдиректорию) - /portal
$korrekt_time Значение time() с учетом $portal_time Содержит значение функции time() с учетом расхождения портала по времени с сервером (см. $portal_time).
$module_name ИМЯ МОДУЛЯ Название используемого модуля на язые пользователя.
Например: если $lang="russian", то модель доступный по ссылке /?nma=guestbook будет называться "Гостевая Книга";
если $lang="english", то модуль будет называться "Guest Book".
В любом случае имена модулей легко меняются через модуль "Навигация"
$portal_alter Опредиление браузера не IE Если не IE то значение 1 и используется альтернативный дизайн (скин)
$my_http С какого сайта сделан запрос Если из текущего сайта то значение 1, если любого другого 0.
Защита от залива портала спамом


Вы можете сами создавать системные переменные (см. Создание Своей Системной Переменной).

3. Пути и Ссылки

Передачи данных метод ГЕТ Ваши ссылки должны выглядеть следующим образом:

$portal_subdir/index.php?nma=ВАШ_МОДУЛЬ&fla=ФАИЛ

Хочу отметить, что $portal_subdir определяется автоматически и содержит директорию между каталогом www и index.php (корень портала), если портал установлен в корень сайта, то она пустая, если же портал установлен в http://my_domain.ru/portal/, то она будет содержать /portal.

Так же и в формах:

<form action=”$portal_subdir/index.php?nma=ВАШ_МОДУЛЬ&fla=ФАИЛ” method=”POST”>
Ваша Форма.
</form>


Остальные данные можно предавать методом ПОСТ
Наш движок использует расширение .php!!!

4. Защита Модуля от несанкционированного доступа

Все портальные системы защищаются от вызова файла модуля без выполнения обязательных действий (подключение к БД). В первую очередь, мы закрыли доступ к файлам модулей от обращения браузером, используя файл конфигурации Apache ;.htaccess. Ну а если портал будет использоваться на сервере, не позволяющем использование .htaccess, то на защиту встанет PHP код:

<?
if(!defined( ′L_MOD′ )){
echo
"<meta http-equiv=′refresh′ content=′0; url=/index.php′>";
exit;
}

?>


В административных частям модулей используется похожий код:

<?
if(!defined( ′L_ADMOD′ )){
echo
"<meta http-equiv=′refresh′ content=′0; url=/index.php′>";
exit;
//Здесь может быть код PHP
}
?>


Эти коды нужно вписать в начало скриптов.

5. Многоязычный Модуль

Мы отступили от общепринятого правила хранить языковые переменные в файлах, мы их полностью перенесли в БД, что позволило создать Web-управление многоязычностью. Вы можете создавать, редактировать или удалять компоненты прямо в Админ-Меню.

После индексации Вашего модуля в БД Навигации (см. статью «Регистрация Своего Модуля В БД или о модуле "Навигация"») во всех существующих на портале языках появится и Ваш модуль, что позволит Вам добавлять компоненты Вашего модуля.

В самом модуле не нужно производить подключение языковой БД, она производится автоматически.

6. Создадим Экземпляр Модуля На Главной Странице

Вы можете написать малый экземпляр Вашего модуля (последняя запись в гостевой, новый топ в форуме и т.п.) на главной странице портала…

Для этого Вы должны создать необходимый скрипт и положить его в директорию mod/blocks, желательно дать ему название (именно файлу) такое же, какое и название модуля (mod/faqmod/blocks/faq.php).

После этого Вы должны зайти на страницу Администратора: «Модули На Главной» -> «Добавить». Вы увидите, что движок нашел Ваш файл и предлагает его установить, нажмите просто «Установить модуль».

Вы можете создать в нем и описание. Для этого в первой строке файла mod/blocks/ВАШ_МОДУЛЬ.php впишите строку:

<!--description= Последниезаписивгостевую&modul=guestbook&Author=WCPS WebCode-Command&Copyright=WCPS//-->

Где description – описание модуля; modul – модуль; Author – Автор; Copyright – Копирайт.

7. Создание Своей Системной Переменной

Как говорилось выше, Вы можете создавать свои системные переменные. Для этого используйте модуль «Опции», а точнее «Опции» -> «Добавить параметр».

Вы должны указать Название переменной (например, portal_mysystem), Значение переменной и модуль, в котором она будет использоваться, если Вы укажите 1 - _DLA_VSEX, то она будет использоваться во всем портале. В дальнейшем её можно вызвать: $portal_mysystem в указанном при её создании модуле…

8. Управление Правами Доступа К Модулю

Вы можете сделать свой модуль доступным только для авторизованных пользователей двумя способами:

а) при помощи проверки в самом модуле.

<?
if (empty($_SESSION[′auth′])){
print
_NOREG_ ; // Выведет текст « Вы должны авторизоваться!!! Если Вы ещё не зарегистрированы, Зарегистрируйтесь!!!<meta http-equiv="refresh"; content="3; url=/">»
}
else{
… Ваш Модуль…
}
?>


б) изменив настройку «Доступ в User модулях» в модуле «Навигация» соответствующего модуля.
В этом случае при подключении модуля движок сам выведет необходимое уведомление и запретит доступ до активизации пользователя.

9. Как создать отдельную страницу на портале.
Например: создать свою страничку "Автобиография".

Создаете папку типа avtb, ecтественно в папке mod.

Саму страничку вы можете создать в любом HTML редакторе, с текстами и картинками. После чего вы ее записываете под именем index.php в папку avtb,
предварительно удалив все от начала по <body>(включительно) и в конце </body></html> (так же включительно).

Дальше заходите в админ->навигация->создать новый,
делаете доступ для всех в юзере - "Для всех" (mforreg = 1),
в админе - "Не выводить"(muroven) у нас пока администрирования нет.
User модуль: murl ставите наш модуль avtb
и даете название в "Вывод названия по языкам:" Автобиография.

Нажав сохранить Вы получаете новую кнопку (в юзере ).
Линк будет иметь путь ./index.php?nma=avtb &fla=index не обязателен, он генерится автоматически.
Нажав на линк Вы получите записанную страничку index.php из папки avtb

10. Что должно быть в файлах PHP, или кратко как научится програмировать?

Например: файл "./mod/about/my_about.php"
Ответ: Самый обыкновенный HTML код, но без шапки по <body> включая и до </body></html>.
Это может быть и обыкновенный текст заключенный в таги <pre></pre>
В ведем туда программирование.
Задача - на локал хосте не выводить.
Все что выделенно такими тегами <? ?> относится к ПХП остальное к HTML.
Код:

<?
if ( getenv("REMOTE_ADDR") != ′127.0.0.1′ ) {
?>
Здесь вписываете Текст
<?
}
?>


Да и учтите, что на локалке у Вас ничего выводится не будет.
Если нужно наоборот, замените !(восклицательный знак) на =(равно)

Нужно учесть что путь к страничке ./index.php?nma=about&fla=my_about
по этому еще поставим линк на главную страницу about
<center><ahref="index.php?nma= about">Начало about</a></center>


Приобретение не дорогого качественного ноутбук.

Понравилась статья? Поделись с друзьями!
Facebook Опубликовать в LiveJournal Tweet This


Оглавление   |  ?? ????

Оглавление        Вернуться к Статье

Скачай CMS сейчас!
Текущая версия системы управления сайтом WebCodePortalSystem:
v.7.1.00
Скачать CMS v.7.1.00
Обновление с версии 6.2.01

Сайт разработчика:
Новые бета версии

На Сайте
Гостей: 9
Пользователей: 0


10 новых статей
Наши Партнеры


Copyright WebCode-Command © 2003-2012
Работает под управлением WebCodePortalSystem v. 6.2.01
Rambler's Top100