Делаем XML карту для сайта

22 августа 2014 Антон Кулешов 1276 0

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

Реклама

Для начала давайте рассмотрим, какие у нас есть варианты создания XML карты, вот несколько из них:

  1. Использовать различные XML карт генераторы, которые можно найти в интернете;
  2. Написать скрипт, который непосредственно будет работать c XML файлом и изменять его структуру при добавлении контента на сайт;
  3. Третий вариант написать обработчик, который будет эмитировать XML файл.

Возможно, есть и другие варианты, но эти мне пришли сразу на ум. В этой же статье пойдёт речь о третьем способе. Для реализации, которого нам потребуется для начала добавить пару строк в htaccess, если он есть, или создать.

RewriteEngine on
RewriteRule ^sitemap.xml?$ sitemap.php [L,QSA]

Эти два правила и будут выполнять первую часть способа, а именно эмитировать XML документ. RewriteEngine включает механизм преобразования на сервере, вторая строчка задает правило этого преобразования. Фактически когда приходит запрос на XML файл, идет выполнение PHP скрипта, который и выдает нам нужные ссылки для карты в XML формате.

Именно такой принцип, по моему мнению, очень удобен. Используя его, мы можем для каждого поискового робота сделать свою XML карту, немного изменив скрипт.

Теперь приступим к написанию самого обработчика:

// Подключаемся к БД
$db = new mysqli("localhost", "root", "", "db");
$db->set_charset("utf8");
if($db->connect_error){
	echo "<div style='color: red;'>ERROR БД</div>";
	exit;
}

// Вытягиваем нужные данные
$result = $db->query("SELECT id FROM articles");
$row = array();
for($i = 0; $i < $result->num_rows; $i++){
	$row[] = $result->fetch_assoc();
}

// Генерируем XML Карту
header("Content-type: text/xml; charset=UTF-8");

echo('<?xml version="1.0" encoding="UTF-8"?>'."\n");
echo('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n");
	echo("\t<url>\n");
	echo("\t\t<loc>http://mysite.ru</loc>\n");
	echo("\t</url>\n");
	// Ссылки
	foreach($row as $r){
		$url = 'http://mysite.ru/article/id/'.$r['id'];
		echo("\t<url>\n");
		echo("\t\t<loc>$url</loc>\n");
		echo("\t</url>\n");
	}
echo('</urlset>'."\n");

Визуально скрипт делиться на три части: подключение к БД, вытягивание данных (в примере - id статей) и генерация XML файла. В этом скрипте я использовал минимум необходимого кода, поэтому, если вам понравился способ, нужно будет изменить всего пару строк.

В результате мы получим вот такую картину, если обратиться непосредственно к XML файлу.

vyvod-xml-karty

Вот и всё, карта сайта готова.

Реклама
Комментариев еще не оставлено
no_avatar
Читайте далее

Как сделать вкладки-табы для сайта на jQuery

30 января 2015 Антон Кулешов

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

Эффект зеркального отражения

7 октября 2015 Антон Кулешов

Недавно я писал об 3D слайдере (ссылка ниже) и для его работы использовался маленький jQuery плагин reflection – этот скрипт позволяет добавить зеркальное отражение у картинки. Это довольно интересное решение, которое стоит добавить в копилку falbar. Полезность скрипта трудно переоценить: да, если вы прикрутили себе слайдер с пятью изображениями, то картинки можно подготовить и заранее в фотошопе, но если мы подгружаем новые картинки динамически или рандомной выборкой из, скажем, трех-четырех тысяч товаров нашего интернет магазина? Да, работа контент-менеджера встанет в копеечку, и скорее всего вы откажетесь от использования эффекта отражения в своем проекте.

Плавный скроллинг и плавающее меню

30 августа 2014 Антон Кулешов

На некоторых сайтах можно увидеть такое явление как плавный скроллинг при нажатии на пункты меню, особенно это любят делать на страницах захвата. Это возможность позволяет быстро перемещаться между основными блоками контента.