Воскресенье, 19.05.2024, 13:16
Приветствую Вас Гость

ДИЗАЙН - СТУДИЯ "ВИКТОРИЯ"

Главная » Статьи » Програмирование » Цикл статей CMS своими руками

Делаем управляемые META-теги, т.е. задумываемся о раскрутке в поисковых системах
Впринципе, сайт и админку можно считать готовыми, но я бы предложил их улучшить. Когда мы создаем сайт, нельзя забывать про поисковые системы. Для них необходимо указывать такие вещи как тег title и метатеги keywords и description. Сейчас мы этим и займемся. Заодно, как Вы могли заметить, неудобно выбирать страницы по номерам, было бы неплохо дать им названия. Итак, заходим в нашу БД и добавляем новые поля, выполнив запрос:
ALTER TABLE `pages` ADD `title` VARCHAR( 255 ) NOT NULL ,
ADD `metatitle` VARCHAR( 255 ) NOT NULL ,
ADD `metakeywords` VARCHAR( 255 ) NOT NULL ,
ADD `metadescription` TEXT NOT NULL;
Теперь подправим нашу админку, в которой учтем новые поля. Добавляем в нашу функцию show_form() новые элементы формы, теперь она будет выглядеть так:
function show_form(){
        
// подключаем файл с настройками подключения к БД
        
require '../inc/connect.php';

        
//делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются.
        
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
        
$row = mysql_fetch_array($result);
?>
<!-- далее идет обычный HTML -->
<form action="" method="post">
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
  <td>
     <p>Название страницы (title)</p>
  </td>
</tr>
<tr bgcolor="#ffffff">
  <td>
     <input type="text" name="title" value="(stripslashes($row['title']));?>" class="enter" size="79">
  </td>
</tr>
<tr bgcolor="#B0ADC3">
  <td>
     <p>Заголовок страницы (Meta - title)</p>
  </td>
</tr>
<tr bgcolor="#ffffff">
  <td>
     <input type="text" name="metatitle" value="(stripslashes($row['metatitle']));?>" class="enter" size="79">
  </td>
</tr>
<tr bgcolor="#B0ADC3">
  <td>
     <p>Ключевые слова (Meta - keywords)</p>
  </td>
</tr>
<tr bgcolor="#ffffff">
  <td>
     <input type="text" name="metakeywords" class="enter" size="79" value="(stripslashes($row['metakeywords']));?>">
  </td>
</tr>
<tr bgcolor="#B0ADC3">
  <td>
     <p>Описание (Meta - description)</p>
  </td>
</tr>
<tr bgcolor="#ffffff">
  <td>
     <input type="text" name="metadescription" class="enter" size="79" value="(stripslashes($row['metadescription']));?>">
  </td>
</tr>
<tr bgcolor="#B0ADC3">
  <td><p>Текст страницы</p></td>
</tr>
<tr bgcolor="#ffffff">
  <td>
      <textarea name="body" rows="20" cols="59" class="enter">
                // "?>
                ($row['body']);?>
      </textarea>
  </td>
</tr>
<tr>
  <td bgcolor="#1F2760" align="right">
      <input type="hidden" name="id" value="['id'];?>">
      <input type="submit" value="отправить" name="edit">
  </td>
</tr>
</table>
</form>
<?
} // функция show_form() закончилась
Поменяли форму, теперь надо заменить функцию complete(), в которой мы записываем наши данные в базу:
function complete(){
      
// подключаем файл с настройками подключения - это мы уже знаем.
      
require '../inc/connect.php';

      
// делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.
      
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link);

      
// перекидываем данные из MySQL в пхпшный ассоциативный массив
      
$row = mysql_fetch_array($result);

      
// проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД
      
if(empty($row['id']))
            
