Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 63934
Модуль Forms 63646
ТЕХНОЛОГИИ ДОСТ... 60507
Пример работы с... 59951
Имитационное мо... 55999
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

Пользователей: 13,079
новичок: Openair
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Метод половинного деления для нахождения корня уровнения на Turbo Pascal...
Моделирование процесса поступления заявок в систему, состоящую из трёх Э...
Выбор наилучших альтернатив с использованием методов оптимизации на Delp...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Устройство тем в Php-Fusion
Общая схема сайта

Начнем с самой общей информации: сайт на основе PHP-Fusion состоит из пяти основных частей: заголовка (header), левой и правой части (left & right side), подвала (footer) и центральной части, находящейся по середине между четырьмя остальными.

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

Надо заметить, что эти колонки существуют постольку, поскольку существуют панели расположенные в них. Как вы знаете, администратор может удалять, добавлять панели, временно отключать видимость и регулировать доступ к панелям для разных групп пользователей. Так вот если администратор отключит все панели правой колонки, то колонка, как бы, исчезнет (безо всякого вмешательства в программный код!). Или еще пример: допустим, в левой колонке администратор расположил только панели с доступом "пользователь". Тогда незарегистрированный гость увидит сайт с одной (правой) колонкой и не даже не будет подозревать, что зарегистрированный пользователь видит этот сайт с двумя колонками.

Из чего состоит тема

Каждая тема для сайта на основе PHP-Fusion представляет собой отдельную папку, расположеную в папке themеs. Название папки задает одновременно и название темы, которое открывается в списке выбора тем в "главных настройках" и в пользовательском профиле. Например присутствие на вашем сайте папки themes/Similitude приводит к появлению в этом списке темы "Similitude", если вы создадите папку themes/My_Theme, в этот список добавится тема "My_Theme". Но, как вы догадываетесь, просто создать папку недостаточно. Нужно ее чем-то наполнить. Чем же?

Внутри папки с вашей темой обязательно должен находиться файл theme.php, это главный файл темы. В принципе, можно этим и ограничиться, но обычно в этой папке лежит еще файл style.css, папки images и forum. Мы еще вернемся к этим файлам и папкам, а пока просто скажем, что style.css содержит определения стилей (внешнего вида элементов сайта), в папке images лежат графические файлы используемые в дизайне (всякие точечки, квадратики, фоны, распорки для таблиц), в папке forum лежат графические изображения кнопок форума ("new thread", "edit" и т.д.).

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

Как движок работает с темой

Основная задача движка - вывести из базы данных некую информацию на страничку, задача темы при этом - обеспечить желаемый внешний вид этого вывода. Как мы уже видели, сайт на PHP-Fusion имеет блочную структуру. Есть два больших блока имеющих самостоятельное устройство заголовок и подвал. И есть левая/правая колонки, а так же центр, содержание и вид которых определяется наличием, внешним видом и содержанием более мелких блоков.

Что я имею в виду? Обратите внимание: заголовок и подвал выглядят одинаково на всех страницах сайта, а содержимое центра, естественно изменяется. Хотя левая и правая колонки тоже обычно одинаковы на всех страницах, но тем не менее мы легко можем изменить их содержимое, убрав или добавив панель. Если присмотреться, можно увидеть, что панели живут не только в боковых колонках, что в центральной части содержимое тоже обычно заключено в панели. Или таблицы.

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

Тепеперь ответим на главный вопрос этой части, как же движок работает с темой?

В общем случае это выглядит так: сначала движок вызывает функцию, написанную на языке PHP, которая "рисует" начало блока (HTML-код), затем движок выводит содержимое данного блока а затем вызывает функцию "рисования" завершающей части блока. Врочем, некоторые функции самостоятельно рисуют и начало, и конец, и встраивают содержимое в середину. Главное, что этими функциями создается обрамление для содержимого страницы или отдельного блока.

Откуда же движок знает, что и когда ему рисовать? Ответ на этот вопрос раскроет нам и тайну содержимого файла theme.php.

Содержимое theme.php

Все функции, отвечающие за "рисование" элементов оформления сайта находятся в файле theme.php. Именно оттуда, по мере надобности, движок вызвает эти функции. В настоящий момент этих функци всего 11. Во всех темах они имеют одинаковые названия и ОБЯЗАТЕЛЬНО, все 11 штук, должны быть описаны в файле theme.php. Об их назначени можно судить по их названиям, так что сложностей возникать не должно. Вот эти 11 функций:

