RSS

Компьютерная терминология    1_9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  .....  A  Б  В  Г  Д  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч

PHP-Nuke

   



Консультация юриста
Ваш регион:
Ваше имя:

Ваш телефон

(можно сотовый)

Ваш вопрос (можно кратко)


 
Q.В обычном режиме картинки в новостях не показывает, в режиме администрирование картинки видно.
A. Решение проблемы найдено. Было в форуме ранее.
Необходимо:

1. Откройте mainfile.php

найдите и закоментируйте ВСЕ строки


$what = check_html($what, $strip);

2. Откройте config.php найдите описание переменной $AllowableHTML закоментируйте старое

/*
$AllowableHTML = array('pre' => array('align' => 1),
'strong' => array(),
'hr' => array(),
'div' => array('align' => 1),
'img' => array('alt' => 1, 'src' => 1, 'hspace' => 1, 'vspace' => 1, 'border' => 1, 'align' => 1),
'table' => array('align' => 1, 'border' => 1, 'cell' => 1),
'tr' => array('align' => 1),
'td' => array(),
'ul' => array(),
'li' => array(),
'ol' => array(),
'a' => array('href' => 1, 'target' => 1),
'title' => array('minlen' => 4, 'maxlen' => 200),
'font' => array('face' => 1, 'style' => 1, 'color' => 1),
'class' => array('style' => 1, 'color' => 1),
'size' => array('minval' => 1, 'maxval' => 7),
'p' => array('align' => 1),
'b' => array(),
'i' => array(),
'u' => array(),
'em' => array(),
'h1' => array('align' => 1),
'h2' => array('align' => 1),
'h3' => array('align' => 1),
'h4' => array('align' => 1),
'h5' => array('align' => 1),
'h6' => array('align' => 1),
'center' => array('align' => 1),
'left' => array('align' => 1),
'right' => array('align' => 1),
'justify' => array('align' => 1),
'style' => 2,
'blockquote' => array('dir' => 1, 'style' => 1),
'tt' => array('align' => 1),
'alt' => array(),
'br' => array());
*/

вставте новое

$AllowableHTML = array('pre' => array('align' => 1),
'strong' => array(),
'hr' => array(),
'div' => array('align' => 1),
'img' => array('alt' => 1, 'src' => 1, 'hspace' => 1, 'vspace' => 1, 'border' => 1, 'align' => 1),
'table' => array('align' => 1, 'border' => 1, 'cell' => 1),
'tr' => array('align' => 1),
'td' => array(),
'ul' => array(),
'li' => array(),
'ol' => array(),
'a' => array('href' => 1, 'target' => 1),
'title' => array('minlen' => 4, 'maxlen' => 200),
'font' => array('face' => 1, 'style' => 1, 'color' => 1),
'class' => array('style' => 1, 'color' => 1),
'size' => array('minval' => 1, 'maxval' => 7),
'p' => array('align' => 1),
'b' => array(),
'i' => array(),
'u' => array(),
'em' => array(),
'h1' => array('align' => 1),
'h2' => array('align' => 1),
'h3' => array('align' => 1),
'h4' => array('align' => 1),
'h5' => array('align' => 1),
'h6' => array('align' => 1),
'center' => array('align' => 1),
'left' => array('align' => 1),
'right' => array('align' => 1),
'justify' => array('align' => 1),
'style' => 2,
'blockquote' => array('dir' => 1, 'style' => 1),
'tt' => array('align' => 1),
'alt' => array(),
'br' => array());

скорее всего на этом Ваша проблема решена.
OPEN mainfile.php, FIND
function filter

and comment (add # BEFORE) the second and third instance of
Code:
      $what = check_html($what, $strip);

Then OPEN config.php
FIND $AllowableHTML etc, down to =>1);
and replace it with

