Статья:Модуль оформления, шаблоны.
Модуль построения страницы, т.е. самое начало .
Этой статьей я бы хотел открыть цикл статей посвященных помодульному построению Веб-сайта. На протяжении многих и многих статей мы будем писать различные модули для нашего сайта, отлаживать и присоединять к уже подключенным.
Сегодня мы напишем модуль, ответственный за построение страницы, приводящий любую страницу к упрощенному виду типа
<?php
require "header. php";
//здесь основное содержание страницы
require "footer. php";
?>
В результате выполнения данного кода, у нас получалась бы полностью оформленная по шаблону страница, с содержанием в выделенном для него месте.
Начнем со структуры папок. Создайте папку template. Туда положите заранее подготовленный HTML файл main. html, где вместо ключевых слов, описания сайта, заголовка вы пишите слова [keywords] вместо ключевых слов, [descr] вместо описания,[name] вместо заголовка title. В том месте, где у вас будет находиться текст, картинки, новости или что то ещё вы должны вставить ключевое слово[content]. В том месте где у вас будет находиться ваш копирайт, поставьте ключевое слово [copyr].
Вот примитивный пример файла main. html:
<html>
<head>
<title>[name]</title>
<meta name='keywords' content='[keywords]'>
<meta name='description' content='[descr]'>
</head>
<body>
[content]
<b><center>[copyr]</b></center>
</body>
</html>
Это просто пример. Система типа CMS позволяет вам без труда изменить дизайн хоть на самый умопомрачительный, все зависит от вашей фантазии.
Так, шаблон создали, теперь надо дать понять системе, на что же заменять эти ключевые слова в шаблоне. Создайте в корневой папке файл conf. php. В нем напишите следующие строки:
<?php
$conf[name]="Здесь напишите название вашего сайта, например Офф. Сайт 1236 школы г. Москвы. ";
$conf[keyws]="Здесь напишите ключевые слова вашего сайта, опираясь на пред. пример пусть это будет школа, учеба, москва, 1236, уроки";
$conf[desc]="Здесь напишите описание вашего сайта, например Это лучший сайт о школе номер 1236!Наша школа самая лучшая!";
$conf[copyr]="Здесь пишем копирайт, например (c)www. 1236school. ru копирование материалов с сайта запрещено, будем бить, возможно даже ногами!";
?>
В итоге у нас получился такой файл conf. php:
<?php
$conf[name]="Офф. Сайт 1236 школы г. Москвы. ";
$conf[keyws]=" школа, учеба, москва, 1236, уроки";
$conf[desc]="Это лучший сайт о школе номер 1236!Наша школа самая лучшая!";
$conf[copyr]="(c)www. 1236school. ru копирование материалов с сайта запрещено, будем бить, возможно даже ногами!";
?>
и так на данный момент у нас вот такая структура файлов и папок:
корневая папка
-template
--main. html
-conf. php
P. S. :выставьте права 666 на файл main. html, нам он пригодится для разных целей.
Теперь создайте файл header. php и поместите его в корень сайта рядом с файлом conf. php.
Создали?Теперь начинается самое интересное

