Допустим, вы на свой статический сайт решили поставить блог. Проблем никаких, но всегда есть желание, что бы на всех статических страницах отображались ссылки на обновления в блоге.
Практически на всех серверах есть поддержка SSI, поэтому самым простейшим будет написать маленький скриптик, который будет забирать из базы заголовки на новые статьи.
Итак, если SSI не включен, то включаем его:
Для Apache нужно добавить строку в .htaccess или в секцию VirtualHost / Directory вашего хоста:
AddHandler server-parsed .shtml .shtm .html .htm
Для nginx в файл nginx.conf:
ssi on;
Далее создаем файл в корне сайта ssi_latest_posts.php:
<?php
require_once( './wp-config.php' );
$cache_expire = 3600; // сколько хранить кэш
if( file_exists("./cache/latest_posts.html") ) {
$mtime = filemtime("./cache/latest_posts.html");
if( $mtime >= time() - $cache_expire ) {
//заголовки нужны, что бы статические файлы оставались статическими
$etag = md5("./cache/latest_posts.html?".$mtime);
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $mtime)." GMT");
header("Etag: $etag");
readfile("./cache/latest_posts.html");
exit();
}
}
$posts = get_posts('numberposts=5');
ob_start();
?>Новые статьи в блоге
Дополнительно я создал папку cache, в которой хранится файлик кэша, что бы каждый раз не лазить в базу, и добавил заголовки, что бы статика оставалась статикой. Папке cache не забудьте дать права на запись (chmod 777)
Осталось в статических файлах в нужном месте добавить:
Комментариев пока нет.