#1716 Creating Google Sitemap for cats

This commit is contained in:
Diatrex 2020-07-15 11:37:48 +03:00
parent 7e9ee41ec1
commit 4a1b008bb0
4 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for category in categories %}
<url>
<loc>{{ url_route('adv_list_seo', [category.slug]) }}</loc>
<lastmod>{{ category.created_at.tz('UTC').toAtomString() }}</lastmod>
<changefreq>weekly</changefreq>
</url>
{% endfor %}
</urlset>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for i in 1..pagesCount %}
<sitemap>
<loc>{{ url('sitemap.xml/categories') }}?page={{ i }}</loc>
</sitemap>
{% endfor %}
</sitemapindex>

View File

@ -58,6 +58,10 @@ class CatsModuleServiceProvider extends AddonServiceProvider
'admin/cats/create' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@create', 'admin/cats/create' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@create',
'admin/cats/edit/{id}' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@edit', 'admin/cats/edit/{id}' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@edit',
'admin/cats/category/delete/{id}' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@delete', 'admin/cats/category/delete/{id}' => 'Visiosoft\CatsModule\Http\Controller\Admin\CategoryController@delete',
// Sitemap
'sitemap.xml' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@index',
'sitemap.xml/categories' => 'Visiosoft\CatsModule\Http\Controller\SitemapController@categories',
]; ];
/** /**

View File

@ -0,0 +1,38 @@
<?php namespace Visiosoft\CatsModule\Http\Controller;
use Anomaly\Streams\Platform\Http\Controller\PublicController;
use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface;
class SitemapController extends PublicController
{
private $categoryRepository;
public function __construct(CategoryRepositoryInterface $categoryRepository)
{
parent::__construct();
$this->categoryRepository = $categoryRepository;
}
public function index()
{
$categoriesCount = $this->categoryRepository->count();
$pagesCount = ceil($categoriesCount / 5000);
return response()->view('visiosoft.module.cats::sitemap.index', [
'pagesCount' => $pagesCount,
])->header('Content-Type', 'text/xml');
}
public function categories()
{
$page = request()->page ?: 1;
$skip = $page - 1;
$categories = $this->categoryRepository->newQuery()->skip(5000 * $skip)->take(5000)->get();
return response()->view('visiosoft.module.cats::sitemap.categories', [
'categories' => $categories,
])->header('Content-Type', 'text/xml');
}
}