Code:
$AllowableHTML = array('pre' => array('align' => 1),
        'strong' => array(),
        'hr' => array(),
        'div' => array('align' => 1),
        'img' => array('alt' => 1, 'src' => 1, 'hspace' => 1, 'vspace' => 1, 'border' => 1, 'align' => 1),
        'table' => array('align' => 1, 'border' => 1, 'cell' => 1),
        'tr' => array('align' => 1),
        'td' => array(),
        'ul' => array(),
        'li' => array(),
        'ol' => array(),
        'a' => array('href' => 1, 'target' => 1),
        'title' => array('minlen' => 4, 'maxlen' => 200),
        'font' => array('face' => 1, 'style' => 1, 'color' => 1),
        'class' => array('style' => 1, 'color' => 1),
        'size' => array('minval' => 1, 'maxval' => 7),
        'p' => array('align' => 1),
        'b' => array(),
        'i' => array(),
        'u' => array(),
        'em' => array(),
   'h1' => array('align' => 1),
   'h2' => array('align' => 1),
   'h3' => array('align' => 1),
   'h4' => array('align' => 1),
   'h5' => array('align' => 1),
   'h6' => array('align' => 1),
   'center' => array('align' => 1),
   'left' => array('align' => 1),
   'right' => array('align' => 1),
   'justify' => array('align' => 1),
        'style' => 2,
        'blockquote' => array('dir' => 1, 'style' => 1),
        'tt' => array('align' => 1),
      'alt' => array(),
        'br' => array());

Создание блоков в PHP-Nuke
 2004-06-21

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