$query = "INSERT INTO pages
                     (body,
                      title,
                      metatitle,
                      metakeywords,
                      metadescription)
                                      VALUES
                            ('"
.mysql_real_escape_string($_POST['body'])."',
                             '"
.mysql_real_escape_string($_POST['title'])."',
                             '"
.mysql_real_escape_string($_POST['metatitle'])."',
                             '"
.mysql_real_escape_string($_POST['metakeywords'])."',
                             '"
.mysql_real_escape_string($_POST['metadescription'])."')";
      
// а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем
      
else
            
$query = "UPDATE pages SET
                                     body = '"
.mysql_real_escape_string($_POST['body'])."',
                                     title = '"
.mysql_real_escape_string($_POST['title'])."',
                                     metatitle = '"
.mysql_real_escape_string($_POST['metatitle'])."',
                                     metakeywords = '"
.mysql_real_escape_string($_POST['metakeywords'])."',
                                     metadescription = '"
.mysql_real_escape_string($_POST['metadescription'])."'
                     WHERE id = '"
.$_POST['id']."';";

      
// непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)
      
mysql_query($query, $link);

      
// ну и просто выводим крикливую надпись, что скрипт отработал
      
echo '

Данные обновлены

'
;
}
?>
Заливаем нашу новую админку на сервер. Заходим в созданные страницы и каждой из них пишем название. Теперь предлагаю выводить список наших страничек не по id, а по названию. Для этого правим функцию show_pages():
function show_pages() {
        require
'../inc/connect.php';
        echo
'


  


     Добавить страницу
  
'
;
        echo
'


  
';
        
$result = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
        while(
$row = mysql_fetch_array($result)){
               echo
'

  

';
        
// думаю вы заметили, что в тексте ссылки мы заменили $row{'id'] на $row['title'] и добавили обработку функцией stripslashes()
        
}
        echo
'

     Название страницы
  

     '.stripslashes($row['title']).'
  
';

}
?>
Как будет выглядеть наш файл по результатам я писать не буду, надеюсь Вы самостоятельно справитесь с не сложной задачей по небольшим исправлениям в наших функциях. А пока лучше вернемся к нашему основному файлу index.php и настроим вывод наших мета-тегов непосредственно на сайте.
        require 'inc/connect.php';

        
//htmlspecialchars() Преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались.
        
$_GET['id'] = htmlspecialchars($_GET['id']);

        
// если у нас не запрашивали никакую определенную страницу, то будем выводить нашу самую первую. Если Вы ее давно удалили, поставьте вместо единички идентификатор той странички, которую Вы хотели бы грузить по умолчанию
        
if(empty($_GET['id'])) $_GET['id'] = 1;
        
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
        
$row = mysql_fetch_array($result);
?>
<html>
<head>
  <title>['metatitle'];?></title>
  <META NAME="description" CONTENT="(stripslashes($row['metadescription']));?>">
  <META NAME="keywords" CONTENT="(stripslashes($row['metakeywords']));?>">
</head>
<body>
<!-- меню делаем ручками, по принципу: -->
<a href="?id=1">первая страница</a>
<a href="?id=2">вторая страница</a>
<a href="?id=3">контакты</a><br /><br />
//stripslashes() - Удаляет экранирование символов - а их мы понаставили в админке, когда загружали данные в базу с помощью функции mysql_real_escape_string()?>
($row['body']);?>
</body>
</html>
Изменений прасктически нет, просто вывели наши данные в метатегах и в тайтл. Думаю Вы уже можете самостоятельно заметить, где это сделано. Кстати, мы можем выводить наши названия страниц в меню! Это уже на Ваше усмотерние. Сделать это можно так:
echo 'Наше меню: ';
        
$resultMenu = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
        
$rowMenu = mysql_fetch_array($resultMenu); // выведем первый пункт меню без точечки
        
echo '['.stripslashes($rowMenu['title']).']';
        while(
$rowMenu = mysql_fetch_array($resultMenu)){
               echo
' · ['.stripslashes($rowMenu['title']).']';
        }
?>
Осталось красиво оформить странички - это уже html - думаю с этим проблем у Вас возникнуть не должно ;-)
Категория: Цикл статей CMS своими руками | Добавил: admin (15.04.2008)
Просмотров: 2114 | Комментарии: 3 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Категории каталога
PHP [0]
Советы по PHP
CSS [1]
Статьи по CSS
Java [0]
Java
MySQL [4]
MySQL
Цикл статей CMS своими руками [8]
Админка сайта на php + MySQL - создание управляемых сайтов
Поиск
Друзья сайта
Статистика
Наш опрос
Оцените мой сайт
Всего ответов: 36