По многочисленным просьбам посетителей и друзей, я
решился приоткрыть карты и немного рассказать о движке моего сайта.
Статья рассчитана на людей, хоть чуть-чуть
знающих PHP, поэтому я не буду зря стучать по клаве для разъяснения «что
такое движок для сайта» или преподавания «основ PHP».
Цель
В этой статье я хочу
показать на примерах и объяснить, как сделать
полноценный движок для сайта, используя только
технологию PHP и обычные текстовые файлы.
Принцип такой: весь
контент сайта хранится в файлах, содержащих только
текст и структурную разметку, все остальное
оформление будет генерироваться скриптом.
Приступим к созданию
Создаем стандартный
PHP-файл с таким содержанием (далее все, что выделено в
рамочки, является рабочим PHP-кодом):<?php
Для совместимости
с большинством конфигураций PHP, вставляем следующую
строку:
extract($HTTP_GET_VARS);
PHP в безопасной
конфигурации хранит все данные, переданные скрипту
методом GET (то есть в адресной сроке), в
специальном массиве $HTTP_GET_VARS. Эта команда
извлекает ключи и соответствующие им значения из
этого массива в обычные переменные.
С этого момента, если
строка запроса к скрипту выглядит так:
http://argon.com.ru/engine.php?p=/windows/winxp/
то нашему скрипту
движка становится доступна переменная «$p» со
значением «/windows/winxp/».
$cntext='.txt';
$cntdir='cnt';
Здесь мы задаем в
переменной «$cntext», какое расширение будут
иметь файлы, содержащие текстовое наполнение сайта. А в
переменной «$cntdir» — директорию на сервере, в
которой будут храниться все эти файлы.
Договоримся, что в
переменной «$p» мы будем передавать скрипту
относительный путь к текстовому файлу, который будем
вставлять в скелет страницы.
Если к скрипту нашего
движка обратиться без параметра «$p», то мы будем
выводить главную страницу сайта:
if(!$p)$p='/';
Считается хорошим
тоном, если адрес главной страницы какого-нибудь
раздела на сайте представлен как путь к директории.
Но ведь мы не можем вставлять в каркас страницы
директорию… Поэтому, если относительный путь
заканчивается слешем («/»), то мы этот слеш заменяем на
«/index»:
$p=ereg_replace('/$','/index',$p);
Теперь нам нужно
преобразовать относительный путь к файлу-вставке
в путь физический, который можно будет
использовать при обращении к файлу:
$l=$cntdir.$p.$cntext;
Поясню на примере два
предыдущих абзаца. При запросе
http://argon.com.ru/engine.php?p=/windows/winxp/
переменная «$p»
(относительный путь) будет иметь значение «/windows/winxp/»,
а переменная «$l» — значение «cnt/windows/winxp/index.txt».
Делаем уникальные
заголовки страниц
Нам нужно, чтобы у
каждой страницы был уникальный заголовок. Для
этого, в первую строку каждого файла с текстовой
информацией помещаем тег комментария HTML, после
которого должен обязательно стоять перенос сроки.
В этот тег помещаем название страницы.
Пример:
<!-- Заголовок страницы -->
А следующая команда будет
выдирать из файлов с контентом названия страниц в
переменную «$title»:
Как работает этот
скрипт «вживую» и пример организации контентных
файлов можно посмотреть
.
Все только начинается…
Просто? Просто! Такой же
движок можно реализовать и на SSI, и даже на
JavaScript… Но я привел лишь основы. Я не стал бы
писать эту статью, если бы этот движок не был
универсален и масштабируем. К нему можно
прикрутить фичи практически любой сложности,
например:
свой дизайн для
каждого раздела сайта или типа страниц (статья,
список статей, главная)
вставка своего
описания и ключевых слов для каждого
документа
дополнительные
динамические вставки (например, случайный
анекдот)
вывод определенных
служебных страниц (например, в случае ошибки)
автоматическая
переадресация
отсутствие
знака «?» в строке адреса (используя технологию
mod_rewrite)
подсчет времени
генерации страницы
Реальную работу всего
вышеперечисленного можно увидеть, побродив по сайту, на
котором вы читаете статью…
Если у вас возникли
вопросы или предложения, обращайтесь на
.
Библиотека GTK+ прошла долгий путь развития и сейчас очень популярна. GNOME, одна из ведущих оконных сред, использует GTK+ почти исключительно, GIMP построен на GTK+, множество коммерческих разработчиков ПО, таких как Abobe, NVidia и VMware, решили использовать эту библиотеку в качестве графической основы для своих продуктов... подробнее
Slashdot.org – популярный новостной портал с посещаемостью 50 млн. человек в месяц. Авторы проекта добились такого успеха, предоставляя пользователям свежие и интересные новости из мира IT... подробнее
Здесь рассматривается вопрос, что бывает, если запустить некий скрипт почти одновременно (что происходит, например, при большой нагруженности сервера) несколько раз, т.е. запустить несколько копий одного и того же скрипта. И к чему это может привести... подробнее
...и снова о спаме. Кто о нем только не писал, и все писали, что это плохо и ай-яй-яй. Я не буду оригинальничать, и тоже скажу – это плохо. Это ай-яй-яй. Как бороться со спамерами со своей стороны... подробнее