Пользователь
может тоже отправлять информацию в базу данных, например комментарии
к страницам сайта. Однако общается он не напрямую с базой данных, а с
движком сайта, который проверяет корректность данных (от проверки
корректности e-mail пользователя до проверки текста на цензуру) и
помещает введенную пользователем информацию в базу данных.
У большинства уже готовых CMS модульная структура, т. е. можно
использовать модули для добавления в CMS новых возможностей. У нашей CMS
модулей не будет по следующим причинам:
? поскольку CMS разрабатывается для себя, не думаю, что ею
заинтересуются тысячи пользователей. Следовательно, даже если сделать
возможность использования модулей, она останется невостребованной;
Гпава 13. Функции и возможности будущей CMS. Разработка шаблонизатора 157
? модульная структура необходима для быстрого и простого добавления
нового кода в CMS, т. е. для пользователей, которые ничего не понимают
в PHP-программировании. Поскольку мы сами напишем нашу CMS, для
нас не составит труда добавить в нее новую возможность, слегка
отредактировав ее код.
Не подумайте, что данная глава — сугубо теоретическая. В следующем
разделе мы поговорим о создании шаблонизатора, поскольку в остальных главах
мы будем заняты более важными задачами, а именно разработкой движка и
панели управления.
13.4. Разработка шаблонизатора для CMS
В самых простых случаях для разделения РНР- и HTML-кода можно
обойтись без шаблонизатора. Вы будете хранить HTML-код отдельно от сценария
в HTML-файле, а в нужном месте с помощью инструкции file () можно
прочитать содержимое HTML-файла и оператором echo вывести его в браузер.
Но иногда встраивать HTML-код в сценарий все же приходится.
Предположим, в нашем сценарии есть следующие операторы:
echo «<�р>Добро пожаловать $user«;
echo «<�р>Дата вашего последнего визита: $last«;
echo «<�р>Дата регистрации: $reg_date«;
echo «<�р>Вами оставлено сообщений: $messages«;
echo «<�р>Новых личных сообщений: $personal«;
Другими словами, в нашем PHP-сценарии есть HTML-код, который нельзя
поместить в обычный HTML-файл, поскольку его нужно модифицировать и
передавать в браузер.
Если вы сами планируете поддерживать ваш сценарий, то вроде бы ничего
страшного. Но вы только представьте лицо дизайнера, не имеющего
никакого отношения к РНР и к программированию вообще, когда он откроет РНР-
файл, чтобы изменить какой-то HTML-код. Ведь наш сценарий — это не эти
простые пять строк, а сотни строк PHP-кода, в котором иногда «мелькает»
HTML-код. Разбираться во всем этом сложно, к тому же велика вероятность
°шибки.
Поэтому следует вообще исключить HTML-код из PHP-файла. Для этого «нам
придется использовать шаблоны. В этом случае наш HTML-код будет
вынесен в файл welcome.tpl, приведенный в листинге 13.1.
158
Часть IV. Разработка собственной CMS
<�р>Добро пожаловать {USER}
<�р>Дата вашего последнего визита: {LAST}
<�р>Дата регистрации: {REG_DATE}
<�р>Вами оставлено сообщений: {MESSAGES}
<�р>Новых личных сообщений: {PERSONAL}
Наверняка вы уже сталкивались с такими файлами (например, при
редактировании шаблонов той или иной CMS). Дизайнерам сайтов данный формат
тоже знаком, поэтому особого труда с редактированием файла шаблона у них
не будет.
В данной главе мы напишем очень простой шаблонизатор, т. е. сценарий,
позволяющий обрабатывать TPL-шаблоны. Однако возможностей нашего шаб-
лонизатора вполне хватит для создания на его основе довольно серьезных
проектов.
Итак, шаблон у нас уже есть. Напишем файл index.php, который будет
работать с шаблоном, используя наш еще не созданный шаблонизатор
(листинг 13.2).