title / description / keywords – универсальная система для сайта » lamara-nsk.ru


lamara-nsk.ru
Это блог о сео, деньгах, заработке в сети, разработке своих проектов, программировании
и "жизни программиста", бизнесе, блогосфере, фрилансе и многом другом.


Контакты, Реклама в блоге




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

Автор DimoninG, написано 15.04.2009
Рубрика Движки, 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 – универсальная система для сайта»


ae471697

    пишет:

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

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

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


    пишет:

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


    пишет:

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

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


    пишет:

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


    пишет:

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


    пишет:

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

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

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


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

Что здесь почитать?



1.   Разработки.
1.1 Плагин "Я не робот"
1.2 Плагин "Код Adsense прямо в пост"

2.   Заработай.
2.1 Блогун: 20$ в день
2.2 Уходим от налогов в Sape
2.3 Хватит думать, пора зарабатывать

3.   Акции и конкурсы.
3.1 Ссылка за "Рабочий стол"

Показать весь список.

-->







Блог на движке WordPress и тема для него создана DimoninG'ом в 2007 году.
Все материалы авторские, их копирование запрещено законом об авторском праве.