Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Как создать карту сайта на PHP


Для того, чтобы ваш сайт правильно индексировался поисковыми системами, вам необходима карта сайта. Карта сайта обычно представлена в виде файла sitemap.xml, который содержит список ссылок на те страницы сайта, которые нужно добавить в поиск гугла и яндекса.

Формат файла sitemap.xml предполагает наличие полного адреса страницы (с http или https), дату изменения страницы, и важность страницы (приоритет индексации). Помимо этого, могут быть также дополнительные параметры, но они не особо важны для поисковых пауков.

Для различных CMS существуют плагины, которые автоматически создают файл sitemap.xml. Но если ваш сайт создан с нуля на PHP или использует самописный движок, то создание карты сайта - забота которая ложится на плечи веб-программиста. Давайте создадим скрипт на PHP который будет формировать красивую и современную карту сайта в валидном формате, с использованием xsl стилей.

Предположим что у нас имеется сайт-блог, в котором есть таблица базы данных под названием blog. Каждый элемент этой таблицы представляет собой запись в блог, и содержит такие поля как pageurl и pagedate. В вашем конкретном случае название и количество таблиц, и полей БД может быть другим, но общий принцип создания карты сайта такой же.

Наш скрипт должен срабатывать в следующих случаях

  • Когда пользователь добавляет новую запись в блог
  • Когда пользователь удаляет запись из блога
  • Когда пользователь редактирует запись (при этом в изменяемой записи БД должно меняться поле pagedate)

Проще всего создать отдельный скрипт, обновляющий файл sitemap.xml и заинклудить его в соответствующие части кода, отвечающие за вышеуказанные действия пользователя.

Нам понадобится файл стилей sitemap.xsl и собственно сам скрипт smap.php который нужно подключить инклудом в места кода где добавляются, удаляются, или изменяются страницы сайта.

Ниже я приведу листинг файла smap.php

<?php
$siteurl = 'http://mysite.ru';
$link = mysqli_connect('localhost', 'dblogin', 'dbpassword', 'dbname');
$sitemap = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="sitemap.xsl"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
$r = mysqli_query($link, 'SET NAMES utf8');
if ($result = mysqli_query($link, 'SELECT * FROM blog')) {
    $sitemap .= '<url><loc>' . $siteurl . '</loc><changefreq>daily</changefreq><priority>1.0</priority><lastmod>' . date("Y-m-d") . '</lastmod></url>';
    while ($row = mysqli_fetch_assoc($result)) {
        $sitemap .= '<url><loc>' . $siteurl . '/' . $row['pageurl'] . '/</loc><lastmod>' . $row['pagedate'] . '</lastmod><priority>0.9</priority></url>';
    };
    mysqli_free_result($result);
}
mysqli_close($link);
$sitemap .= "</urlset>";
$file = "sitemap.xml";
$fp = fopen($file, "w");
fwrite($fp, $sitemap);
fclose($fp);
?>

Как видим, в начале скрипт формирует ссылку на главную страницу сайта, а потом в цикле проходит по таблице blog из базы данных, и добавляет в sitemap.xml записи соответствующие записям в блоге.

Если у вас несколько статичных разделов - вроде страниц "О компании", "Контакты" и других, их нужно также добавить в sitemap.xml до того как начнут перебираться в цикле страницы таблиц базы данных. Если на сайте несколько таблиц, а не одна как в случае с нашим гипотетическим блогом, то в скрипт нужно добавить соответствующие количество циклов проходов по этим таблицам.

В итоге у нас формируется валидный и красивый sitemap.xml с подключенным файлом стилей sitemap.xsl. Выглядит всё это примерно так:

Все исходники вы можете скачать здесь

Материал подготовлен автором @pythono

91
15.096 GOLOS
На Golos с August 2017
Комментарии (2)
Сортировать по:
Сначала старые