Компьютер

ЧП Куликов Михаил Михайлович

Тел:

+380-(50)-589-55-02

Loading
Мы в социальных сетях...

    -  Вконтакте
    -  Facebook
    -  Google+
    -  Twitter
    -  LiveJournal
    -  Я.ру
    -  Одноклассники
    -  RSS
    -  Мой Круг
    -  YouTube
Прочее...

/images/certificate_small.png

Анализ: траст сайта it-kmm.com
Внимание!!! Заработал на 100% новый сервис.

Подмена заголовка страницы или как я строил свой шаблон сайта

Немного истории. Начав монтировать свой первый сайт, меня хватило только на то, чтобы задуматься о сокращении собственного труда. Т.е. я быстро понял что при наличии у сайта более одной страницы, когда необходимо что-то подправить, ну хотя-бы в реквизитах общей шапки, придется либо вручную "пройтись" по всем страницам и поменять, либо надо изобретать (других вариантов я тогда еще не знал 🙁 ) какой-то шаблон.

Итак: index.html был "торжественно" переименован в index.php, ну а потом вообще "порезан" на "составные" части. Лично мне понравилось разбить аж на шесть! частей. С учетом того, что я для себя выбрал так называемую трех колоночную модель. Таким образом я выделил следующие составные части:

  1. Шапка - ну тут все просто. Выражаясь терминами HTML - это весь тэг <HEADER> и кусок <BODY> содержащий заголовочную часть страницы.
  2. Меню - мне так показалось удобнее в самом начале (и я оказался прав). Так получается проще менять некоторые пункты меню для разных страниц.
  3. Левая колонка - здесь у меня располагается, в основном, навигационное меню по статьям в блоге. Ну немного дополнительных ссылок.
  4. Правая колонка - ну это можно назвать "информационной" панелью. Всякие часики, календарики, погода, реклама и т.п.
  5. Центр - ну название говорит само за себя.
  6. Футер - "по русски" как-то не выговаривается 🙂 У меня там всякие рейтинги "живут" и им подобные счетчики. Здесь-же у меня наконец-то закрылся <BODY> и <HTML>.

Т.е. вот примерное содержимое моего index.php:

<?php
  require "header.php";
  require "menu.htm";
  require "left_side.php";
  require "center_main.php";
  require "right_side.php";
  require "footer.php";
?>

Все просто "изюмительно", легко правится, меняется, но ...

Именно, есть одно "нехорошее" "но". При такой схеме у всех страниц такого сайта получается один и то-же <TITLE>. Вот именно, с чем боролись, на то и .... Унификацию получили, но и все статьи с одной шапкой в результатах поисковой выдачи - тоже получили (вместо бонуса 🙂 )

Меня этот расклад совсем не устроил, но и писать каждой статье персональный <title> лично я посчитал роскошью. Подошли к самой сути. Я (для себя лично) нашел два способа (но это не означает что нет больше) подменить "красиво" <title> так сказать "на ходу".

Первый способ. Это использование javascript. Мне не очень понравился из-за того, что не гарантирует результат. Т.к. работает на стороне клиента (грузит еще и комп клиента) и может быть отключен. Но имеет право на "жизнь". Суть в одной функции и вызове (у меня в футере) когда нужные переменные уже заполнены.

Вот функция:

<script type="text/javascript">
function changeTitle(title) { document.title = title; }
</script>

Вот вызов:

<script type="text/javascript">
var category = "<?php echo $thisMyCat->cat_name; ?>"; // Беру имя рубрики
var article = "<?php echo the_title(); ?>"; // Беру название статьи
var site = "<?php echo $_SERVER['HTTP_HOST'] ?>"; // URL сайта
var title = (category == '' ? article : category) +" | "+site; // Складываем
changeTitle(title); // Меняем
</script>

Второй способ. Это использование PHP . Именно этот вариант работает на этой странице, которую Вы сейчас читаете. Хоть и пришлось "повоевать" с буферизацией, но выгоды (как для меня) очевидны. Реализация работает на сервере хостинга и никак не зависит от настроек клиентской части. Клиент этого даже не замечает 🙂 Но тоже из двух частей.

Первая - это определение самой функции преобразования и включение функции буферизации. Самые ПЕРВЫЕ строки.

<?php
$default_title = 'TITLE по-умолчанию'; //На всякий случай. Вдруг что-то не определится

function callback($buffer) {
 global $default_title, $thisMyCat, $post;

 chdir(dirname($_SERVER['SCRIPT_FILENAME'])); //В руководстве по РНР 5 написано, что может изменить текущую папку. У меня и без этого работает

 $site = $_SERVER['HTTP_HOST'];
 $script = $_SERVER['SCRIPT_NAME'];
 preg_match("/[^\/\.]+\.[^\/\.]{3,4}$/i",$script,$page_name); //Определим имя страницы на которую зашел пользователь
 preg_match("/^[^\/\.]+/i",$page_name[0],$page);
 switch(strtolower($page[0])) {
 case "index": //Ну эта должна быть главной
 $title = $default_title . " | " . $site;
 break;
 case "main_web": //Это мой "шаблон" WordPress
 $category = $thisMyCat->cat_name;
 $article = $post->post_title;
 $title = ($category == '' ? $article : $category) . " | " . $site;
 //Для всех своих статей я поменял и описание (DESCRIPTION) страниц
 $pattern = '/<META name="Description" content="(.+)">/i';
 $replacement = '<META name="Description" content="'.($category == '' ? $article : $category).'">';
 $buffer = preg_replace($pattern, $replacement, $buffer);
 break;
 case "sites": //У меня здесь всякий "хлам"
 $title = "Кто что придумает..." . " | " . $site;
 break;
 default: //То что не прошло по основным "фильтрам"
 $title = $page[0] . " | " . $site;
 }

$pattern = "'<title>(.+)</title>'i";
 $replacement = "<title>".$title."</title>";
 $result = preg_replace($pattern, $replacement, $buffer);

return $result;

}

ob_start("callback"); //Придержим выдачу страницы клиенту

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HEAD>
<TITLE><?php echo $default_title; ?></TITLE>

Вторая - просто отдача буфера с преобразованием описанной ранее функцией. Уже после ВСЕХ строк.

</BODY>
</HTML>
<?php ob_end_flush(); ?>

Автор: Михаил Куликов.

Локальная сеть, - монтаж и настройка.


Комментарии к посту «Подмена заголовка страницы или как я строил свой шаблон сайта»

Комментариев пока нет, будьте первым.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

DT

Курсы валют:

UAH

1 USD = 24.510 24.096
1 EUR = 27.100 26.525
1 RUR = 00.396 00.356

Антивирусы в формате SaaS
Подписаться письмом

Спонсоры...

SP:   LF:   PP:  

ubuntu == © Куликов М.М. (2011)
Сертифицированный партнер Dr.Web Free secondary DNS uaRating Rambler's Top100 Рейтинг@Mail.ru bigmir)net TOP 100 Яндекс цитирования Ranker Рейтинг сайта в веб-каталоге misto.zp.ua TOP.zp.ua