Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Динамично генериране на Google Sitemap с PHP
  1. Sitemap файл за сайтове
     
Автор  plamenSm (08.04.2008 11:22)  съобщение до автора
Погледнат  7043 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (2)  абонирай се за PHP
    Страница 1 / 1

 



В този урок ще разгледаме пример за автоматично генериране на Sitemap файл за сайтове, които генерират страниците си на базата на информация записана в MySQL таблици.


Какво е Google Sitemap?

Това са един или няколко plain-text или XML файла съдържащ информация, която помага на индексиращата система на Google. Въпреки, че Google проследява автоматично вътрешните хиперлинкове, има случаи в които без Sitemap индексирането на сайта е невъзможно.

Повече информация: https://www.google.com/webmasters/tools/docs/en/protocol.html


Въведение в примера

Нека сайта който ще използваме за пример да съдържа следните файлове:


  • index.php - заглавната страница, която показва новини,
  • tutorials.php - извежда списък с уроци,
  • vievtutorial.php - извежда един урок,
  • contact.php - статична страница с информация за контакти.


vievtutorial.php извежда съдържанието на урок по зададен параметър id.

Всички новини и уроци са записани в 2 еднотипни MySQL таблици:


Tutorials:




News:




Прараметри за свързване с базата данни::

Database: „database”
Username: „username”
Password: „password”

Да разгледаме кода, който генерира динамичен Sitemap XML


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

// Първо да направим връзка с базата данни:
$user = 'username';
$pwd = 'password';

mysql_connect( 'localhost', $user, $pwd ) or die( 'Cannot connect to database server' );
mysql_select_db( 'database' ) or die( 'Cannot open database' );

// Необходимо да зададем HTTP хедър, който указва,

// че резултата следва да се третира като XML:

header( 'Content-Type: application/xml' );

// Започваме с формирането на самия XML. Първия ред извеждаме с echo макар че е статичен.

// Защо? - Защото '<?' и '
?>' биха объркали PHP интерпретатора.
echo( '
<?xml version="1.0" encoding="UTF-8"?>\n' );
?>


CODE
1
2
3
4
5
6
7
8
<!-- формираме елемента-корен (root). Това е „urlset” -->
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">

<!-- Първия URL е заглавната страница. Подразбира се index.php -->

<url>
<
loc>http://www.yoursite.com/</loc>
<
lastmod>


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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' );

// С горния ред преформатираме и извеждаме датата в необходимия за Sitemap формат.

// Например „2007-09-03 08:36:27” се конвертира в „2007-09-15T09:31:11-05:00”.

?>


CODE
1
2
3
4
5
6
7
8
<!-- Продължаваме със статичен XML код. Затваряме „lastmod” и първия „url” -->
</lastmod>
</
url>

<!-- Правим същото за tutorials.php -->
<url>
<
loc>http://www.yoursite.com/tutorials.php</loc>
<
lastmod>

CODE
1
2
3
4
5
6
<?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' );
?>

CODE
1
2
</lastmod>
</
url>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// Следващия код създава по един елемет „url” за всеки урок.
// Така индексиращата машина на Google ще може да „претърси” всички уроци:

$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

}

?>

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- contact.php описваме статично, с изключение на датата на последна промяна -->

<url>
<
loc>http://bwebi.com/contact.php</loc>
<
lastmod>2007-09-14T21:56:53<?php echo substr( date("O"), 0, -2).':00'; ?></lastmod>
</
url>


<!-- Затваряме основния елемент на XML потока -->
</urlset>


<!-- край на файла -->


В заключение

С наученото от този пример ще можете да генерирате динамично Sitemap XML за всеки сайт,

но наистина е добре да се запознаете по-основно с видовете и форматите на Sitemap файловете на адрес:

https://www.google.com/webmasters/tools/docs/en/protocol.html



Източник:bwebi.com



   


Ключови думи: PHP sitemap xml Google Google sitemap


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

На мен лично ми е все едно къде ще се форматира датата.
Това изобщо не е тема на урока.

  plamenSm на 09.04.2008 00:16

Хубаво е като превеждаш уроци на кубик да преглеждаш и тяхното съдържание и да го пипнеш тук там.
За какво е нужно конвертирането на датата да става във РНР файла? SQL е достатъчно 'кадърен' език да го направи сам

  PureEvil на 08.04.2008 11:44

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008