Динамическая карта сайта

В этом уроке мы научимся создавать динамическую карту сайта. Карта сайта облегчает поиск нужной информации для пользователя.

Выберем сайт или создадим новый, где мы разместим нашу карту сайта. Для примера я возьму структуру одного из моих сайтов. На этом сайте все данные хранятся в базе данных:


 CREATE TABLE `news` (
 `news_id` int(10) NOT NULL auto_increment,
 `news_name` varchar(255) NOT NULL,
 `news_text` text NOT NULL,
 `news_date` date NOT NULL,
 PRIMARY KEY (`news_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
 CREATE TABLE `tutorials` (
 `tutorials_id` int(10) NOT NULL auto_increment,
 `tutorials_name` varchar(255) NOT NULL,
 `tutorials_text` text NOT NULL,
 `tutorials_date` date NOT NULL,
 PRIMARY KEY (`tutorials_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
 

Ну, что начнем создавать карту сайта. Для начала создадим нашей карте «скелет» с некоторыми необходимыми вещами (например, подключение к базе данных).

Рассмотрим код, который нам понадобиться. Первые 4 линий – подключения MySQL (Вы можете подключать по-разному – Это ваш выбор)

Header ( ‘Content-Type: Application / XML “) – это линия” рассказывает “в браузер, что этот документ должен быть прочитанных как XML.


 <?php 
 $user = 'username'; 
 $pwd = 'password'; 
 $conn = mysql_connect('localhost', $user, $pwd) or die (' Невозможно подключиться к серверу '); 
 mysql_select_db('database') or die (' База данных не хочет открываться '); 
 header('Content-Type: application/xml'); 
 echo '<?xml version="1.0" encoding="UTF-8"?>'."n"; 
 ?> 
 <urlset xmlns="http://www.google.com/schemas/sitemap/0.84"> 
 URL-адреса пишем здесь
 </urlset>
 <?php
 echo '<?xml version="1.0" encoding="UTF-8"?>'."n";
 ?>
 

Создадим (или добавим уже в созданный) файл index.php:


 <url> 
 <loc>http://www.yoursite.com/</loc> 
 <lastmod> 
 <?php 
 $sql = "SELECT MAX( news_date ) as date FROM news"; 
 $result = mysql_query($sql) or die(mysql_error()); 
 $row = mysql_fetch_assoc($result); 
 echo str_replace(' ', 'T', $row['date']).substr(date("O"), 0, -2).':00'; 
 ?> 
 </lastmod> 
 </url>
 

Здесь мы имеем простой запрос MySQL (мы берем дату самых последних новостей из таблицы). Одной из интересных команд является команда echo str_replace ( ”, ‘T’, $row [ ‘date’]). substr (date ( “O”), 0, -2). ‘: 00’;

– str_replace и substr была использована для изменения формата даты Этот же метод можно использовать для tutorials.php файла. Для этого нам надо взять самую последнюю дату учебника.

Следующим важным моментом является viewtutorial.php файла.


 <?php 
 $sql = "SELECT * FROM `tutorials`"; 
 $result = mysql_query($sql) or die(mysql_error()); 
 while($row = mysql_fetch_assoc($result)) { 
 ?> 
 <url> 
 <loc>http://www.yoursite.com/viewtutorial.php?id=<?php echo $row['tutorials_id']; ?></loc> 
 <lastmod><?php echo str_replace(' ', 'T', $row['tutorials_date']).substr(date("O"), 0, -2).':00'; ?></lastmod> 
 </url> 
 <?php 
 } 
 ?>
 

Здесь мы используем цикл, для того чтобы вытащить из таблицы идентификатор id для каждого значения из таблицы. В данном примере их будет два URL: vievtutorial.php?id=1 и viewtutorial.php?id=2

Вод так будет выглядеть написанный нами код:


 <?php
 $user = 'username'; 
 $pwd = 'password'; 
 $conn = mysql_connect('localhost', $user, $pwd) or die (' Cannot connect to server '); 
 mysql_select_db('database') or die ('Cannot open database');
 header('Content-Type: application/xml'); 
 echo '<?xml version="1.0" encoding="UTF-8"?>'."n"; 
 ?> 
 <urlset xmlns="http://www.google.com/schemas/sitemap/0.84"> 
 <url> 
 <loc>http://www.yoursite.com/</loc> 
 <lastmod> 
 <?php 
 $sql = "SELECT MAX( news_date ) as date FROM news"; 
 $result = mysql_query($sql) or die(mysql_error()); 
 $row = mysql_fetch_assoc($result); 
 echo str_replace(' ', 'T', $row['date']).substr(date("O"), 0, -2).':00'; 
 ?> 
 </lastmod> 
 </url>
 <url> 
 <loc>http://www.yoursite.com/tutorials.php</loc> 
 <lastmod> 
 <?php 
 $sql = "SELECT MAX( tutorials_date ) as date FROM tutorials"; 
 $result = mysql_query($sql) or die(mysql_error()); 
 $row = mysql_fetch_assoc($result); 
 echo str_replace(' ', 'T', $row['date']).>substr(date("O"), 0, -2).':00'; 
 ?> 
 </lastmod> 
 </url>
 <?php 
 $sql = "SELECT * FROM `tutorials`"; 
 $result = mysql_query($sql) or die(mysql_error()); 
 while($row = mysql_fetch_assoc($result)) { 
 ?> 
 <url> 
 <loc>http://www.yoursite.com/viewtutorial.php?id=<?php echo $row['tutorials_id']; ?></loc> 
 <lastmod><?php echo str_replace(' ', 'T', $row['tutorials_date']).substr(date("O"), 0, -2).':00'; ?></lastmod> 
 </url> 
 <?php 
 } 
 ?>
 <url> 
 <loc>http:// www.yoursite.com/contact.php</loc> 
 <lastmod>2007-09-14T21:56:53<?php echo substr(date("O"), 0, -2).':00'; ?></lastmod> 
 </url> 
 </urlset>
 

Вот и все! Теперь Вы можете с легкостью создать динамическую карту сайта.

Понравился урок? Добавьте его к себе в закладки.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *