Главная | Новости | Полезная информация | Документация | Школа | Файлы | Ссылки | Форум
 Текущая сборка
RusNuke Current
Web-SVN
SVN репозиторий
Bug Tracker

 Навигация
Главная
Новости
Обзоры
Информация
Документация
Вопросы и ответы
Каталог файлов
Каталог ссылок
Информация о проекте
Рассылка новостей
Контакт с автором
Наполнение сайта
Добавить статью
Добавить файл
Добавить ссылку

Наши услуги
Обменный пункт WM
Реклама на проекте
Платные услуги
Услуги хостинга

Отраслевые публикации
Статьи по отраслям

 Поиск по сайту


Google
Web nukefiles.ru


Полезная информация
На главную >>> Делаем сами (Школа)
Создание собственного модуля (часть3)

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

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

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

  • Административная часть
    •  admin/modules/aboutfirm.php
    • admin/links/links.aboutfirm.php
    • admin/case/case.aboutfirm.php
  • Графическая часть (иконка в панели админа)
    •  images/admin/aboutfirm.gif
  • Файл для SQL запроса к базе данных
    •  abourfirm.sql

Первое о чем необходимо подумать, это о структуре нашей таблицы базы данных. Так как при работе с ней у нас не будет каких-либо сложных манипуляций, то вне необходимые поля мы сможем вложить в одну таблицу. Вот перечень значений для которых мы создадим поля:

  • Название фирмы
  • Дата основания
  • Номер лицензии
  • Юридический адрес
  • Основная информация
  • Сфера деятельности
  • e-mail на который будут приходить сообщения с формы быстрой связи
  • Информация для связи
  • Телефон офиса
  • Мобильный телефон
  • Факс

Думаю, что для нашего модуля этого будет достаточно. Вот листинг для создания необходимого SQL запроса который создаст в базе данных таблицу с необходимыми полями и начальными данными.

 CREATE TABLE nuke_aboutfirm (
firmname varchar(255) NOT NULL,
startdate varchar(50) NOT NULL,
licenznumber varchar(50) NOT NULL,
juradres varchar(255) NOT NULL,
infotext text NOT NULL,
worktext text NOT NULL,
kontaktmail varchar(255) NOT NULL,
kontakttext text NOT NULL,
ofistel varchar(50) NOT NULL,
mobtel varchar(50) NOT NULL,
fax varchar(50) NOT NULL
);

INSERT INTO nuke_aboutfirm VALUES ( 'Название фирмы', 'Дата основания', 'Номер лицензии', 
'Юридический адрес фирмы', 'Основная информация о Вашей фирме', 'Информация о сфере 
деятельности Вашей фирмы', 'e-mail для контактов', 'Введите общую информацию о контакте с 
Вашими представителями', 'Телефон офиса', 'Мобильный телефон', 'Номер факса');

Далее создаем основной файл администрации aboutfirm.php, вот его код:

<?php

if (!eregi("admin.php", $_SERVER['PHP_SELF'])) { die ("Access Denied"); }
global $prefix, $db;
$aid = substr("$aid", 0,25);
$row = $db->sql_fetchrow($db->sql_query("SELECT radminsuper FROM " . $prefix . "_authors WHERE aid='$aid'"));
if ($row['radminsuper'] == 1) {
$module_name = "About_Firm";
get_lang($module_name);

function AFconfig() { 
global $prefix, $db;
include ("header.php");
GraphicAdmin();

$sql = "SELECT * FROM ".$prefix."_aboutfirm";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);

$firmname = $row[firmname];
$startdate = $row[startdate];
$licenznumber = $row[licenznumber];
$juradres = $row[juradres];
$infotext  = $row[infotext];
$worktext = $row[worktext];
$kontaktmail = $row[kontaktmail];
$kontakttext = $row[kontakttext];
$ofistel = $row[ofistel];
$mobtel = $row[mobtel];
$fax = $row[fax];

OpenTable();
echo "<center><font class='title'><b>"._AFCONFIG."</b></font></center>";
CloseTable();
echo "<br>";
OpenTable();
echo "<form action='admin.php' method='post'>"
."<table border='0'><tr><td>"
.""._AFFIRMNAME.":</td><td><input type='text' name='xfirmname' value='$firmname' size='40' maxlength='255'>"
."</td></tr><tr><td>"
.""._AFSTARTDATE.":</td><td><input type='text' name='xstartdate' value='$startdate' size='40' maxlength='255'>"
."</td></tr><tr><td>"
.""._AFLICENZNUMBER.":</td><td><input type='text' name='xlicenznumber' value='$licenznumber' size='40' maxlength='255'>"
."</td></tr><tr><td>"
.""._AFJURADRES.":</td><td><textarea name='xjuradres' cols='40' rows='2'>".stripslashes($juradres)."</textarea>"
."</td></tr><tr><td>"
.""._AFINFOTEXT.":</td><td><textarea name='xinfotext' cols='40' rows='10'>".stripslashes($infotext)."</textarea>"
."</td></tr><tr><td>"
.""._AFWORKTEXT.":</td><td><textarea name='xworktext' cols='40' rows='10'>".stripslashes($worktext)."</textarea>"
."</td></tr><tr><td>"
.""._AFKONTMAIL.":</td><td><input type='text' name='xkontaktmail' value='$kontaktmail' size='40' maxlength='255'>"
."</td></tr><tr><td>"
.""._AFKONTAKTTEXT.":</td><td><textarea name='xkontakttext' cols='40' rows='10'>".stripslashes($kontakttext)."</textarea>"
."</td></tr><tr><td>"
.""._AFOFTEL.":</td><td><input type='text' name='xofistel' value='$ofistel' size='40' maxlength='255'>"
."</td></tr><tr><td>"
.""._AFMOBTEL.":</td><td><input type='text' name='xmobtel' value='$mobtel' size='40' maxlength='255'>"
."</td></tr><tr><td>"
.""._AFFFAX.":</td><td><input type='text' name='xfax' value='$fax' size='40' maxlength='255'>"
."</td></tr></table><br><br>";
echo "<input type='hidden' name='op' value='AFconfigsave'>"
."<center><input type='submit' value='"._SAVECHANGES."'></center>"
."</form>";
CloseTable();
include ("footer.php");
}

function AFconfigsave ($xfirmname, $xstartdate, $xlicenznumber, $xjuradres, $xinfotext, $xworktext, $xkontaktmail, $xkontakttext, $xofistel, $xmobtel, $xfax) {
global $prefix, $db;

$db->sql_query("UPDATE ".$prefix."_aboutfirm SET firmname='$xfirmname', startdate='$xstartdate', licenznumber='$xlicenznumber', juradres='$xjuradres', infotext='$xinfotext', worktext='$xworktext', kontaktmail='$xkontaktmail', kontakttext='$xkontakttext', ofistel='$xofistel', mobtel='$xmobtel', fax='$xfax'");

Header("Location: admin.php?op=AFconfig");
}

switch($op) {

case "AFconfig":
AFconfig();
break;

case "AFconfigsave":
AFconfigsave ($xfirmname, $xstartdate, $xlicenznumber, $xjuradres, $xinfotext, $xworktext, $xkontaktmail, $xkontakttext, $xofistel, $xmobtel, $xfax);
break;

}

} else {
echo "Access Denied";
}

?>

Как видите файл состоит всего из двух функций, - редактирования данных и их сохранения в базе данных. Обратите внимание на вводную часть данного файла - проверку на доступ, не забывайте про нее!!!

Следующим файлом который мы создадим будет  case.aboutfirm.php

<?php

if (!eregi("admin.php", $_SERVER['PHP_SELF'])) { die ("Access Denied"); }

switch($op) {

case "AFconfig":
case "AFconfigsave":
include("admin/modules/aboutfirm.php");
break;

}

?>

Снова запрет на прямой доступ к файлу. А далее Вы должны перечислить все имеющиеся функции которые существуют в основном административном файле вашего модуля. В нашем случае, как уже упоминалось их всего две: редактирования - AFconfig и сохранения - AFconfigsave, и указать путь к Вашему административному файлу.

Теперь переходим к последнему файлу из раздела администрирования links.aboutfirm.php

<?php

if ($radminsuper==1) {
adminmenu("admin.php?op=AFconfig", "О фирме", "firm.gif");
}

?>

Я думаю понятно, что в нем мы прописываем имя иконки данного модуля, название модуля и адрес функции которая будет вызвана по умолчанию.

Для административного раздела нам осталось создать графический файл (иконку) для нашего модуля и подгрузить его в папку images/admin в нашем случае назовем этот файл firm.php

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

<?

if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
die ("You can't access this file directly...");
}

$module_name = basename(dirname(__FILE__));
get_lang($module_name);

$pagetitle = "- О фирме";
include("header.php");

title ("Информация о фирме");
echo "<br>";

OpenTable();

echo "<br>";
OpenTable();
echo "<br><center><b>[ <a href=\"modules.php?name=$module_name\">"._AFINFOTEXT."</a> | <a 
href=\"modules.php?name=$module_name&go=contact\">"._AFKONTAKTTEXT."</a> ]</b></center><br>";
CloseTable();
echo "<br>";

switch($go) {

default:
main();
break;

case "contact":
contact();
break;

}

function main() {
global $prefix, $db;

$sql = "SELECT firmname, startdate, licenznumber, juradres, infotext, worktext FROM ".$prefix."_aboutfirm";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);

$firmname = $row[firmname];
$startdate = $row[startdate];
$licenznumber  = $row[licenznumber];
$juradres = $row[juradres];
$infotext = $row[infotext];
$worktext = $row[worktext];

echo "<br>";
OpenTable();

echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td 
width=\"100%\">\n"
."<p align=\"center\"><font class=title>$firmname</font><br>"._AFSTARTDATE.": 
<b>$startdate</b>\n"
."<br>"._AFLICENZNUMBER.":<b>$licenznumber</b>\n"
."<br>"._AFJURADRES.": <b>$juradres</b></td></tr>\n"
."<tr><td width=\"100%\"><hr size=\"1\"></td></tr><tr>\n"
."<td width=\"100%\"><b>"._AFINFOTEXT."</b></td></tr>\n"
."<tr><td width=\"100%\">$infotext</td></tr><tr><td width=\"100%\">&nbsp;</td></tr>\n"
."<tr><td width=\"100%\"><b>"._AFWORKTEXT."</b></td></tr>\n"
."<tr><td width=\"100%\">$worktext</td></tr></table>";

CloseTable();
echo "<br>";
}

function contact() {
global $prefix, $db;

$sql = "SELECT kontaktmail, kontakttext, ofistel, mobtel, fax FROM ".$prefix."_aboutfirm";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);

$kontaktmail = $row[kontaktmail];
$kontakttext = $row[kontakttext];
$ofistel = $row[ofistel];
$mobtel = $row[mobtel];
$fax = $row[fax];

echo "<br>";
OpenTable();

echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n"
."<tr><td width=\"100%\"><p align=\"center\"><font 
class=title>"._AFKONTAKTTEXT."</font></td></tr>\n"
."<tr><td width=\"100%\"><hr size=\"1\"></td></tr><tr>\n"
."<td width=\"100%\">$kontakttext<br><br></td></tr>\n"
."<tr><td width=\"100%\"><center>\n"
."<table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"80%\"><tr>\n"
."<td><img border=\"0\" src=\"modules/About_Firm/images/email.gif\" alt=\""._AFKONTMAIL."\" 
width=\"16\" height=\"16\"></td>\n"
."<td width=\"100%\">&nbsp;<a 
href=\"mailto:$kontaktmail\"><b>$kontaktmail</b></a></td></tr><tr>\n"
."<td><img border=\"0\" src=\"modules/About_Firm/images/telefon.gif\" alt=\""._AFOFTEL."\" 
width=\"16\" height=\"16\"></td>\n"
."<td width=\"100%\">&nbsp;<b>$ofistel</b></td></tr><tr>\n"
."<td><img border=\"0\" src=\"modules/About_Firm/images/mobtel.gif\" alt=\""._AFMOBTEL."\" 
width=\"16\" height=\"14\"></td>\n"
."<td width=\"100%\">&nbsp;<b>$mobtel</b></td></tr><tr>\n"
."<td><img border=\"0\" src=\"modules/About_Firm/images/fax.gif\" alt=\""._AFFFAX."\" 
width=\"16\" height=\"16\"></td>\n"
."<td width=\"100%\">&nbsp;<b>$fax</b></td></tr></table></center>\n"
."</td></tr><tr><td width=\"100%\">&nbsp;</td></tr>\n"
."<tr><td width=\"100%\"></td></tr>\n"
."<tr><td width=\"100%\"></td></tr></table>";

CloseTable();
echo "<br>";
}

CloseTable();
include("footer.php");

?>

Код языкового файла lang-russian.php

<?

define("_AFCONFIG","Редактирование информации о фирме");
define("_AFFIRMNAME","Название фирмы");
define("_AFSTARTDATE","Дата основания");
define("_AFLICENZNUMBER","Номер лицензии");
define("_AFJURADRES","Юридический адрес");
define("_AFINFOTEXT","Общая информация");
define("_AFWORKTEXT","Сфера деятельности");
define("_AFKONTMAIL","Контактный e-mail");
define("_AFKONTAKTTEXT","Контактная информация");
define("_AFOFTEL","Телефон офиса");
define("_AFMOBTEL","Мобильный телефон");
define("_AFFFAX","Факс");

?>

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

Ну вот в принципе и все. Нельзя сказать что мы создали сложный модуль, но для усвоения информации а так-же для первого опыта в написании собственного модуля вполне подойдет. Скачать даный модуль в его окончательной версии можно здесь.

Если пройдя данный урок Вы все поняли и усвоили, то смело можете приступать к написанию более сложного модуля. Структуру модуля для PHP-Nuke я Вам показал, остальное зависит от степени Вашего знания языка программирования PHP.

PHP-Nuke по-русски
Сергей

Дата публикации: 2004-06-21
Материал прочитан: 30955 раз(а)


 Другие материалы категории Другие категории раздела
Создание блоков в PHP-Nuke
Устройство тем оформления
Создание собственной темы оформления
Усовершенствование темы
Создание собственного модуля (часть1)
Советы по оптимизации PHP-Nuke
Модернизация модулей
Модернизация блоков
Защита системы
Дизайн в системе PHP-Nuke

пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅпїЅпїЅпїЅ

 Авторизация
Логин
Пароль
Регистрация на сайте
Забыли свой пароль?

 Сейчас на сайте
Гостей: 10
Пользователей: 3
Всего: 13

Пользователи:
01: AwertySreq
02: ManuelSaido
03: BuroMunc

 Наш опрос
Какой форум предпочитаете?

Invision Power Board
vBulletin
Phorum
MyBB
PunBB
Simple Machines Forum
phpBB
BBtoNuke



Результаты
Другие опросы

Ответов: 1339
Комментариев: 10

 Рассылка новостей
Подробнее...

 Реклама


Главная | Новости | Полезная информация | Документация | Школа | Файлы | Ссылки | Форум
Copyright © 2002 Internet studio. All Rights Reserved.
Web site engine's code is Copyright © 2002 by PHP-Nuke.
PHP-Nuke is a free test software released under the GNU/GPL.
Страница сгенерирована за 0.0299 с. Выполнено 15 запроса к базе данных за 0.0036 с.

Rambler's Top100 Рейтинг@Mail.ru liveinternet.ru: показано число просмотров и посетителей за 24 часа