Наверх

Карта сайта

Модуль генерирует карту сайта. В карту сайта входят все активные страницы сайта, не отмеченные параметром «Не показывать на карте сайта», а также прикрепленные к страницам сайта активные категории модулей, не помеченные параметром «Не показывать на карте сайта».

Модуль имеет две части: страница сайта, к которой подключается модуль «Карта сайта» и файл для поисковых систем sitemap.xml.

На странице, выводимой пользователем выводятся все страницы сайта, а также категории подключенных модулей, согласно структуры сайта. Можно, также вывести элементы модуля (новости, товары, статьи и пр.). Код, выводящий элементы закомментирован в файле modules/map/map.model.php.

DIAFAN.CMS генерирует также карту сайта для поисковых систем: http://site.ru/sitemap.xml.

Файл sitemap.xml генерируется на лету, физически файл не создается. Он содержит все ссылки, создаваемые системой, кроме ссылок на элементы, помеченные параметром «Не показывать на карте сайта». Для генерирования ссылок модуля необходимо наличие файла modules/модуль/модуль.sitemap.php. Формат файла:

Пример:

<?php
if (! defined('DIAFAN'))
{
    
$path = __FILE__; $i = 0;
    while(!
file_exists($path.'/includes/404.php'))
    {
        if(
$i == 10) exit; $i++;
        
$path = dirname($path);
    }
    include
$path.'/includes/404.php';
}

class
Модуль_sitemap extends Diafan
{
    
/**
    * Возвращает настройки для генерирования карты модуля
    *
    * @param integer $site_id номер страницы сайта
    * @return array
    */
    
public function config($site_id)
    {
        
$result = array(
            
// тип данных – элемент, категория
            
'type' => array('element', 'category'),
            
// условия для выборки
            
'where' =>
            array(
                
// для типа «элемент»
                
'element' => "AND map_no_show='0'",
                
// для типа «категория»
                
'category' => "AND map_no_show='0'",
            )
        );
        return
$result;
    }
}

Модуль индексирует ссылки, создаваемые модулями. Индекс обновляется в трех случаях:

  • установка модуля «Карта сайта», сайт индексируется при первом открытии файла sitemap.xml
  • установка модуля, индексируется весь устанавливаемый модуль
  • редактирование элементов модуля, индексируются/удаляются из индекса отредактированные элементы

Для полной переиндексации сайта переустановите модуль «Карта сайта» в разделе «Модули и БД».

Согласно стандарту файл sitemap.xml может быть разбит на несколько файлов. Количество ссылок в одном файле задается свойством private $max_url = 5000; в файле modules/map/map.sitemap.php.

Подключение

Подключаемая часть – файл modules/map/map.inc.php. В нем описан класс Map_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_map. Экземпляр класса создается при первом вызове переменной.

Методы

void index_all () – Индексирует весь сайт.

Пример:

// индексирует все ссылки на сайте для файла sitemap.xml
$this->diafan->_map->index_all();

void index_module (string $module_name) – Индексирует модуль.

  • string $module_name: название модуля

Пример:

// индексирует модуль «Интернет магазин» для файла sitemap.xml
$this->diafan->_map->index_module('shop');

void index_site_module (array $row, [boolean $out = true]) – Индексирует страницы модуля, прикрепленного к странице сайта.

  • array $row: данные о странице сайта
  • boolean $out: функция используется как внешняя

Пример:

$row = array(
    
"id" => 13,
    
"module_name" => "shop",
    
"timeedit" => 1398851484,
    
"changefreq" => "always",
    
"priority" => 0,
);
// индексирует страницу с прикрепленным модулем для файла sitemap.xml
$this->diafan->_map->index_site_module($row);

void index_elements (array $rows) – Индексирует группу элементов.

  • array $rows: массив данных об индексируемых элементах

Пример:

$rows = array(
    array(
        
"id" => 1,
        
"element_type" => "element",
        
"module_name" => "shop",
        
"site_id" => 13,
        
"timeedit" => 1398851484,
        
"changefreq" => "always",
        
"priority" => 0,
    ),
    array(
        
"id" => 2,
        
"element_type" => "element",
        
"module_name" => "shop",
        
"site_id" => 13,
        
"timeedit" => 1398851485,
        
"changefreq" => "always",
        
"priority" => 0,
    ),
);
// индексирует несколько товаров для файла sitemap.xml
$this->diafan->_map->index_elements($rows);

void index_element (array $row) – Индексирует один элемент.

  • array $row: данные об индексируемом элементе

Пример:

$row = array(
    
"id" => 1,
    
"element_type" => "element",
    
"module_name" => "shop",
    
"site_id" => 13,
    
"timeedit" => 1398851484,
    
"changefreq" => "always",
    
"priority" => 0,
);
// индексирует товар для файла sitemap.xml
$this->diafan->_map->index_element($row);

void delete (integer|array $element_ids, string $module_name, [string $element_type = 'element']) – Удаляет один или несколько элементов из индекса.

  • integer|array $element_ids: номер одного или нескольких элементов
  • string $module_name: название модуля
  • string $element_type: тип данных

Пример:

// удаляет производителя товаров из индекса для файла sitemap.xml
$this->diafan->_map->delete(2, "shop", "brand");

void delete_module (string $module_name) – Удаляет весь индекс модуля.

  • string $module_name: название модуля

Пример:

// удаляет все ссылки модуля «Новости» из файла sitemap.xml
$this->diafan->_map->delete_module("news");

void delete_sites (array $site_ids) – Удаляет индекс модулей, прикрепленных к страницам сайта.

  • array $site_ids: идентификаторы страниц сайта

Пример:

// удаляет все ссылки модулей, прикрепленных к старницам сайта ID 3, 4, 6 из файла sitemap.xml
$this->diafan->_map->delete_sites(array(3, 4, 6));

База данных

{map_index} – Индекс для файла sitemap.xml

Файлы

  1. modules/map/admin/map.admin.inc.php – подключение модуля к административной части других модулей;

  2. modules/map/js/map.tiny.js – подгружает карту сайта в визуальном редакторе, JS-сценарий;

  3. modules/map/map.php – контроллер;

  4. modules/map/map.inc.php – подключение модуля;

  5. modules/map/map.install.php – установка модуля;

  6. modules/map/map.model.php – модель;

  7. modules/map/map.sitemap.php – карта сайта в XML формате;

  8. modules/map/map.tiny.php – плагин карты сайта для визуального редактора;

  9. modules/map/views/map.view.list.php – шаблон списка страниц в карте сайте.

Ваши комментарии и дополнения

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.