PHP code example of sergeybruhin / html-sitemap
1. Go to this page and download the library: Download sergeybruhin/html-sitemap library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sergeybruhin / html-sitemap example snippets
php artisan vendor:publish --provider="SergeyBruhin\HtmlSitemap\Providers\HtmlSitemapServiceProvider"
namespace App\Http\Controllers;
use App\Models\Page;
use App\Models\Post;
use Illuminate\Contracts\View\View;
use SergeyBruhin\HtmlSitemap\Dto\HtmlSitemapCategory;
use SergeyBruhin\HtmlSitemap\HtmlSitemap;
class HtmlSitemapController
{
public function __invoke(): View
{
$htmlSitemap = new HtmlSitemap;
$htmlSitemap->addCategory($this->getPagesCategory());
$htmlSitemap->addCategory($this->getPostsCategory());
return view('your-layout-here')
->with('htmlSitemap', $htmlSitemap);
}
private function getPagesCategory(): HtmlSitemapCategory
{
$category = new HtmlSitemapCategory('Pages', route('pages'));
Page::each(function (Page $page) use ($category) {
$category->addLink($page->name, route('page', $page->slug));
});
return $category;
}
private function getPostsCategory(): HtmlSitemapCategory
{
$category = new HtmlSitemapCategory('News', route('posts'));
Post::each(function (Post $post) use ($category) {
$category->addLink($post->name, route('blog.show', $post->slug));
});
return $category;
}
}
namespace App\Services\Sitemap\Handlers;
use App\Models\Post;
use SergeyBruhin\HtmlSitemap\Dto\HtmlSitemapCategory;
use SergeyBruhin\HtmlSitemap\HtmlSitemap;
class GenerateHtmlSitemapHandler
{
public function run(): HtmlSitemap
{
$htmlSitemap = new HtmlSitemap;
$htmlSitemap->addCategory($this->getPostsCategory());
$htmlSitemap->addCategory($this->getPagesCategory());
return $htmlSitemap;
}
private function getPagesCategory(): HtmlSitemapCategory
{
$category = new HtmlSitemapCategory('Pages');
$category->addLink('Resume', route('resume'));
$category->addLink('Crypto', route('crypto'));
$category->addLink('Dashboard', route('dashboard'));
$category->addLink('Privacy Policy', route('privacy-policy'));
$category->addLink('Data Deletion Instruction', route('data-deletion-instruction'));
$category->addLink('Terms', route('terms'));
return $category;
}
private function getPostsCategory(): HtmlSitemapCategory
{
$category = new HtmlSitemapCategory('Blog', route('posts'));
Post::each(function (Post $post) use ($category) {
$category->addLink($post->title, route('posts.show', $post->slug));
});
return $category;
}
}
namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller;
use App\Services\Sitemap\Interfaces\SitemapServiceContract;
class HtmlSitemapController extends Controller
{
public function __invoke(SitemapServiceContract $sitemapService)
{
$htmlSitemap = $sitemapService->generateHtmlSitemap();
return view('frontend.pages.sitemap.master')
->with('htmlSitemap', $htmlSitemap);
}
}
@
Route::get('sitemap', HtmlSitemapController::class)
->middleware('cache.headers:private;max_age=3600;etag')
->name('html-sitemap');