yupe/yupe — pull request #1656 by DarkCs (2014-10-04 12:03:11+00:00)
Title: Модуль sitemap

Модуль, добавляющий возможность автоматической генерации файла sitemap.xml
Поддерживаемые модули и модели из них на данный момент: page (Page), news (News), blog (Blog, Post).
Для добавления нового модуля необходимо в файл https://github.com/DarkCs/yupe/blob/sitemap/protected/modules/sitemap/config/modules.php добавить в массив элемент следующего формата:
```php
'page' => [ // модуль, в котором расположены модели
'Page' => [ // модель
'getUrl' => function ($model) { // функция получения url этой модели, абсолютный url
return $model->getUrl(true);
},
'getDataProvider' => function () { // dataprovider, через который будут извлекаться модели
return new CActiveDataProvider(CActiveRecord::model('page')->published(), []);
},
'getLastMod' => function ($model) { // если есть возможность определять дату последней модификации, то возвращаем её, иначе возвращаем null
return $model->change_date;
},
]
],
```
В базу добавляем дефолтные настройки для модели в модуле:
```php
class m141004_150000_sitemap_model_data_blog_post extends yupe\components\DbMigration
{
public function safeUp()
{
$this->insert("{{sitemap_model}}", ['module' => 'blog', 'model' => 'Blog', 'changefreq' => 'weekly', 'priority' => '0.5', 'status' => 1]);
$this->insert("{{sitemap_model}}", ['module' => 'blog', 'model' => 'Post', 'changefreq' => 'weekly', 'priority' => '0.5', 'status' => 1]);
}

public function safeDown()
{
$this->delete("{{sitemap_model}}", ['module = :module'], [':module' => 'blog']);
}
}
```

Настройка модуля выглядит так:
![](https://qas-shared-assets.s3.amazonaws.com/snaps/iqzu2bsrowasjor)

Модули - это настройка элементов для работы через файлик https://github.com/DarkCs/yupe/blob/sitemap/protected/modules/sitemap/config/modules.php, страницы - произвольный набор ссылок сайта.

Было бы неплохо переделать этот файл в некий массив с ссылками на отдельные классы для работы с определенными модулями, чтобы, например, можно было в своем модуле добавить новый класс в эту настройку модуля sitemap, но текущая реализация конфигурирования модулей не позволяет этого сделать. + вопрос добавления в табличку https://github.com/DarkCs/yupe/blob/sitemap/protected/modules/sitemap/install/migrations/m141003_190000_sitemap_model.php , в которой хранятся настройки для моделей.

В общем, пока как-то так, вопросы, замечания, предложения?