Видел множество статей в интернете, с названием "Простой движок" Да, соглашусь, он уж очень простой, по причине того что учат в нем выводить лишь мета теги и текст, собственно на этом все... Единственная идея которую получилось донести в этих статьях, это как привязать шаблон к 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 может почитать вот тут
<body>
<?=$news?>
</body>
а в новостях вы делаете так:
<p>[text]</p>
мне кажется, что логичнее тогда везде делать одинаково, в тех же новостях делать так же как и на главной странице:
<span><?=$title[$i]?></span>
<div style="border:1px solid #DCDCDC;width:550px;">
<p><?=$txt[$i]?></p>
</div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td><?=$author[$i]?> | <?=$date_b[$i]?></td></tr>
</table>
<br>
тогда ненужно будет задействовать функцию str_replace(), количество кода сократится на 5 строк да и быстродействие немного увеличится
и вот ставлю например:
в index.php:
include("lang/$lang/blog.ini");
}
$txt = $my;
{
потом в файле
cms_core/setting/niuncms_setting.php
добавляю:
$lang = "ru";//Язык сайта
в языковом файле прописываю:
lang/ru/blog.ini
код:
<?php
$my = "Моя CMS";
?>
а в файлах проекта (html добавляю):
<?=$my?>
PS: что я не правильно сделал? или прописал
include("lang/$lang/blog.ini");
}
$txt = $my;
{
include() это функция которая подключает файл, находящийся по указанному пути... у данной функции нет тела. И к тому же скобки тела указаны не в правильном порядке. Правильнее было бы написать вот так:
include("lang/$lang/blog.ini");
$txt = $my;
Если Вам нужно проверить существует ли файл по пути "lang/$lang/blog.ini" то используйте вот такую запись:
if (file_exists("lang/$lang/blog.ini"))
{
include("lang/$lang/blog.ini");
$txt = $my;
}
$txt = $my;
на
$txt .= $my;
как так он не отображал контент блога) но он выносит локализацию после контента:
http://cs406329.userapi.com/v406329786/6463/bODfuZ1d6JE.jpg
думаю вам тоже будет интересна локализация :)
http://rio-shaman.ru/razrabotka-cms/uluchshenija/postranichnaja-navigacija/
Но данный пример является частью цикла, и там описан индивидуальный подход, а не общий..
Я уже делился с читателем общим примером, вот комментарий
http://rio-shaman.ru/razrabotka-cms/uluchshenija/postranichnaja-navigacija/#comment_1106
в котором я оставил ссылку на закачку примера.
include("module/news.php");
Это что получается, для каждой страницы нужно делать инклуд?
Он перепутал гнездо пауков - php.ru, с Вашим блогом