function render_header($header_content) - эта функция рисует заголовок сайта. Она вызывается из файла (если вам это интересно) subheader.php, где в качестве параметра ей передается код логотипа сайта. Если хотие изменить внешний вид шапки, надо изменить эту функцию в файле theme.php, если хотите вместо логотипа выводить что-то другое, или добавить в шапку код банера - изменяйте параметр вызова данной функции в subheader.php.

function render_footer($license=false) - эта функция выводит подвал сайта, со всеми копирайтам, счетчиками и прочим.

function render_news($subject, $news, $info) - определяет внешний вид каждой новости, грубо говоря - рисует вокруг текста новости таблицу, код которой задается в тексте функции и пририсовывает строчку "автор", "дата", "просмотры" и все такое.

function render_article($subject, $article, $info) - делает в точности то же самое, но для статей (отсюда вывод - статьи могут внешне достаточно сильно отличаться от новостей!).

function openside($title) - выводит открывающую, верхнюю часть панели (прямоугольного блока, размещаемого (обычно, но не только) в боковых колонках. В качестве $title передается заголовок панели.

function closeside() завершает панель, начатую предыдущей функцией. Между вызовами функция выводится содержимое панели.

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

function opensidex($title,$state="on") и
function closesidex() - делают то же самое, что две предыдущие функции, только панель получается хитрая - она может закрываться и раскрываться. Если при вызове функции в качестве второго параметра передается строка "on", панель будет изначально открыта, если "off" - закрыта. ОБратите внимание функции должны обязательно использоваться попарно. То есть если вызывается openside(), то в конце обязательно надо вызвать closeside(), если opensidex(), то в конце - closesidex().

function opentable($title) и
function closetable() начинают и завершают таблицу в которую обычно помещается ВСЕ содержимое центральной части. На Ваших собственных страницах никто не мешает вам использовать любое количество попарных вызовов этих функций для формирования смысловых блоков. В этом случае пригодится последняя функция:

function tablebreak() - код выводимый этой функцией разделяет блоки сайта (обычно выводя между ними пустую таблицу, отсюда и название).

Обобщение

Итак, мы рассмотрели все 11 функций файла themes.php. Для тех кто не врубился: именно эти функции рисуют на странице все элементы дизайна. Дизайнерский код прописан прямо в этих функциях и выводится оператором PHP echo.

Движок на основных страницах, существующих на сайте сразу после установки, вызывает эти функции самостоятельно. Если вы создаете свою собственную страницу или панельку, об их вызове Вы должны позаботиться сами.
Опубликовал Kest October 27 2008 12:22:17 · 0 Комментариев · 6930 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
INSTANT BOOSTER v...
База Allsubmitter...
Приложение Клиент...
Delphi 2005. Разр...
Delphi. Разработк...
DS_Group
BIOS
Borland Delphi 8 ...
Панель статистики...
DemoEdit [Исходни...
IconCut [Исходник...
StartMark
Профессиональное ...
Советы по Delphi
PHP 5 на примерах
Фундаментальные а...
32 урока по Delphi
Платформа програм...
ICQ
Bitmap [для кнопок]

Топ загрузок
Приложение Клие... 100450
Delphi 7 Enterp... 85852
Converter AMR<-... 20067
GPSS World Stud... 12518
Borland C++Buil... 11579
Borland Delphi ... 8508
Turbo Pascal fo... 7023
Visual Studio 2... 4989
Калькулятор [Ис... 4739
FreeSMS v1.3.1 3536
Случайные статьи
Абстрактная точка ...
Традиционные и гиб...
Тестер
Сравнение скорости...
Функции приведения
Положение Acompli
Моделирование элек...
Бабаевский шоколад
Линии
Итерации в первой ...
Купить ноутбук
Структура блока да...
Где проводить прео...
Модифицированный д...
Перегрузка операций
Инициализация данн...
Операции отношения...
Стиль резервирования
Введение в Турбо П...
Меню фотоаппарата ...
Использование авто...
Установка шаблона ...
Решения к главе 7
Обработка транзакц...
Настройка туннельн...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?