горячая выпечка CMS БОРИС ВОЛЬФСОН Спецвыпуск: Хакер, номер #073, стр. 073-068-4 $template = new Template($title, $body); $template->print_page(); Результат должен быть примерно как на картинке: [общая схема работы] Чтобы лучше понять, как будет происходить работа нашей мини-CMS, попробуем разобрать ее по шагам. Пользователь заходит на определенный адрес, например на www.example.com/page/4. Веб-сервер Apache при помощи модуля rewrite разбивает адрес и передает в программу строку запроса “page/4”. Наш скрипт на PHP сначала смотрит, что ему надо произвести действие “page” – показать страницу с номером четыре - для чего делается запрос в базу данных, из которой возвращается содержимое и название страницы. Эти данные передаются в шаблонизатор, который подставляет их в текущий шаблон темы. В итоге получается полностью готовый HTML-файл, который передается пользователю. [редактируем страницы] Теперь настало время показать, как можно создавать страницы и редактировать их. Во-первых, разберемся, какие запросы нужно делать для работы с базой данных. Нам понадобится два запроса - один для редактирования страницы при помощи оператора UPDATE и второй для создания новой страницы при помощи оператора INSERT. Запрос для создания новой страницы INSERT INTO `pages` (`title`, `body`) VALUES('$title', '$body'); апрос для изменения страницы UPDATE `pages` SET `title` = '$title', `body` = '$body' WHERE `page_id` = $page_id; Роли переменных в этих запросах полностью соответствуют названиям, поэтому перейдем к следующему вопросу – вводу содержимого страницы. Это можно сделать при помощи обычной формы, но хотелось бы вводить информацию для страниц не в формате HTML, а в визуальном режиме, прямо как в Word’е. Для этого существуют специальные визуальные онлайн-редакторы, которые при помощи JavaScript реализуют такую функциональность. На данный момент большинство из них имеет схожий функционал, поэтому для наших целей подойдет любой. Я выбрал TinyMCE. Для того чтобы его включить, надо просто добавить пару строчек в наш шаблон, предварительно скачав сам редактор: Подключение визуального редактора TinyMCE <script type="text/javascript" src="/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({ mode : "textareas", language : "ru", content_css : "/themes/standart/style.css" }); </script> Первый тег script загружает файл с самим редактором, а второй - инициализирует и настраивает его. У настройки три опции: первая выбирает такой режим работы, при котором все поля ввода будут использовать визуальный редактор, вторая опция, как ни странно, выбирает язык, третья – файл с каскадной таблицей стилей. Подробнее об этих настройках можно прочитать в документации, которая идет с редактором. После подключения визуального редактора все поля ввода заменятся им: [пользователи] Для пользователей желательно завести таблицу, где будут храниться логины и пароли. Когда пользователь заходит на сайт, ему необходимо открыть сессию. В PHP это легко сделать при помощи встроенного механизма. Замечу лишь, что еще было бы неплохо в базе данных хранить роли: «пользователь», «администратор», «модератор» и другие. Это позволит не давать обычным пользователям изменять страницы в случае обычного сайта или наоборот дать эти права, если ты делаешь wiki-сайт. |