Перед показом текста на странице его надо обработать по правилам типографики. Это может сделать «Типограф» Студии Лебедева, «Типограф» Дениса Селезнева или свой движок.
Если текст написан и не меняется, то его не надо все время типографить. Достаточно оттипографить один раз, сохранить результат и выводить его до тех пор, пока текст снова не изменится.
Для этого использую такой механизм.
- Создаю исходный текст и сохраняют его в файле с расширением «in».
- В коде страницы вызываю функцию typo_file( ’имя_файла_с_текстом’ ), которая выводит на страницу оттипографированый текст. Имя файла указывается без расширения.
Функция typo_file( $filename ) делает следующее:
- Ищет файл $filename с расширением «in».
- Ищет файл с таким же именем и расширением «out».
- Сравнивает даты модификации файлов.
- Если «out» изменен позже, чем «in», возвращает содержимое «out».
- В противном случае типографит содержимое «in», записывает его в «out» и возвращает результат в основной поток.
Код функции typo_file на ПХП:
<?php
function typo_file( $file_name, $input_extension = '.in', $output_extension = '.out' ) {
if ( !file_exists($file_name.$input_extension) )
return '';
$in_time = filemtime($file_name.$input_extension);
$out_time = file_exists($file_name.$output_extension) ? filemtime($file_name.$output_extension) : $in_time-1;
if ($out_time < $in_time) {
// типографим содержимое файла
$in_file = file_get_contents( $file_name.$input_extension );
$out_file = typo( $in_file );
// записываем данные в новый файл
file_put_contents( $file_name.$output_extension, $out_file );
} else
$out_file = file_get_contents( $file_name.$output_extension );
return $out_file;
}
?>
Функция typo типографит текст удобным вам способом.
Содержимое основной страницы выглядит так:
<?php
// …
echo typo_file( ‘page_content’ );
// …
?>
Вместо файла с результатом, можно использовать базу данных. В нее заносить оттипографированный текст и время последнего изменения. Ключ для доступа к записи — имя файла.