<?php
error_reporting(0);//1
include "conf. php";//2
$fp=fopen(". /template/main. html","r");//3
$template=fread($fp,filesize(". /template/main. html"));//4
fclose($fp);//5
list($up_template,$down_template)=split("\[content\]",$template,2);//6
$up_template=str_replace("[name]",$conf[name],$up_template);//7
$up_template=str_replace("[keywords]",$conf[keyws],$up_template);//8
$up_template=str_replace("[descr]",$conf[desc],$up_template);//9
echo $up_template;//10
?>
Теперь начнем разбор полетов.
1 строка:нам не к чему предупреждения РНР на экране, т. к. они искарежат весь сайт при наличии и откроют доступ посторонних к интересной информации.
2 строка:Мы подключаем файл conf. php, теперь все переменные из него мы можем использовать по всему сайту.
3 строка:Мы открываем для чтения файл с шаблоном сайта.
4 строка: Мы считываем из открытого файла кол-во символов, возвращаемых функцией filesize, в переменную $template. Она возвращает весь размер файла, поэтому мы считываем в одну переменную весь файл.
5 строка:Закрываем файл, так как оставлять его открытым не рекомендуется.
6 строка:Справа от знака равно мы функцией split разделяем шаблон сайта на 2 части-до кл. слова [content] и после него, то есть получаем верхнюю и нижнюю части сайта. При помощи функции list, мы присваиваем переменным $up_template и $down_template 2 строки, возвращенных функцией split.
7,8,9 строки:здесь мы делаем по сути одно и тоже, мы функцией str_replace заменяем кл. слова [name],[keywords],[descr] на соответствующие им значения из файла conf. php. То есть подставляем на законные места название, кл. слова и описание сайта.
10 строка:Мы выводим на экран уже отшлифованную шапку сайта. Теперь там то что нужно.
Теперь создадим файл footer. php и поместим его рядом с файлами conf. php и header. php. В этом файле ничего такого особенно сложного нет, он выполняет ещё меньше функций чем header. php. Вот его код:
<?php
$down_template=str_replace("[copyr]",$conf[copyr],$down_template);
echo $down_template;
?>
Не искушенные в программировании могут спросить, "а откуда взялись переменные из header. php?Мы же их не обьявляли и ничего не подключали!". Ответ будет чуть ниже. В этом файле мы заменяем кл. слово [copyr] на копирайт и выводим нижнюю часть страницы.
Если посмотреть, что выводят по отдельности файлы header. php и footer. php, то расклад будет такой:header. php выводит
<html>
<head>
<title>Офф. Сайт 1236 школы г. Москвы. </title>
<meta name='keywords' content='школа, учеба, москва, 1236, уроки'>
<meta name='description' content='Это лучший сайт о школе номер 1236!Наша школа самая лучшая!'>
</head>
<body>
а файл footer. php выводит
<b><center>(c)www. 1236school. ru копирование материалов с сайта запрещено, будем бить, возможно даже ногами!</center></b>
</body>
</html>
А давайте теперь создадим первый файл, в котором будет применено оформление?Назовем его index. php и положим рядом с остальными файлами. В него напишите следующие строчки:
<?php
require "header. php";
echo "Это моя первая страница!";
require "footer. php";
?>
A теперь запустите его в браузере. Что вы видите?А теперь просмотрите HTML код страницы. Вы видите другие строчки, которых нет в файле index. php. Это и есть система CMS. Вы отделили дизайн от основного содержания. Теперь вы можете изменить шаблон main. html как вам вздумается, оставив лишь ключевые слова и вы получите полноценный сайт с новым дизайном, не меняя ни одной строчки кода в других файлах!
А помните я обещал рассказать, откуда взялись все переменные?Так вот сейчас я это расскажу. Так как мы уже подключили в файле index. php файл header. php, мы фактически перенесли все содержание файла из header. php в index. php. Точно так же и с footer. php. Теоретически, при выполнении файл index. php выглядит так:
<?php
error_reporting(0);//1
include "conf. php";//2
$fp=fopen(". /template/main. html","r");//3
$template=fread($fp,filesize(". /template/main. html"));//4
fclose($fp);//5
list($up_template,$down_template)=split("\[content\]",$template,2);//6
$up_template=str_replace("[name]",$conf[name],$up_template);//7
$up_template=str_replace("[keywords]",$conf[keyws],$up_template);//8
$up_template=str_replace("[descr]",$conf[desc],$up_template);//9
echo $up_template;//10
echo "Это моя первая страница!";
$down_template=str_replace("\[copyr\]",$conf[copyr],$down_template);
echo $down_template;
?>
То есть footer. php как часть index. php может пользоваться его переменными.
Вот мы и закончили модуль оформления. Опираясь на index. php вы можете создавать кучу файлов, и все они будут выглядеть одинаково, различаясь только содержанием. При этом вам не придется каждый раз вводить HTML код в эти файлы.
На это написание первого модуля я обьявляю законченным. Приведу напоследок структуру сайта после всех махинаций:
корневая папка
-template(папка)
|-main.html
-conf.php
-header.php
-footer.php
-index.php
Оставляйте отзывы и скажите какой модуль писать следующим, в случае разности мнений, следующим модулем будет гостевая книга.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают