Пишем движок сайта (CMS – Систему управления контентом)
Для начала напишем простенький csv-парсер menu.php. Работает он очень просто: просто читает его по строкам, разбивая каждую строку на массив, заменяя значениями из массива теги в шаблоне и сохраняя все ссылки в переменную $menu_output. Вот листинг файла menu.php (для простоты понимания расставлены комментарии):
<?php
$menu_output = ”; // Объявляем переменную для формирования меню и обнуляем
$file = file (“menu.csv”); // получаем массив из строк файла menu.csv
foreach ($file as $e) // под циклом
{
$elem = explode (“;”, $e); // разделяем ID страницы и ее анкор в меню
$output = $menu_tmpl; // и заменяем нужные теги в шаблоне вывода меню, заданном в settings
$output = str_replace (“%URL%”, “index.php?id=” . $elem[0], $output);
$output = str_replace (“%TITLE%”, $elem[1], $output);
$menu_output = $menu_output . $output;
}
?>
Теперь напишем основной файл нашей простенькой cms. Для начала этот файл проверяет наличие главной страницы. Если её нет, то говорим об этом и предлагаем проследовать в админку. Если передан параметр id, то ищем искомую страницу, при её отсутствии выводим 404.html, если же она есть, то выводим её. Иначе выводим главную страницу. При отсутствии шаблона показываем файл error.html. Вроде всё. Вот листинг:
<?php
// подключаем файл настроек
require(’settings.php’);
// проверяем наличие индекс-страницы
if (!file_exists (“content/” . $index . “.php”))
die (“Отсутствует стартовая страница… Для добавления и редактирования страниц используйте <a href=\”./admin\”>панель администратора</a>”);if (isset($_GET ['id'])) // если послана переменная ID страницы
{
$id = $_GET ['id'];
}
else
{
$id = $index; // иначе ID страницы стартовая из файла настроек
}
if (file_exists (“content/” . $id . “.php”)) // проверяем наличие нужной статьи
{
include (“content/” . $id . “.php”); // подключаем файл нужной статьи
}
else // если нет ни одного файла стрраниц
{
include (‘404.html’); exit;
}
if (file_exists (“templates/” . $curr_tmpl . “/index.php”)) // проверяем наличие индекс-файла активного шаблона
{
$template_page = file_get_contents(“templates/” . $curr_tmpl . “/index.php”); // считываем содержимое шаблона
}
else
{
include (“error.html”); // если отсутствует файл шаблона
die (“”); // то выходим
}
include (“menu.php”); // подключаем скрипт вывода меню
// выполняем необходимые замены тегов в шаблоне
$overall_output = str_replace (“%TITLE%”, $page_title, $template_page);
$overall_output = str_replace (“%DESC%”, $page_descr, $overall_output);
$overall_output = str_replace (“%KEYWORDS%”, $page_keyws, $overall_output);
$overall_output = str_replace (“%MENU%”, $menu_output, $overall_output);
$overall_output = str_replace (“%CONTENT%”, $content, $overall_output);
echo $overall_output; // выводим
?>
Да, и это уже всё! CMS написана и готова к использованию! Но есть одно “но” — этим беспределом, пардон, сайтом придётся управлять “ручками”. Это ни чем не лучше, чем создавать сайт на “чистом” html. Поэтому сейчас мы начнём делать админку для нашего скрипта.




декабря 12, 2008 at 16:04
я бы не назвал этот сайт CMS, а просто движок
января 15, 2009 at 17:09
Сам-то понял, что сказал?
января 31, 2009 at 10:51
Без сомнения эта система управления – ЛУЧШАЯ в рунете, и не надо ее нагружать всякой ерундой! Единственный недостаток – отсутствие WYSIWYG-редактора. Вопрос – как его прикрутить? Ах да – еще недостаток: чтобы главная страница была index.php а не index.php?id=1. А такие, как AMD пусть пользуются этими непонятно для кого написанными джумлами-ньюками-мамбами-битриксами-даталайфами и прочим… kr4shr – исправь эти 2 недостатка – и ты сделаешь революцию в сайтостроении. И вообще ты молодец – наконец-то начинали появляться вменяемые программисты.
…Комментарий отредактирован Админом (подправлен лексикон
)
июня 14, 2009 at 15:20
Уважаемый аффтар, не ваш ли это сайт http://www.cms-chaynik.ru там cms точно такаже как вы тут написали, и добавлен WYSIWYG-редактор, видимо по просьбе bengann)))
июня 14, 2009 at 19:02
Сайт не наш… а ЦМС явно наша и есть
Вообще, по правилам “хорошего тона” (как минимум) – автор сайта должен был поставить ссылочку на нас… Ну да, Бог ему судья…
июля 18, 2009 at 11:07
Ну радует хоть одно, что они не барыжат этой cms
февраля 11, 2010 at 13:12
Как это не барыжат? Еще как барыжат: “Стоимость CMS Бизнес Чайник – всего 4900 рублей”
cms-chaynik.ru/cms-chaynik-mlm/
февраля 19, 2010 at 17:38
Блин, скажите как загружать без FTP файлы на сервер
апреля 5, 2010 at 20:21
А можно ли добавить поле для указания физического имени файла (контента)?
Или как в этом случае можно организовать ЧПУ нормального вида?
Хочется добиться
RewriteRule ^(.*)$ index.php?id=$1
например: site.ru/content/ будет просить index.php?id=content
мая 11, 2010 at 09:08
Скажите, пожалуйста, как можно создать два блока меню, пробывал все удвоением menu2.php, menu2.csv: и инклюдил в индексный фаил(в нем удваивал переменные, которые отвечают за вывод), как, например, парсер menu2.php, но так и не добился вывода второго блока меню, теги %MENU2% ни чем не заменяются, почему-то. Помогите, пожалуйста.
Добавить комментарий