Все достаточно прозрачно. Для примера возьмем файл plugins.php от модуля static. (Сам файл plugins.php необходимо подключить в интерфейсе управления модулем Админка -> Управление модулями -> Правка модуля -> файл плагина).
Интересующие нас строки:
static $abilities=array(
'sitemap',
);
Это ознчает, что модуль может генерировать карту сайта.
public function DoSitemap($per_time,$sdata)
{
if(!$sdata)
$sdata=array('offset'=>0);
$this->Mainclass->LoadOptions('module_static',false);
$result=$this->Mainclass->Db->Query('SELECT `url` FROM `f_static` LIMIT '.$sdata['offset'].','.$per_time,__file__,__line__);
$sdata['offset']+=$this->Mainclass->Db->Num_rows();
$this->Url=&$this->Mainclass->SUrl;
while($arr=$this->Mainclass->Db->Fetch_assoc($result))
Sitemap($this->Mainclass->SUrl->ConstructUrl(array('doc'=>$arr['url'])),'','monthly',0.5);
return $sdata;
}
Сама функция генерации карты сайта. Поясню детали. Функция получает на входе два параметра: $per_time - сколько ссылок разрешено сгенерировать за один вызов функции (после того, скрипт самоперезагружается и функция вызывается еще раз). $sdata - данные, возвращенные этой же функцией прошлый раз (зачем это надо, лучше всего посмотреть в модулях новости и файлы). Функция должна вызвать Sitemap() с тремя параметрами: ссылка, скорость обновления информации поисковиками, приоритет. Если функция ни раз не вызывала Sitemap(), считается, что все возможные URL уже сгенерированы и управление передается следующему модулю.