Управление блоками
Заходим в панель администратора - выбираем раздел блоки. Вашему вниманию предстает таблица с перечнем различных блоков.таблицаВ колонке "Заголовок" указано название блока (под этим названием он представляется на страницах сайта).
В колонках "Позиция" и "Положение" указано в каком месте страницы выводится блок.
В колонке "Тип" указан тип блока, они бывают трех видов: в виде файла, в виде HTML и в виде  RSS/RDF.
В колонке "Статус" указано включен или нет данный блок, т.е. выводится ли он в данный момент на страницах вашего сайта.
В колонке "Кто видит" указано для какой категории пользователей этот блок виден, в значении может быть указанно: только админы, пользователи или все посетители.
Если в свойствах сайта включена многоязыковая поддержка, то следующая колонка это "Язык", в которой указано - аудитория с каким языком будет видеть данный блок. (Если многоязыковая опция выключена, то данная колонка не отображается.
Ну и при помощи последней колонки, Вы можете менять свойства блока, т.е. менять значения в перечисленных колонках, удалять блоки, просто отключать или включать их или просматривать.
Давайте нажмем на ссылку редактировать в последней колонке напротив какого-либо блока в типе которого указано "Файл".
блокПри помощи появившейся формы мы можем менять свойства данного блока. К примеру для того чтобы сменить название под которым данный блок показывается на ваших страницах, просто впишите необходимое название в поле "Заголовок" и нажмите на кнопку "Сохранить файл". Как видно на рисунке, вы можете изменить положение блока на странице (смена вертикального положения осуществляется прямо на расмотреной выше таблице, для чего нужно просто нажимать на соответствующую стрелку в колонке "Положение" перемещая таким образом блок в более высокое или в более низкое положение), указать языковую группу для которой данный блок будет виден, включить или выключить данный блок, а так же указать для какой группы посетителей данный блок будет доступен.
Создание блока из административной панели.
Заходим в панель администратора - выбираем раздел блоки. Вашему вниманию предстает таблица с перечнем различных блоков ниже которой имеется форма для создания нового блока.
Активизация стандартного блока
В состав PHP-Nuke уже входит порядка 25 готовых блоков, все они выполнены в виде файлов, физически расположены в папке blocks, а в данном случае мы их все можем просмотреть в раскрывающемся списке "Имя файла" представленной формы.  Для примера создадим блок с выводом количества просмотренных страниц. Для этого в поле "Заголовок" впишем название будущего блока, к примеру - Всего просмотров, в поле "Имя файла" указываем на файл Total Hits, позицию файла, язык и кто это будет видеть указываете на свое усмотрение, поле "Время обновления" в данном случае не играет никакого значения. Нажимаем на кнопку "Создать блок", после того как страница перезагрузиться в том месте которое вы указали в поле "Позиция" появится только что созданный блок, ну а выглядеть он будет примерно так как на данном рисунке...

Позиция
Создание блока импорта новостей
В PHP-Nuke предоставляется возможность импорта новостей с других сайтов. На российских сайтах  я довольно редко встречал такую функцию, может из за того что о ней мало кто знает, а может просто нет таких сайтов с которых можно было бы импортировать новости Для того что бы импортировать новости главное что бы сайт экспортер поддерживал необходимый нам формат  RSS/RDF. Будем считать что нужный нам сайт поддерживает такой формат... 
Итак в указанной выше форме в качестве названия блока указываем "PHP-Nuke по-русски" в поле "RSS/RDF файл" вписываем следующий URL (как альтернатива, можно просто указать на какой-либо сайт из представленного списка, но к сожалению в нем нет ни одного русскоязычного сайта), ну а дальше как уже говорилось - выставляете желаемые установки, такие как расположение блока, доступ к нему, язык аудитории... В итоге после того как нажмете на кнопку "Создать блок" у Вас появиться блок схожий с представленным на изображении.
Создание нового HTML блока
Ну а теперь перейдем к созданию HTML блока со страницы администратора. Для этого все в той же форме в поле "Заголовок" вводим название будущего блока, в нашем случае пусть это будет "Рекомендуем", ну а в поле "Контент" вводим необходимый нам HTML код, к примеру такой:
В полях "RSS/RDF файл" и "Имя файла" естественно ничего указывать в данном случае не нужно, ну а в остальных полях опять же выставляете необходимые Вам значения, в итоге после нажатии кнопки "Создать блок" на вашей странице появиться блок схожий с представленным на рисунке. Как видите это довольно удобный механизм, для того что бы оперативно помещать на ваш сайт какую-либо информацию в виде простого текста, HTML кода и т.д. Правда в PHP-Nuke начиная с версии 6.5 используя данный метод у Вам скорее всего не получиться  вставить с поле "Контент" JavaScript, для этого мы научимся создавать новые блоки в виде файла...
Создание блока в виде файла
Создание простого блока
Вот обязательная структура файла для создания нового блока:
<?php
if (eregi("block-имя_файла.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}
$content = "Содержание блока";
?>

Во второй строчке необходимо указать имя создаваемого файла, ну а само имя должно быть такого формата:
block-имя_блока.php
Ну а то что должно выводиться в содержании блока должно быть включено в переменную $content. Давайте создадим тестовый блок что бы убедиться что Вы все правильно поняли. Для этого откроем блокнот и впишем в него следующий текст:
<?php
if (eregi("block-Test.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}
$content = "<center><b>Содержание нового блока</b></center>";
?>

Сохраним этот файл в папке blocks под именем block-Test.php 
Теперь переходим на страницу управления блоками в форму для создания нового блока. В качестве названия нового блока вводим "Проверка", открываем список файлов в поле "Имя файла", если Вы все сделали правильно, то в перечне должен появиться блок под названием "Test", выбираем его. В поле "Контент" и "RSS/RDF файл",  как я надеюсь  Вы понимаете, ничего вводить не нужно, в остальных полях выставляете настройки по своему усмотрению, нажимаем на кнопку "Создать блок". В итоге у Вас должен появиться похожий на на этот блок...

Следующим простым блоком будет блок с JavaScript.
Знаю что многие столкнулись с проблемой вставки различных счетчиков в блоки. Действительно начиная с версии 6.5 такая проблема существует. Ну чтож раз есть проблема, то попробуем ее решить.
Создадим блок вставив в него счетчик который состоит из чистого JavaScript.
Делаем все как в прошлом примере, только переменной $content присвоим другое значение, выглядеть код блока будет так:
<?php

if (eregi("block-Test.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}


$content = "<br><center>";
$content .= <<<JS

JS;
$content .="</center><br>";

?>

Т.е. мы вставили код счетчика нисколько не изменив его в содержание переменной $content
$content .= <<<JS
А здесь код счетчика состоящий из чистого JavaScript
JS;

В итоге у нас получился следующий блок:
Я думаю понятно что вместо одного счетчика в такой блок можно вставить столько сколько вам необходимо. Единственное что нужно помнить - это о правописании в PHP. На данном примере Вы видите что JavaScript можно чередовать с обычным HTML кодом. 
 
  Создание сложного блока
Сложный блок - это конечно условное название, сложный он только по сравнению с предыдущими блоками, но нужно понимать что для создания такого блока нужно по крайней мере знать основы программирования на PHP, а так же порядок взаимодействия (порядок запросов) с базой данных.
Итак при написании подобного блока нужно сначала поставить задачу, что же мы хотим от данного блока. Давайте для примера создадим блок в котором будет отображаться информация о пяти новых файлах в каталоге программ.
Используя прошлые примеры создаем файл нашего блока, назовем данный файл block-LastFiles.php
В самом простом виде он будет выглядеть так:
<?php

if (eregi("block-LastFiles.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}

global $prefix, $db; // данные для соединения с базой

$sql = "SELECT title FROM ".$prefix."_downloads_downloads ORDER BY lid DESC limit 0,5";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {

$content .="$row[title]<br>"; // вывод результата на экран
}

?>

Для примера этого достаточно, но для использования на сайте явно не хватает вставки ссылок на страницу с описанием файла, да и приукрасить данный блок не будет лишним. Итак несколько усложним данный код, а так же не забудьте заготовить маленькую иконку, назовите ее d_icons.gif и загрузите ее в папку images. Код будет выглядеть примерно так:
<?php

if (eregi("block-LastFiles.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}

global $prefix, $db;

$strip = "17"; // Устанавливаем максимальное количество символов в названии
$pic = "<img src=\"images/d_icons.gif\" border=\"0\" width=\"10\" height=\"10\">&nbsp;"; // Добавляем иконку
$content = "<table width=\"100%\"><tr>"; // укладываем все в таблицу
$content .="<td valign=\"top\" width=\"100%\">";
$sql = "SELECT lid, title FROM ".$prefix."_downloads_downloads ORDER BY lid  DESC limit 0,5";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
$linkstrip = stripslashes($row[title]);
if(strlen($linkstrip)> $strip) { // Обрубаем слишком длинное название
$linkstrip = substr($linkstrip,0,$strip);
$linkstrip .= "...";
}
$content .="&nbsp;$pic<a 
href=\"modules.php?name=Downloads&amp;d_op=viewdownloaddetails&amp;lid=$row[lid]\">
$linkstrip</a><br>";
}
$content .="</td></tr></table>";

?>

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


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

Общие сведения.


Для создания собственного модуля совсем не обязательно обладать навыками в программировании, для написания модуля вполне может хватить знаний основ языка PHP, его синтаксиса, а так-же базовые знания HTML. На данном уроке я расскажу о том как можно создать простейший модуль для собственных нужд, а так-же о том как можно создать полноценный модуль, который не грех будет предоставить другим Нюкерам. Мы при изучении данного раздела будем создавать модуль "О фирме".
Обязательная структура модуля
В простейшем виде модуль состоит из папки c желаемым названием и расположенным в ней файлом index.php. Ну а полноценный модуль, как правило имеет структуру показанную на данном рисунке.
Создайте данную структуру и вложите ее в папку modules Вашей Нюки. В файл index.php вставьте следующий код:

<?

#Ставим запрет на прямой доступ к файлу
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
die ("You can't access this file directly...");
}

#Вставляем верхнюю часть сайта и открываем таблицу
include("header.php");
OpenTable();

#Наполняем модуль содержанием
echo "Содержание нашего модуля";

#Закрываем таблицу и вставляем нижнюю часть сайта
CloseTable();
include("footer.php");

?>

Вот в принципе и все - простейший модуль готов. Можете зайти на свой сайт и в списке неактивных модулей появится только что созданный модуль "About Firm", нажмите на его ссылку и посмотрите что у Вас получилось.
Итак с обязательной структурой модуля мы познакомились и следующим нашим шагом будет создание простого модуля включающего в себя несколько функций (разделов).

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

Итак, наш модуль о фирме будет состоять из двух разделов:

  • Основная информация
  • Контактная информация

Оба этих раздела будут помещены в файл index.php а доступ к ним будем осуществлять при помощи оператора.
Вот полный код файла index.php

<?

#Ставим запрет на прямой доступ к файлу
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
die ("You can't access this file directly...");
}
#Определяем переменную, для использования во внутренних ссылках
$module_name = basename(dirname(__FILE__));
#Определяем параметр TITLE
$pagetitle = "- О фирме";

#Вставляем верхнюю часть
include("header.php");
#Создаем заголовок раздела
title ("Информация о фирме");
echo "<br>";
#Открываем таблицу которая будет служить общим фоном
OpenTable();
#Создаем внутреннюю навигацию
echo "<br>";
OpenTable();
echo "<br><center><b>[ <a href=\"modules.php?name=$module_name\">Общая информация</a> | <a 
href=\"modules.php?name=$module_name&go=contact\">Контактная информация</a> 
]</b></center><br>";
CloseTable();
echo "<br>";

#При помощи оператора switch разделяем содержание файла на несколько блоков
switch($go) {

default:
main();
break;

case "contact":
contact();
break;

}

#Содержание начального раздела
function main() {

echo "<br>";
OpenTable();
echo "Содержание раздела с общей информацией о фирме";
CloseTable();
echo "<br>";

}

#Содержание блока с контактной информацией
function contact() {

echo "<br>";
OpenTable();
echo "Содержание раздела с контактной информацией";
CloseTable();
echo "<br>";

}

#Закрываем таблицу с общим фоном
CloseTable();
#Вставляем нижнюю часть сайта
include("footer.php");

?>

Я думаю, что нет нужды пояснять что содержание каждого раздела Вы можете снабжать различным HTML кодом, главное при этом не забывать о синтаксисе PHP.
Созданный нами модуль хорош в том случае когда Вы сами являетесь и автором и администратором сайта. Но давайте представим что администрировать сайт будет другой человек, далекий от таких понятий как HTML код, FTP и т.д. А значит нам нужно снабдить наш модуль готовым HTML оформлением и удобной панелью администратора, чтобы к примеру при смене контактного телефона, администратор без проблем мог его поменять и на страницах сайта . Ну и в довесок к этому снабдим модуль подключаемыми языковыми файлами.

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

Я думаю, понятно что для поставленной нами задачи нам нужно будет снабдить модуль панелью администратора и так как информация у нас должна иметь возможность легко меняться то и хранить ее мы будем не в самом файле 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","Факс");

?>

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

Устройство тем оформления
2004-06-21

Структура темы и ее обязательные элементы
Все файлы темы размещаются в папке - название этой папки определяется названием темы. К примеру, мы решили создать новую тему с названием Delfi, в этом случае структура файлов нашей темы будет следующей:

 
Итак для начала разберем на составные части основной файл темы theme.php:
<?php

$bgcolor1 = "#ffffff";
$bgcolor2 = "#EEEEEE";

$textcolor1 = "#000000";
$textcolor2 = "#000000";


/************************************************************/
/* Function OpenTable() */
/************************************************************/

function OpenTable() {
global $bgcolor1, $bgcolor2;
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"$bgcolor2\"><tr><td>\n";
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"10\" bgcolor=\"$bgcolor1\"><tr><td>\n";
}

function CloseTable() {
echo "</td></tr></table></td></tr></table>\n";
}

function OpenTable2() {
global $bgcolor1, $bgcolor2;
echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"$bgcolor2\"><tr><td>\n";
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"10\" bgcolor=\"$bgcolor1\"><tr><td>\n";
}

function CloseTable2() {
echo "</td></tr></table></td></tr></table>\n";
}



/************************************************************/
/* Function themeheader() */
/************************************************************/

function themeheader() {
global $banners;

echo "<body>\n"
."<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n"
."<tr><td width=\"100%\"></td></tr></table>\n"
."<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n"
."<tr><td width=\"30%\"><img src=\"themes/Delfi/images/logo.gif\" width=\"200\" height=\"50\" border=\"0\"></td>\n"
."<td width=\"70%\">";
if ($banners) {
include("banners.php");
}
echo "</td></tr></table><br>";

$public_msg = public_message();
echo "<center>$public_msg</center>";

echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr valign=\"top\">\n"
."<td width=\"160\">";
blocks(left);
echo "<td width \"100%\">";

}


/************************************************************/
/* Function themefooter() */
/************************************************************/

function themefooter() {
global $index;

if ($index == 1) {
echo "</td><td width=\"160\">";
blocks(right);

}
else { echo "<br>"; }

echo "</td></tr></table><br>\n"
."<center>";
footmsg();
echo "</center>";

}

/************************************************************/
/* Function FormatStory() */
/************************************************************/

function FormatStory($thetext, $notes, $aid, $informant) {
global $anonymous;
if ($notes != "") {
$notes = "<br><br><b>"._NOTE."</b> <i>$notes</i>\n";
}
else {
$notes = "";
}

if ("$aid" == "$informant") {
echo "$thetext$notes\n";
}
else {
if($informant != "") {
$boxstuff = "<a href=\"modules.php?name=Your_Account&amp;op=userinfo&amp;username=$informant\">$informant</a> ";
} else {
$boxstuff = "$anonymous ";
}

$boxstuff .= ""._WRITES." <i>\"$thetext\"</i>$notes\n";
echo "$boxstuff\n";
}
}

/************************************************************/
/* Function themeindex() */
/************************************************************/

function themeindex ($aid, $informant, $time, $title, $counter, $topic, $thetext, $notes, $morelink, $topicname, $topicimage, $topictext) {
global $anonymous, $tipath;
echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td width=\"100%\">\n"
."<b>$title</b><br>\n"
."<a href=\"modules.php?name=News&new_topic=$topic\"><img src=\"$tipath$topicimage\" alt=\"$topictext\" border=\"0\" align=\"right\"></a>";
FormatStory($thetext, $notes, $aid, $informant);
echo"<br>$morelink</a><br>\n"
.""._POSTEDBY." ";
formatAidHeader($aid);
echo " "._ON." $time $timezone ($counter "._READS.")<br>\n"
."</td></tr></table><br>\n";
}

/************************************************************/
/* Function themearticle() */
/************************************************************/

function themearticle ($aid, $informant, $datetime, $title, $thetext, $topic, $topicname, $topicimage, $topictext) {
global $admin, $sid, $tipath;
echo "<table border=\"0\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\"><tr><td width=\"100%\">\n"
."<b>$title</b></td></tr>\n"
."<tr><td width=\"100%\><br>\n"
."<a href=\"modules.php?name=News&new_topic=$topic\"><img src=\"$tipath$topicimage\" alt=\"$topictext\" border=\"0\" align=\"right\"></a>";
FormatStory($thetext, $notes="", $aid, $informant);
echo "<br><br>"._POSTEDBY." ";
formatAidHeader($aid);
echo "<br></font>\n"
."</td></tr></table>";

}

/************************************************************/
/* Function themesidebox() */
/************************************************************/

function themesidebox($title, $content) {
echo "<table border=\"0\" align=\"center\" width=\"160\" cellpadding=\"0\" cellspacing=\"0\">\n"
."<tr><td width=\"100%\" height=\"22\">\n"
."&nbsp;&nbsp;<b>$title</b></td></tr>\n"
."<tr><td>$content\n"
."</td></tr></table><br>";
}


?>
 Кстати данный код полностью работоспособен, и Вы можете брать его в качестве основы для создания собственной темы. В нем представлены все необходимые функции и элементы, а дизайн минимизирован настолько - насколько это вообще возможно.
$bgcolor / $textcolor
Данные переменные содержат в себе цвета таблиц и шрифта которые используются на сайте. Их может быть несколько, как в нашем примере, или несколько десятков, это зависит от Вашей фантазии при написании темы. Но следует помнить что во многих модулях данные переменные используются, а посему Вы должны определить хотя бы  следующие $bgcolor1, $bgcolor2, $textcolor1, $textcolor2.

Function OpenTable / Function CloseTable
Данные функции открывают и закрываю таблицы на различных страницах сайта практически во всех модулях, позволяют придать всему сайту единый стиль. 

Function themeheader
Данная функция определяет внешний вид верхней части Вашего сайта. Она содержит в себе код начинающийся от тега <body> и заканчивается перед самым началом вывода центральной части сайта.
Обязательные элементы входящие в данную функцию: 
include("banners.php"); / вывод баннеров
$public_msg = public_message(); $public_msg / включаем в переменную публичные сообщения и с ее помощью выводим их
blocks(left); / выводим левые блоки

Function themefooter
Функция которая определяет внешний вид нижней части Вашего сайта. Свое начало она берет сразу после центральной части сайта и завершается тегом </html>
Обязательные элементы входящие в данную функцию: 
if ($index == 1) / определяем выводить или нет правые блоки
blocks(right); / выводим правые блоки
footmsg(); / выводим копирайты или другую информацию в самый низ сайта

Важно
Обратите внимание на то где заканчивается функция themeheader и где начинается функция themefooter. Как правило неопытные пользователи полагают что за правую и левую колонку данные функции не отвечают. Посмотрите на рисунок (за область выделенную синим цветом отвечает themefooter, за красную область themeheader), и вы убедитесь что это не так . И это значит что в данные колонки вы с легкостью можете вставлять любые свои решения, к примеру код какой-либо баннерной системы, не стандартные элементы дизайна и т.д.

Function FormatStory
Определяет внешний вид элементов статьи выводимой на главной странице модуля News. Т.е. она определяет каким будет стиль вывода примечания к статье, а также стиль статьи которую разместил не автор сайта, а пользователь или гость. 
Обязательные элементы входящие в данную функцию:
$notes / примечания к статье
$aid / определяем кто предоставил статью
$thetext / текст статьи
$informant / имя предоставившего статью
$boxstuff / переменная включающая все вышеуказанные переменные

Function themeindex
Функция которая определяет весь внешний вид статьи (ее вводной части) которая выводится на главной странице модуля News. С ее помощью мы определяем фон для всего блока со статьей, его границы или их отсутствие,  размещение заголовка статьи, иконки, текста, ссылки на ее полную версию и т.д.
Обязательные элементы входящие в данную функцию:
$title / заголовок статьи
FormatStory($thetext, $notes, $aid, $informant); / содержание статьи отформатированное функцией FormatStory
$morelink / переменная включающая в себя различные элементы, такие как ссылка на полную статью, информация о комментариях и т.д.

Function themearticle
Данная функция определяет внешний вид вывода полной версии статьи (после перехода по ссылке Далее...). С ее помощью Вы так же определяете стиль вывода различных элементов статьи: заголовка, даты публикации, иконки и т.д.
Обязательные элементы входящие в данную функцию:
$title / заголовок статьи
FormatStory($thetext, $notes="", $aid, $informant); / содержание статьи отформатированное функцией FormatStory

Function themesidebox
Функция которая отвечает за внешний вид блоков. С ее помощью вы определяете стиль вывода заголовков блоков и их содержания.
Обязательные элементы входящие в данную функцию:
$title / название блока
$content / содержание блока

seo & website usability   inet   os faq   hardware faq   memory   video   cpu   hdd   mainboard faq   printer & scaner   modem   mobiles   hackzone

po gonn © 2005 "JULI'S BEEHIVE"