Cara membuat sitemap di laravel tanpa package

Cara membuat sitemap di laravel tanpa package

Assalamu’alaikum wr wb,

Pada kesempatan kali ini saya ingin mencoba menulis langkah-langkah tentang bagaimana cara membuat sitemap pada laravel tanpa menggunakan package/liblary tambahan, jadi kita akan membuatnya secara manual. Sitemap ini biasanya digunakan untuk mempermudah mesin pencari melakukan indexing untuk halaman web / blog kita.

Di sini Saya akan memberikan 2 contoh sitemap. yang pertama adalah 1 sitemap untuk semua post dan yang ke-2 adalah sitemap yang dipisahkan berdasarkan kategori post. Saya asumsikan kita sudah memiliki tabel post dan route untuk menampilkan detail postingannya.

Sitemap Untuk Semua Post

Pertama kita mulai dengan yang paling simpel dulu siapkan routesnya seperti berikut di routes/web.php

Route::get('/sitemap.xml', 'SitemapController@index')->name('sitemap');

Kemudian buat controller app/Http/Controllers/SitemapController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post;

class SitemapController extends Controller
{
    public function index()
    {
    	$posts = Post::latest()->get();

        return response()->view('sitemap.index', compact('posts'))
                        ->header('Content-Type', 'text/xml');
    }
}

dan kemudian kita buat file bladenya di direktori resources/views/sitemap/index.blade.php

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  @foreach ($posts as $post)
    <url>
      <loc>{{ route('post.show', $post->slug ) }}</loc>
      <lastmod>{{ $post->updated_at->format('Y-m-d H:i:s') }}</lastmod>
      <changefreq>weekly</changefreq>
      <priority>0.6</priority>
    </url>
  @endforeach
</urlset>

Selesai sudah sampai disini cara membuat sitemap laravel tanpa package untuk contoh pertama, mudah bukan? mari kira lanjut

Sitemap Per Kategori Post

Contoh ke-2 ini tidak kalah simpelnya dengan yang pertama, mari kita mulai dengan file routes/web.php

Route::get('/sitemap.xml', 'SitemapController@index')->name('sitemap');
Route::get('/sitemap-{category}.xml', 'SitemapController@category')->name('sitemap.category');

Kemudian seperti biasa kita buat controllernya app/Http/Controllers/SitemapController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\{Post, Category};

class SitemapController extends Controller
{
    public function index()
    {
    	$categories = Category::get();

        return response()->view('sitemap.index', compact('categories'))
                        ->header('Content-Type', 'text/xml');
    }

    public function category($category)
    {
        $category = Category::where('name', $category)->first();
    	$posts = Post::where('category_id', $category->id)->latest()->get();
        // Ini jika 1 post hanya punya 1 category, jika 1 post banyak category silahkan disesuaikan

        return response()->view('sitemap.category', compact('posts'))
                        ->header('Content-Type', 'text/xml');
    }
}

Kali ini kita akan membuat 2 file blade yang pertama adalah untuk index yang akan berisi url sitemap category resources/views/sitemap/index.blade.php

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
  <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
@foreach($categories as $category)
    <sitemap>
      <loc>{{ route('sitemap.category', $category->name) }}</loc>
      <lastmod>{{ $category->updated_at->format('Y-m-d H:i:s') }}</lastmod>
    </sitemap>
@endforeach
  </sitemapindex>

dan kemudian yang berikutnya menampilkan list post per category resources/views/sitemap/category.blade.php

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  @foreach ($posts as $post)
    <url>
      <loc>{{ route('post.show', $post->slug ) }}</loc>
      <lastmod>{{ $post->updated_at->format('Y-m-d H:i:s') }}</lastmod>
      <changefreq>weekly</changefreq>
      <priority>0.6</priority>
    </url>
  @endforeach
</urlset>

Selesai sudah sitemap sudah berhasil dibuat, Anda bisa mengaksesnya di http://urlanda.com/sitemap.xml dan sudah bisa didaftarkan ke webmaster tentunya. Mudah bukan untuk membuat sitemap sederhana tidak memerlukan package. Tentu saja Anda bisa memodifikasi kodingan diatas menjadi lebih baik, yang penting konsep dasarnya adalah seperti itu.

Sekian tutorial kali ini semoga bermanfaat, jika ada kesalahan silahkan tinggalkan komentar dibawah agar bisa Saya perbaiki. Akhir kata wassalamu’alaikum wr wb.. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *