andriajah Thu Jun 2022 1 year ago

Cara Membuat Sitemap XML di Laravel 9

Hari ini, cara generate sitemap di laravel 9 adalah topik utama kami. Saya akan menunjukkan kepada Anda tentang cara membuat peta situs xml dinamis di laravel 9. Anda akan mempelajari xml peta situs laravel 9. Saya ingin berbagi dengan Anda laravel 9 sitemap menghasilkan dinamis. Anda hanya perlu melakukan beberapa langkah untuk membuat file sitemap laravel 9.

Peta situs adalah File XML yang memiliki daftar URL situs web Anda. Anda dapat mengirimkan file peta situs ke alat webmaster untuk menginformasikan mesin pencari. Jadi Sitemap sangat penting untuk setiap SEO website.

Dalam contoh ini, kita akan membuat tabel posting dengan judul, slug, dan badan. Kemudian kita akan membuat pabrik untuk posting dummy. Kemudian setelah itu kami akan menghasilkan file XML dan mencantumkan semua URL untuk posting. Ini adalah contoh yang sangat mendasar. jadi mari kita ikuti dan Anda akan mendapatkan file peta situs untuk situs web Anda dan mengirimkannya ke alat webmaster.

Mari ikuti langkah-langkah di bawah ini:

Langkah 1: Install Laravel

Langkah ini tidak diperlukan; namun, jika Anda belum membuat aplikasi laravel, Anda dapat melanjutkan dan menjalankan perintah di bawah ini:

composer create-project laravel/laravel example-app

Langkah 2: Buat Post Migration dan Model

Pada langkah ini, kita akan membuat migrasi dan model. Jadi mari kita jalankan perintah di bawah ini untuk membuat tabel posts.

php artisan make:migration create_posts_table

Selanjutnya, perbarui kode di bawah ini ke file migration.

database/migrations/create_posts_table.php

<?php
  
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
  
return new class 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->text('body');
            $table->timestamps();
        });
    }
  
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
};

Kemudian jalankan migrasi baru yang dibuat dengan perintah di bawah ini:

php artisan migrate

Sekarang, jalankan perintah di bawah ini untuk membuat model Post.

php artisan make:model Post

Kemudian perbarui kode berikut ke model Post.

app/Models/Post.php

<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
  
class Post extends Model
{
    use HasFactory;
  
    protected $fillable = [
        'title', 'slug', 'body'
    ];
}

Langkah 3: Buat Post Factory

Pada langkah ini, kita akan membuat class Post factory dan menghasilkan dummy record menggunakan perintah tinker. jadi mari kita jalankan perintah di bawah ini untuk membuat post factory.

php artisan make:factory PostFactory

Selanjutnya, salin kode di bawah ini dan perbarui file PostFactory.php.

database/factories/PostFactory.php

<?php
  
namespace Database\Factories;
  
use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\Post;
use Illuminate\Support\Str;
  
/**
 * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Post>
 */
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()
    {
        return [
            'title' => $this->faker->text(),
            'slug' => Str::slug($this->faker->text()),
            'body' => $this->faker->paragraph()
        ];
    }
}

 

Kemudian jalankan perintah tinker dan buat posts dummy.

php artisan tinker
    
App\Models\Post::factory()->count(30)->create();

Langkah 4: Buat Route

Pada langkah ini, kita akan membuat satu route sitemap.xml . jadi mari kita tambahkan.

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\SitemapController;
   
/*
|--------------------------------------------------------------------------
| 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('sitemap.xml', [SitemapController::class, 'index']);

Langkah 5: Buat Controller

Pada langkah ini, kita harus membuat controller baru sebagai SitemapController dengan index(). kita akan mendapatkan semua posting dan lolos ke file blade. kami akan mengembalikan respons sebagai file xml. jadi mari perbarui kode ikuti:

app/Http/Controllers/SitemapController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Models\Post;
  
class SitemapController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index($value='')
    {
        $posts = Post::latest()->get();
  
        return response()->view('sitemap', [
            'posts' => $posts
        ])->header('Content-Type', 'text/xml');
    }
}

Langkah 6: Buat View File

Pada langkah terakhir, mari kita buat sitemap.blade.php untuk menampilkan semua posting dan masukkan kode berikut:

resources/views/sitemap.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>{{ url('/') }}/post/{{ $post->slug }}</loc>
            <lastmod>{{ $post->created_at->tz('UTC')->toAtomString() }}</lastmod>
            <changefreq>daily</changefreq>
            <priority>0.8</priority>
        </url>
    @endforeach
</urlset>

Jalankan Aplikasi Laravel:

Semua langkah yang diperlukan telah dilakukan, sekarang Anda harus mengetikkan perintah yang diberikan di bawah ini dan tekan enter untuk menjalankan aplikasi Laravel:

php artisan serve

Sekarang, Buka browser web Anda, ketik URL yang diberikan dan lihat output aplikasi:

http://localhost:8000/sitemap.xml

Keluaran:

laravel laravel 9 laravel generate sitemap xml example laravel tutorial