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

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

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

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

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


Google
Web nukefiles.ru


Полезная информация
На главную >>> Делаем сами (Школа)
Усовершенствование темы

Итак, тема создана, дизайн доведен до наших потребностей, теперь осталось только придать нашей теме больше функциональности, снабдить ее различными эффектами.

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

Для определения посетителя воспользуемся cookie. В функцию  themeheader добавим две глобальных переменных - $user, $cookie. Сразу после строчки с глобальными переменными вставим функцию определения имени пользователя:

cookiedecode($user);
$username = $cookie[1];
if ($username == "") {
$username = "Anonymous";
}

Т.е. если это пользователь, то назовем его его именем (логином), а если гость (нет данных о его имени), то назовем его Anonymous.
Теперь в самую верхнюю таблицу вставим следующий код: 

if ($username == "Anonymous") {
echo "Здравствуйте Гость ! &nbsp;&nbsp;[<a href=\"modules.php?name=Your_Account&op=new_user\">Регистрация</a>]";
}
else {
echo "Здравствуйте $username ! &nbsp;&nbsp;[<a href=\"modules.php?name=Your_Account&op=logout\">Выход</a>]";
}

На основе данного примера, Вы можете изменить приветствие по своему усмотрению, к примеру если пользователь не определен, то вместо ссылки на регистрацию вывести форму для авторизации и т.д.

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

Теперь давайте вставим по аналогии с сайтом http://rus.delfi.lv сегодняшнее число и день недели. Для этого мы используем простой JavaScript,

<SCRIPT LANGUAGE="JavaScript">

// Get today's current date.
var now = new Date();

// Array list of days.
var days = new Array('Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');

// Array list of months.
var months = new Array('января','февраля','марта','апреля','мая','июня',
'июля','августа','сентября','октября','ноября','декабря');

// Calculate the number of the current day in the week.
var date = ((now.getDate()<10) ? "0" : "")+ now.getDate();

// Join it all together
today = days[now.getDay()] + ", " +
date + " " +
months[now.getMonth()] ;

// Print out the data.
document.write("" +today+ "");
// End -->
</script>

причем вставим его совершенно не обращая внимания на синтаксис PHP (за исключением того что не забудем перед началом скрипта закрыть строчку, а после его завершения снова открыть), для этого перед началом скрипта мы выставим PHP дескриптор ?> , который сообщит серверу что PHP код завершен и начинается чистый HTML, а после скрипта мы снова дадим понять серверу что начинается PHP код <? .

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

Для решения данной задачи, нам необходимо какое-либо значение, которое присутствует во всех модулях, но в тоже самое время у каждого модуля оно должно быть свое. Можно конечно вставить в индексные файлы модулей какую-либо переменную и в каждом модуле присвоить ей уникальное значение. Но так как такое значение уже есть - $module_name = basename(dirname(__FILE__)); , то и использовать мы будем его.

Вот код которым мы заменим код вывода графических файлов в верхней навигации:

echo "<td><a href=\"index.php\">";

if ($module_name == "News") {
echo "<img border=\"0\" src=\"themes/Delfi/images/home.gif\" width=\"78\" height=\"18\">";
}
else {
echo "<img border=\"0\" src=\"themes/Delfi/images/home_a.gif\" width=\"78\" height=\"18\">";
}

echo "</a></td><td><a href=\"modules.php?name=Forums\">";

if ($module_name == "Forums") {
echo "<img border=\"0\" src=\"themes/Delfi/images/forum.gif\" width=\"78\" height=\"18\">";
}
else {
echo "<img border=\"0\" src=\"themes/Delfi/images/forum_a.gif\" width=\"78\" height=\"18\">";
}

echo "</a></td><td><a href=\"modules.php?name=Downloads\">";

if ($module_name == "Downloads") {
echo "<img border=\"0\" src=\"themes/Delfi/images/files.gif\" width=\"78\" height=\"18\">";
}
else {
echo "<img border=\"0\" src=\"themes/Delfi/images/files_a.gif\" width=\"78\" height=\"18\">";
}

echo "</a></td><td><a href=\"modules.php?name=Web_Links\">";

if ($module_name == "Web_Links") {
echo "<img border=\"0\" src=\"themes/Delfi/images/links.gif\" width=\"78\" height=\"18\">";
}
else {
echo "<img border=\"0\" src=\"themes/Delfi/images/links_a.gif\" width=\"78\" height=\"18\">";
}

echo "</a></td><td><a href=\"modules.php?name=Your_Account\">";

if ($module_name == "Your_Account") {
echo "<img border=\"0\" src=\"themes/Delfi/images/akkaunt.gif\" width=\"78\" height=\"18\">";
}
else {
echo "<img border=\"0\" src=\"themes/Delfi/images/akkaunt_a.gif\" width=\"78\" height=\"18\">";
}

echo "</a></td><td width=\"50%\"></td>"

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

Ну и в заключении дадим возможность нашей теме модуль Forums выводить без левых блоков. Часто на нашем форуме задавались вопросы как это сделать, и тогда я советовал воспользоваться еще одним значением переменной $index, но раз уж мы сами делаем свою тему, то попытаемся придать ей такую возможность без редактирования файлов модуля Forums. 

Как и в прошлый раз воспользуемся уникальным для каждого модуля значением - $module_name.

Вот код для функции themeheader

if ($module_name == "Forums") {
echo "<td width=\"100%\" valign=\"top\">";
}
else {
echo "<td width=\"180\" valign=\"top\" bgcolor=\"#ffffcc\">";
blocks(left);
echo "</td>"
. "<td width=\"5\"></td>"
. "<td valign=\"top\">"; 
}

По аналогии нужно отредактировать и функцию themefooter , не забудьте добавить в нее глобальную переменную $module_name и вставьте примерно такой код:

function themefooter() {
global $index, $module_name;

if ($module_name == "Forums") {
echo "</td></tr></table>";
}
else {

if ($index == 1) {  /*и дальше ваш код

Ну что, вот собственно и все что я хотел рассказать и показать. Думаю что у нас получилась довольно симпатичная и функциональная тема. Взять ее можно здесь. Можете использовать ее в качестве примера, можете использовать на своем сайте - дело ваше.

Что же касается дополнения данной темы темой оформления  к форуму (templates), то на начальном этапе, рекомендую подобрать наиболее подходящую в цветовом отношении, отредактировать если это необходимо графические файлы, и установить собственные стили на странице управления форумом. К примеру для темы которую мы изготовили подойдет templates subSilver или fisubsilver.

В заключении хочу лишь добавить некоторые тонкости.
Некоторые элементы дизайна редактируются не в теме а в файле maifile.php , например за внешний вид сообщений администратора (те что выводятся на главной странице) отвечает функция function message_box вышеуказанного файла, а за вывод центральных блоков, помимо функции function themesidebox в самой теме отвечает функция function themecenterbox файла mainfile.php

Очень надеюсь что данный урок поможет многим из Вас понять устройство тем оформления для системы PHP-Nuke, а так же очень надеюсь что дизайн многих сайтов измениться в лучшую сторону, после того как их авторы ознакомятся со всем вышеизложенным!
Удачи Вам!

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

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


 Другие материалы категории Другие категории раздела
Создание блоков в PHP-Nuke
Устройство тем оформления
Создание собственной темы оформления
Создание собственного модуля (часть1)
Создание собственного модуля (часть2)
Советы по оптимизации 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.0207 с. Выполнено 15 запроса к базе данных за 0.0031 с.

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