Cara Membuat Sitemap Dinamis Di Laravel 8

Cara Membuat Sitemap Dinamis Di Laravel 8

Admin
Admin・ 13 Desember 2020
6 min read ・ 5720 views

Sitemap Laravel - Sitemap merupakan file yang digunakan untuk memberikan informasi tentang halaman, video dan file-file yang lain yang ada di suatu situs website. Mesin pencari seperti Google membaca file sitemap untuk meng-crawl situs secara lebih efektif. Peta situs memberi tahu Google tentang halaman mana saja yang dianggap penting di suatu situs web.

Di artikel ini kita akan sama-sama belajar bagaimana cara membuat sitemap dinamis di laravel 8 menggunakan package dari spatie.be sehingga kita tidak perlu lagi update manual sitemap menggunakan sitemap generator. Baiklah kita akan memulai percobaan dengan install projek laravel baru dan seterusnya.

Langkah-langkah:

1. Install project laravel 8 baru.

Untuk membuat project laravel dengan laravel versi terbaru, silahkan buka terminal dan masuk ke direktori dimana Anda ingin install project laravel tersebut. Kemudian install laravel dengan command composer create-project laravel/laravel sitemap. Dengan command tersebut kita akan dibuatkan project laravel baru dengan nama project sitemap.

2. Buat database baru di phpMyAdmin dengan nama terserah Anda (di percobaan ini, saya membuat database dengan nama sitemap).

3. Sesuaikan DB_DATABASE dengan nama database yang baru dibuat di langkah nomor 2.

4. Buat file model dan migration Post dengan command php artisan make:model Post -m.

5. Buka file 2021_01_05_012027_create_posts_table.php atau file migration yang telah dibuat dengan command pada langkah nomor 4. Edit script di file tersebut menjadi seperti di bawah ini.

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('slug');
            $table->longText('body');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

5. Jalankan command php artisan migrate untuk membuat table atau migrasi file migration di folder database>migration ke database phpMyAdmin.

6. Buat file factory untuk membuat data dummy dengan command php artisan make:factory PostFactory -m Post

7. Buka file PostFactory di dalam folder database>factory, kemudian edit script di file tersebut menjadi seperti di bawah ini.

<?php
namespace Database\Factories;
use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class PostFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Post::class;
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        $title = $this->faker->sentence;
        $slug = Str::slug($title);
        return [
            'title' => $title,
            'slug'  => $slug,
            'body'  => $this->faker->paragraph(10) 
        ];
    }
}

insert data sitemap dengan tinker di laravel

8. Selanjutnya buka terminal lagi dan jalankan command php artisan tinker. Kemudian jalankan command App\Models\Post::factory()->count(10)->create(); untuk membuat data dummy sebanyak 10 data.

9. Install package spatie laravel sitemap dengan menjalankan command composer require spatie/laravel-sitemap di terminal.

10. Jalankan command php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=config untuk menyalin file sitemap.php ke dalam folder config.

11. Buka file web.php yang terdapat di folder routes. Kemudian edit script di file tersebut menjadi seperti di bawah ini.

<?php
use Illuminate\Support\Facades\Route;
use App\Models\Post;
use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
    return view('welcome');
});
Route::get('/sitemap', function(){
    $sitemap = Sitemap::create()
    ->add(Url::create('/about-us'))
    ->add(Url::create('/contact_us'));
   
    $post = Post::all();
    foreach ($post as $post) {
        $sitemap->add(Url::create("/post/{$post->slug}"));
    }
    $sitemap->writeToFile(public_path('sitemap.xml'));
}); 

12. Sekarang jalankan php artisan serve kemudian akses ke url example.test/sitemap atau 127.0.0.1:8000/sitemap maka ketika kita cek di dalam folder public terdapat file baru dengan nama sitemap.xml

sitemap dinamis dengan laravel

Gambar di atas merupakan tampilan file sitemap.xml yang telah berhasil dibuat dengan menggunakan package dari spatie.

Sekian artikel kali ini mengenai cara membuat file sitemap.xml dengan package dari spatie laravel sitemap.

Tinggalkan Komentar
Loading Comments