title / description / keywords – универсальная система для сайта

Рубрики: Движки, CMS, Общее, на PHP  

В последнем моем проекте было разработано довольно много разнообразных модулей (таких как опросы, новости, партнерские программы, разнообразная статистика, партнерские материалы, товары разных типов, да и просто страницы меню).

Возник вопрос о том, что для каждой страницы надо как-то задавать title, description и keywords (для SEO). Нужно было быстро реализовать это решение.

Обычно в таких случаях разработчики добавляют новые поля в базу данных для всех этих модулей, меняют скрипты (запросы в базы данных) и вообще перерабатывают пол-движка. Понятно, подводный камень в этом случае в том, что очень легко что-то пропустить, забыть подправить какой-то запрос и получить в релизе ошибки. А если, например, эти таблицы используют какие-то другие скрипты, то они могут внешне работать без ошибок, но фактически коверкать все данные (например, подсчитывать совершенно неверную статистику).

За 0.0141 секунды раздумий я придумал следующую систему, которая позволяет не перерабатывать весь движок.

Понятно, что каждая страница сайта имеет свой URL. URI – это тот же URL, только без домена. Его можно получить из переменной $_SERVER["REQUEST_URI"]. Понятно, что для каждой страницы URI свой собственный (иначе это уже одна и та же страница).

И возникает очень простая система. Создаем таблицу в БД с полями «title, key, descr, uri». В том месте, где должны выводиться title, description и keywords пишем что-то вроде:

<?php
$uri = $_SERVER["REQUEST_URI"];
if ($uri == «/index.php») $uri = «/»;
$q = mysql_query («SELECT * FROM table WHERE uri=’$uri’;»);
if (mysql_num_rows ($q) > 0){
$str = mysql_fetch_array ($q);
$t = $str['title']; $k = $str['key']; $d = $str['descr'];
}
?>
<meta name=»keywords» content=»<?php echo $k; ?>» />
<meta name=»description» content=»<?php echo $d; ?>» />
<title><?php echo $t; ?></title>

Понятно, что в таблицу записывается заголовок, описание и ключевики для того адреса, для которого мы хотим задать их. И работать это будет для всех страниц, которые обрабатывает движок (то есть в данном случае – для всего сайта вообще). А администратор получает возможность задавать заголовки, ключи и описание даже для тех страниц, которые в ТЗ не предусмотрены, плюс в следующих модулях не нужно будет реализовывать «внутреннюю» поддержку title, keywords и description.

Конечно, не забудьте о безопасности! Проверяйте это выражение перед передачей его в базу. Обычно оно проверяется очень просто – нельзя использовать никакие символы, кроме слеша, точки, букв и цифр.



Отзывов (6) на «title / description / keywords – универсальная система для сайта»

    shuppe пишет:

    привет!
    а лучше сделать в базе поле где будет храниться еще и md5($url)

    и выборку делать по этому полю… :)
    100% гарантия от барахла в урле.

    и индекс не забыть на него поставить


    DimoninG пишет:

    shuppe, неплохая идея ;)


    Секрет пишет:

    > Конечно, не забудьте о безопасности! Проверяйте это выражение перед передачей его в базу.

    Так а почему ты пишешь строку о безопастности, вместо того, что бы самому в код вставить mysql_real_escape_string?


    Paradise_Flame пишет:

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


    DimoninG пишет:

    Paradise_Flame, Вы статью-то читали?


    Зайва Игорь Леонидович пишет:

    DimoninG, а зачем их вообще вносить в БД, если они уже там должны сидеть? По крайней мере уж титл точно, а вот остальные, мне кажется, уже плагином пишутся ??? – точно не знаю. Но, например, у меня титул через код ВП выводится, хотя ВП штука и хитрая, но я тоже предпочитаю хитрить с ней еще больше – от плагинов стараюсь отказываться и причин тому несколько:

    1 – едят много памяти.
    2 – накручивают БД, создавая лишние запросы и так же их читая, что сказывается на загрузке сервера и скорости загрузки сайта.
    3 – нужно постоянно что-то удалять в БД / Добавлять / Редактировать / или настраивать, а тему просто залил и готово при переустановке.

    Хорошо бы еще вариант попроще (или посложнее ???), чем указанный найти, чтоб БД не трогать… ;)


Оставьте свой комментарий

Теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не спамер и не робот.
Я спамер и робот!

dimoning.ru
SEO и программирование.
  • Рубрики:



  • Рассылка:

  • Дополнительно:

  • По месяцам:

  • Счетчики:

    Яндекс цитирования
  • Спонсоры:


  • dimoning.ru © 2008-2011 г.
    Все материалы авторские, но их можно копировать с указанием прямой ссылки на источник.