Share
Dalam artikel ini, kita akan belajar bagaimana mengimplementasikan Laravel Sitemap untuk menggenerasi sitemap pada project kita.
Tetapi, bukan berarti tanpa package ini tidak bisa dibuat manual ya, hanya saja package ini mempermudah kita saja.
Yang pertama kali kita akan install terlebih dahulu package nya.
composer require spatie/laravel-sitemap
bashCopy
Publish konfigurasi
php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=sitemap-config
bashCopy
Kemudian harusnya dia akan membuatkan file tepat pada config/sitemap.php
. Nah setelah itu, untuk menggunakan api nya cukup simpel, hanya perlu menjalankan code ini:
use Spatie\Sitemap\SitemapGenerator; SitemapGenerator::create('https://parsinta.com/')->writeToFile(public_path('sitemap.xml'));
phpCopy
Tetapi, jika Anda ingin lebih rapi, maka Anda bisa buat satu Command
yang kerja nya untuk menjalankan kode itu. Untuk itu, mari kita buat langsung.
php artisan make:command GenerateSitemap
bashCopy
Setelah itu, silahkan buka filenya, pada app/Console/Commands/GenerateSitemap.php
use Illuminate\Console\Command; use Spatie\Sitemap\SitemapGenerator; class GenerateSitemap extends Command { protected $signature = 'sitemap:generate'; protected $description = 'Generating the sitemap for the site'; public function handle() { SitemapGenerator::create('https://parsinta.com/')->writeToFile(public_path('sitemap.xml')); $this->info('The sitemap has been generated'); } }
phpCopy
Setelah itu, kita bisa trigger dia dari terminal dengan cara
php artisan sitemap:generate
bashCopy
Jika tidak ada yang salah, harusnya sekarang pada folder public
sudah ada file yang namanya sitemap.xml
yang isinya kurang lebih seperti ini:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>https://parsinta.com/</loc> <lastmod>2022-04-04T23:48:19+07:00</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> <url> <loc>https://parsinta.com/series</loc> <lastmod>2022-04-04T23:48:19+07:00</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> ...
xmlCopy
Baik, sekarang mungkin Anda berfikir, jika di production, apa kita harus secara manual menjalankan sitemap generate ini pada terminal. Behind the scene ia, tapi kita tidak akan ngetikkan itu secara manual dong, dan setiap update masak kita harus trigger. Nah dalam case ini, Anda bisa menggunakan yang namanya scheduler
.
Perhatikan pada directory app/Console
, pastinya ada file nya Kernel.php
, nah didalam method schedule
Anda bisa tambahkan command
yang kita buat tadi seperti:
protected function schedule(Schedule $schedule) { $schedule->command('sitemap:generate')->daily(); }
phpCopy
Maka selanjutnya, jika Anda list schedulenya, harusnya sudah pasti ada untuk sitemap ini.
php artisan schedule:list ... 0 0 * * * php artisan sitemap:generate
bashCopy
Selanjutnya, Anda bisa menyuruh Supervisor untuk menjalankan command tersebut. Dan pastinya, jika menggunakan Laravel forge maka untuk menjalankan ini akan sangat mudah.
Semoga artikel ini bermanfaat. dan sampai jumpa di artikel selanjutnya.