[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сайт по кирпичикам схема темплейта
belvision
В Интернете есть пример сборки сайта по схеме при которой дизайн сайта отделяется от его наполнения вопрос как сжелать ссылки в формате CGI-запроса, например, index.php?page=news то есть чтобы они работали. Я сделал всё как в этом примере ссылки сделал вида index.php?page= но на сайте отображается только информация из файла news.txt подскажите как правильно писать ссылки в формате CGI-запроса чтобы работали остальные ссылки на сайте например чтобы сайт наполнился информацией из файла photo.txt. Я поставил ссылку вида index.php?page=photo но она не работает по прежнему остаётся информация из файла news.txt

вот отрывок из статьи которая размещена на многих сайтах

Может возникнуть естественный вопрос: а как же функция text определит, какой файл следует вставить? Ведь мы создаем многостраничный сайт. Для доступа ко всем страницам используется файл index.php, а для указания, какой информацией наполнить страницу, служит параметр page, передаваемый в формате CGI-запроса, например, index.php?page=news - для ссылки на страницу с новостями или index.php?page=photo - для странички с фотоальбомом и т. д. Если имя раздела не было задано, или указанной страницы не существует, выводится текст из файла index.txt.



Задача - полностью разделить дизайн, скрипты и содержание страниц.
До сих пор мы исходили из того, что структура страницы может быть описана как набор последовательно идущих информационных блоков, которые можно просто вставить в файл командой include. Надо ли говорить, что на практике все обстоит гораздо сложнее? Тем не менее, для большинства веб-сайтов можно выделить с одной стороны неизменные HTML-конструкции, которые повторяются на всех страницах и описывают их структуру и дизайн, а с другой, варьирующиеся тексты, которые, собственно, и составляют информационное наполнение.

То, что останется, если всю переменную информацию выкинуть, - это и есть темплейт страницы. Для создания темплейтного сайта надо просто научиться вставлять информационные блоки внутрь темплейта. На практике темплейты бывают довольно сложными, в них используются нетривиальные приемы верстки и дизайна, однако в конце концов остается просто добавить в темплейт текст. Мы не будем загромождать статью сложными примерами и рассмотрим предельно упрощенный темплейт:
<? require("func.php"); ?>
<HTML><HEAD>
<TITLE>Template Site</TITLE>
</HEAD><BODY>

<!-- здесь может быть любой HTML-код,
задающий верстку и дизайн сайта -->
<? menu(); ?>
<!-- HTML-код продолжается -->
<? text(); ?>
<!-- HTML-код продолжается -->
<? news(); ?>
<!-- HTML-код продолжается -->
</HTML></BODY>
Поместим код темплейта в файл index.php. Он полностью описывает структуру нашей страницы, если не считать того, что вместо основного текста в нем содержится вызов функции text, вместо меню - вызов функции menu, а вместо блока кратких новостей - вызов функции news. Код этих функций размещен в файле func.php, который подключается директивой require в начале темплейта.

Каждая функция, обращаясь к переменной $page, может определить, какую именно информацию нужно вывести в формируемом ею информационном блоке. Например, функция menu может исключать из меню ссылку на отображаемую в данный момент страницу. (На практике, правда, совсем удалять пункт из меню не стоит - лучше просто убрать с него ссылку, однако в данном примере для простоты ссылка со страницы на саму себя просто исключается.)

Другой пример динамического блока - функция news. Обычно она просто помещает в отведенное ей место темплейта сводку кратких новостей сайта из файла shortnews.txt. Однако это не имеет смысла, если мы находимся на основной странице новостей. В этом случае вызывается функция banner, которая вместо новостей вставляет рекламный баннер.

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

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

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

Листинг. Файл func.php
<?php
$text_path = "text/"; // Каталог с текстами

// Вставка блока основного текста соответственно параметру $page
function text()
{
if($page == "news"){ include($text_path."news.txt"); }
elseif($page == "photo"){ include($text_path."photo.txt"); }
// ...
else{ include($text_path."index.txt"); }
}

// Вывод навигационного меню без ссылки на страницу $page
function menu()
{
if($page != ""){ echo ("<a href='index.php'>Главная</a><br>"); }
elseif($page != "news"){ echo ("<a href='index.php?page=news'>Новости</a>"); }
elseif($page != "photo"){ echo ("<a href='index.php?page=photo'>Галерея</a>"); }
// ...
}

// Вывод блока кратких новостей (если мы не на основной новостной странице)
function news()
{
if($page != "news"){ include ($text_path."shortnews.txt"); }
else{ banner(); }
}
?>
Прочитано с сайтов
http://www.getinfo.ru/article291.html
http://www.compdoc.ru/internet/php/site_assembly_bricks/
http://www.realcoding.net/article/view/4289
http://www.4webmaster.ru/articles/php/8.html
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.