Простой движок CMS на PHP

 

Видел множество статей в интернете, с названием "Простой движок" Да, соглашусь, он уж очень простой, по причине того что учат в нем выводить лишь мета теги и текст, собственно на этом все... Единственная идея которую получилось донести в этих статьях, это как привязать шаблон к php скрипту... Этого конечно вполне достаточно, чтоб развить идею и изобрести велосипед собственной сборки Но хотелось бы такую статью, которая описывала какой-нить простой скрипт, который выполнялся как "движок" Я тут кое что написал, и хотелось бы поделится...

 

 

Вообще мысля проста создать так сказать модуль для своей CMS который выводил бы предпросмотр новостей... По моему мнению, движок это простое отделение кода PHP от кода HTML Я возможно не правильно его называю, это не движок, если верить терминам то, то, что мы будем писать - это шаблонизатор. Вообщем то это совсем не важно, конечный продукт будет уметь выводить мини новости, и при этом мы сможем менять шаблон не трогая код. Мы не будем вытаскивать информацию из базы данных, просто напрямую впишем ее в переменную. Приступим...Создадим файл index.php в нем напишем такой код

<?
include("module/news.php");
$news = index_page();


include("templates/index.html");
?>

из него видно что мы подключаем два файла. Один из папки "module" т.е. модули, другой из папки "templates" т.е. шаблоны... Как вы поняли нам нужно написать сам модуль и шаблон... Но шаблонов мы будем писать два, один будет содержать разметку главной страницы, а другой будет содержать разметку самой мини новости. Начнем с мини новости, назовем файл news.html

<span>[title]</span>
<div style="border:1px solid #DCDCDC;width:550px;">
<p>[text]</p>
</div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td>Автор: [author] | [date_b]</td></tr>
</table>
<br>

индексы [title], [text], [author], [date_b] заменятся на переменные в нашем модуле. Теперь напишем шаблон главной страницы, назовем его index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Первый движок</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>
<?=$news?>
</body>
</html>

Обычная страница html только в ней присутствует php код <?=$news?> Тут будут выведены наши новости... Приступим к самому модулю, называем его news.php

<?
function index_page()
{
//Заполняем переменные с информацией
//В наших мининовостях будет виден текст, заголовок, дата и автор
$txt[0]="Печально когда при создание чего то ты забываешь про какие то мелочи...и для того что бы не переписывать все ты пытаешься измудриться так, чтобы вмешательство в код было минимальное..";
$txt[1]="Когда то такие попытки увенчаются успехом, а иногда бывает и так, собственными же руками уродуешь код =(";
$title[0]="Титл новости 1";
$title[1]="Титл новости 2";
$author[0]="Первый автор";
$author[1]="Второй автор";
$date_b[0]="12/10/11";
$date_b[1]="13/10/11";

$sm_read = file("templates/news.html");//Открываем шаблон
$sm_read = implode("",$sm_read);//Так как функция file() в результате дает нам массив, то склеиваем его
for($i=0;isset($txt[$i]);$i++)//Выводим цикл где меняем индексы на информацию из переменных
{
$edd_tamp = $sm_read;
$edd_tamp = str_replace("[text]",$txt[$i],$edd_tamp);
$edd_tamp = str_replace("[title]",$title[$i],$edd_tamp);
$edd_tamp = str_replace("[author]",$author[$i],$edd_tamp);
$edd_tamp = str_replace("[date_b]",$date_b[$i],$edd_tamp);

$news .= $edd_tamp;//Склеиваем все в одну переменную
}
return $news;//Выводим результат функции
}
?>

Собственно небольшой движок написан...Поместим файлы news.html и index.html в папку templates. Файл news.php в папку module, а файл index.php в корень сайта...

Это лишь простой пример реализации скрипта который может генерировать страничку "на лету". Более подробнее оп простом движке на php может почитать вот тут