search($category, $filter);
if (!empty( $productProvider->models )) {
return true;
} else {
return false;
}
}
public function getAddStatic()
{
return [
'https://dev.extremstyle.ua/ru',
];
}
public function getVariants()
{
return ProductVariant::find()
->with('lang')
->with('product.lang')
->batch(1000);
}
public function getSeoLinks()
{
return Seo::find()
->where([ 'meta' => '' ])
->all();
}
public function getStaticPages()
{
return Page::find()
->with('lang')
->all();
}
public function getCategories()
{
return Category::find()
->with('lang')
->all();
}
public function getCategoriesWithFilters()
{
return Category::find()
->with('lang')
->joinWith('taxGroups.lang')
->with('taxGroups.taxOptions.lang')
->where(['tax_group.meta_robots' => '',])
->all();
}
public function getBrands()
{
return Brand::find()
->joinWith('lang')
->all();
}
/**
* @param $category Category;
*
* @return mixed
*/
public function getFilters($category)
{
return $category->getActiveFilters()
->andWhere(
[
'tax_group.meta_robots' => '',
]
)
->all();
}
public function checkUrl($url)
{
if (!in_array($url, $this->urlList)) {
$this->urlList[] = $url;
return true;
} else {
return false;
}
}
public function createRow($url, $priority, &$content)
{
if ($this->checkUrl($url)) {
print $this->count++ . $url . "\n";
$content .= '' . '' . $url . '' . '' . date(
'Y-m-d'
) . '' . 'Weekly' . '' . $priority . '' . '';
}
}
public function actionProcess()
{
$config = ArrayHelper::merge(
require( \Yii::getAlias('@frontend/config/') . 'main.php' ),
require( \Yii::getAlias('@common/config/') . 'main.php' )
);
Yii::$app->urlManager->addRules($config[ 'components' ][ 'urlManager' ][ 'rules' ]);
$dirName = Yii::getAlias('@frontend') . '/web';
$filename = 'test_sitemap.xml';
setlocale(LC_ALL, 'ru_RU.CP1251');
$handle = fopen($dirName . '/' . $filename, "w");
$content = '';
foreach ($this->getAddStatic() as $page) {
$this->createRow($page, 1, $content);
}
foreach ($this->getStaticPages() as $page) {
$url = Url::to(
[
'site/page',
'slug' => $page->lang->alias,
]
);
$this->createRow($url, 1, $content);
}
foreach ($this->getCategories() as $category) {
$url = Url::to(
[
'catalog/category',
'category' => $category->lang->alias,
]
);
$this->createRow($url, 0.8, $content);
}
foreach ($this->getVariants() as $rows) {
foreach ($rows as $row) {
$url = Url::to(
[
'catalog/product',
'product' => $row->product->lang->alias,
'variant' => $row->sku,
]
);
$this->createRow($url, 0.9, $content);
}
}
foreach ($this->getBrands() as $brand) {
$url = Url::to(
[
'brand/view',
'slug' => $brand->lang->alias,
]
);
$this->createRow($url, 0.7, $content);
}
foreach ($this->getCategoriesWithFilters() as $category) {
foreach ($category->taxGroups as $group) {
foreach ($group->taxOptions as $option) {
$url = Url::to(
[
'catalog/category',
'category' => $category,
'filters' => [ $group->lang->alias => [ $option->lang->alias ] ],
]
);
$this->createRow($url, 0.8, $content);
}
}
}
foreach ($this->getSeoLinks() as $link) {
$url = Yii::$app->urlManager->baseUrl . $link->url;
$this->createRow($url, 0.7, $content);
}
// foreach ($this->getCategories() as $category) {
// foreach ($this->getFilters($category) as $filter1) {
// foreach ($this->getFilters($category) as $filter2) {
// if ($this->checkFilter(
// $category,
// [
// $filter1[ 'group_alias' ] => [ $filter1[ 'option_alias' ] ],
// $filter2[ 'group_alias' ] => [ $filter2[ 'option_alias' ] ],
// ]
// )
// ) {
// $url = Url::to(
// [
// 'catalog/category',
// 'category' => $category,
// 'filters' => [
// $filter1[ 'group_alias' ] => [ $filter1[ 'option_alias' ] ],
// $filter2[ 'group_alias' ] => [ $filter2[ 'option_alias' ] ],
// ],
// ]
// );
// $this->createRow($url, 0.7, $content);
// }
//
// }
//
// foreach ($this->getBrands($category) as $brand) {
// if ($this->checkFilter(
// $category,
// [
// 'brands' => [ $brand->id ],
// $filter1[ 'group_alias' ] => [ $filter1[ 'option_alias' ] ],
// ]
// )
// ) {
// $url = Url::to(
// [
// 'catalog/category',
// 'category' => $category,
// 'filters' => [
// 'brands' => [ $brand->alias ],
// $filter1[ 'group_alias' ] => [ $filter1[ 'option_alias' ] ],
// ],
// ]
// );
// $this->createRow($url, 0.7, $content);
// }
//
// }
// }
// }
$content .= '';
fwrite($handle, $content);
fclose($handle);
print $dirName . '/' . $filename;
}
}