Лекции     Книги     Рефераты    

Пишем движок сайта (CMS – Систему управления контентом)

news date Сен.07.2008    categories Web-программирование > PHP    comments (10)

Для начала напишем простенький 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. Поэтому сейчас мы начнём делать админку для нашего скрипта.

Обсуждения

10 комментариев к “Пишем движок сайта (CMS – Систему управления контентом)”
  1. AMD пишет:

    я бы не назвал этот сайт CMS, а просто движок :)

  2. garlic пишет:

    Сам-то понял, что сказал?

  3. bengann пишет:

    Без сомнения эта система управления – ЛУЧШАЯ в рунете, и не надо ее нагружать всякой ерундой! Единственный недостаток – отсутствие WYSIWYG-редактора. Вопрос – как его прикрутить? Ах да – еще недостаток: чтобы главная страница была index.php а не index.php?id=1. А такие, как AMD пусть пользуются этими непонятно для кого написанными джумлами-ньюками-мамбами-битриксами-даталайфами и прочим… kr4shr – исправь эти 2 недостатка – и ты сделаешь революцию в сайтостроении. И вообще ты молодец – наконец-то начинали появляться вменяемые программисты.

    …Комментарий отредактирован Админом (подправлен лексикон :) )

  4. sotona пишет:

    Уважаемый аффтар, не ваш ли это сайт http://www.cms-chaynik.ru там cms точно такаже как вы тут написали, и добавлен WYSIWYG-редактор, видимо по просьбе bengann)))

  5. admin пишет:

    Сайт не наш… а ЦМС явно наша и есть :)
    Вообще, по правилам “хорошего тона” (как минимум) – автор сайта должен был поставить ссылочку на нас… Ну да, Бог ему судья… :)

  6. sotona пишет:

    Ну радует хоть одно, что они не барыжат этой cms

  7. nauk пишет:

    Как это не барыжат? Еще как барыжат: “Стоимость CMS Бизнес Чайник – всего 4900 рублей”
    cms-chaynik.ru/cms-chaynik-mlm/

  8. ARS пишет:

    Блин, скажите как загружать без FTP файлы на сервер

  9. Александр пишет:

    А можно ли добавить поле для указания физического имени файла (контента)?
    Или как в этом случае можно организовать ЧПУ нормального вида?

    Хочется добиться
    RewriteRule ^(.*)$ index.php?id=$1
    например: site.ru/content/ будет просить index.php?id=content

  10. exdesign пишет:

    Скажите, пожалуйста, как можно создать два блока меню, пробывал все удвоением menu2.php, menu2.csv: и инклюдил в индексный фаил(в нем удваивал переменные, которые отвечают за вывод), как, например, парсер menu2.php, но так и не добился вывода второго блока меню, теги %MENU2% ни чем не заменяются, почему-то. Помогите, пожалуйста.

Добавить комментарий



Ваш комментарий:

 



© 2009 - 2010 | Webteach.ru | Образовательный портал