Cara Membuat Sitemap Untuk Blog dengan CodeIgniter

Posted by Rinaldi Pratama Putra on September 23, 2020

Apa Itu Sitemap? dan Apa gunanya untuk Blog kita?

Berdasarkan sumber yang saya baca, yaitu Wikipedia, Sitemap merupakan suatu peta situs yang dapat membantu para Webmaster, jadi webmaster itu adalah orang yang bertanggung jawab dalam mengelola dan memelihara satu atau lebih website. Biasanya webmaster berkaitan dengan web developers (pengembang situs web seperti programmer), site authors (penulis situs web), website administrators (pengurus situs web), website owners (pemilik situs web), website coordinators (pengatur situs web), atau website publishers (penerbit situs web).

Sitemap dapat membantu para webmaster tersebut dalam memperkenalkan apa saja isi konten yang ada pada situs web mereka. Sitemap perlu didaftarkan ke situs Google Search Console dalam format file .xml yang berguna agar Google tahu bahwa apa saja konten yang tersedia dalam sitemap tersebut dan mencocokkannya dengan URL di index pencarian yang ada di mesin pencari Google.

Tutorial ini merupakan update dari website Ilmu Coding, karena ada beberapa format seperti tag urlset  dan tanggal yang tidak sesuai di Google Search Console. Baiklah langsung saja, dalam tutorial kali ini saya menggunakan CodeIgniter versi 3.1.11 jadi diusahakan untuk menggunakan versi 3.1.x ke atas dan bukan versi 4.0.4 karena beda cara lagi nantinya. Jika belum ada, silahkan download di situs resminya.

Langkah 1: Buat Database Baru

Silahkan buat database dengan nama db_blog. Untuk nama database bisa kamu sesuaikan atau kalau mau mengikuti tutorial ini disamakan aja namanya. Karena tutorial ini menggunakan server localhost, maka untuk web servernya bisa dengan xampp kalau untuk Windows atau wampp kalau Linux, disesuaikanlah ya hehe.

Langkah 2: Buat Tabel dengan Nama artikel

Setelah selesai membuat database, selanjutnya buat tabel artikel di dalam database db_blog yang sudah dibuat tadi. Kemudian untuk membuat tabel artikel bisa dengan mengetikkan (copas juga boleh :D) script SQL di bawah ini.

CREATE TABLE `db_blog`.`artikel` (
`a_id` INT NOT NULL AUTO_INCREMENT , 
`a_tanggal` DATE NOT NULL , 
`a_judul` VARCHAR(100) NOT NULL , 
`a_slug` VARCHAR(100) NOT NULL , 
PRIMARY KEY (`a_id`)) ENGINE = InnoDB;

Kemudian tambahkan beberapa data ke dalam tabel tersebut. Agar lebih cepat silahkan copas kode dibawah ini:

INSERT INTO `artikel` (`a_id`, `a_tanggal`, `a_judul`, `a_slug`) VALUES 
(NULL, '2020-09-21', 'Postingan Pertamaku', 'postingan-pertamaku'), 
(NULL, '2020-09-22', 'Postingan Keduaku', 'postingan-keduaku'), 
(NULL, '2020-09-23', 'Postingan Ketigaku', 'postingan-ketigaku')

itu kenapa NULL? karena tipe data a_id kita buat menjadi AUTO_INCREMENT, jadi data yang tersimpan akan ditambahkan 1 secara otomatis ke dalam tabel artikel.

Langkah 3: Konfigurasi CodeIgniter 3.1.11

Jika belum ada filenya seperti yang saya katakan di atas tadi, silahkan download di situs resminya. Kemudian, pindahkan folder yang telah di download dan di extract tadi ke dalam folder htdocs jika menggunakan xampp atau www jika wampp. Ubah nama filenya menjadi ci_sitemap.

Langkah 4: Konfigurasi Database pada CodeIgniter

Buka file database.php pada directory codeigniter, yaitu application/config. Kemudian ubah value untuk hostname, username, password dan database menjadi seperti ini:

        'hostname' => 'localhost',

    'username' => 'root',

    'password' => '',

    'database' => 'db_blog',

Kemudian, masih di directory application/config kita akan membuat library database pada codeigniter agar dapat dijalankan secara otomatis. Caranya, buka file autoload.php, kemudian ganti kode $autoload['libraries'] = array(); menjadi $autoload['libraries'] = array('database');

Dan juga autoload untuk helper kita isi menjadi seperti ini $autoload['helper'] = array('url'); agar fungsi seperti base_url atau site_url dapat dijalankan secara otomatis tanpa harus mendeklarasikan fungsi loadnya. Contoh:

$this->load->helper('url');

Langkah 5: Konfigurasi URL dan htaccess

Karena CodeIgniter tidak menyediakan URL untuk format .xml, maka kita harus membuatnya secara manual.

Mari kita coba.

Buka file routes.php pada directory application/config. Kemudian tambahkan baris kode berikut ini:

$route['sitemap\.xml'] = 'sitemap';

Sehingga menjadi.

$route['sitemap\.xml'] = 'sitemap';
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Kode di atas bertujuan agar controller dengan nama Sitemap.php dapat mengakses URL dengan format sitemap.xml.

Contoh:

http://localhost/ci_sitemap/index.php/sitemap.xml

Mungkin kalian bertanya-tanya, apa gunanya htaccess? Sekarang coba perhatikan URL di atas, kelihatannya kurang baik karena ada index.php. Untuk itu kita akan membuang index.php tersebut sehingga nantinya URLnya menjadi:

http://localhost/ci_sitemap/sitemap.xml

Caranya yaitu, buat file baru dengan nama .htaccess di dalam directory ci_sitemap, jadi bukan di dalam directory application tapi di luarnya ya. Kemudian tambahkan kode berikut ini:

Options -Indexes
RewriteEngine on
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Kemudian kita atur base_url secara dinamis pada CodeIgniter.

Mari kita buat.

Buka file config.php pada directory application/config, kemudian ganti kode $config['base_url'] = ''; menjadi seperti ini:

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://" . $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);

Jangan lupa untuk menghilangkan index.php pada config.php, sehingga menjadi $config['index_page'] = '';

Langkah 6: Membuat Model Sitemap di CodeIgniter

Buat file baru dengan nama Sitemap_model.php pada directory application/models. Kemudian ketikkan kode berikut ini:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Sitemap_model extends CI_Model
{
 
 private static $_table = 'artikel';

 public function get_artikel()
 {
  $query = $this->db->select('*')->from(self::$_table)->order_by('a_tanggal', 'DESC')->get();

  $results = array();
        if ($query->num_rows() > 0) {
         $results = $query->result_array();
        }
        return $results;
 }
}

Langkah 7: Membuat Controller Sitemap di CodeIgniter

Selanjutnya buat file baru dengan nama Sitemap.php pada directory application/controllers. Kemudian tambahkan kode dibawah ini:


<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Sitemap extends CI_Controller
{

 public function __construct()
 {
        parent::__construct();
  $this->load->model('sitemap_model');
 }

 public function index()
 {  
  $data['post'] = $this->sitemap_model->get_artikel();
        $this->load->view('sitemap/index', $data);
 }
}

Pada kode diatas, perhatikan kode $data['post'] = $this->sitemap_model->get_artikel($where); Kita memanggil function get_artikel() yang ada di Sitemap_model.php kemudian kita parsing data tersebut dan dikirim ke dalam view.

Langkah 8: Membuat View Sitemap di CodeIgniter

Langkah terakhir, yaitu kita membuat view sitemap dalam format .xml. Buat folder baru bernama sitemap pada directory application/views, kemudian buat file baru dan simpan menjadi index.php. Ketikkan kode dibawah ini:

Baik, sekarang giliran untuk menjelaskan maksud kode di atas:

Baris ketiga merupakan header yang berfungsi untuk menampilkan tag untuk format XML karena kita ingin menampilkannya dalam bentuk XML.Penting untuk memasukkan tag xml seperti pada kode di atas karena kalau kurang atau salah dalam memasukkan tag xml tersebut, maka Google tidak bisa mengenali tag xml dan akhirnya akan ada muncul error di Google Search Console kita ketika sudah mendaftarkan sitemap ke Google Search Console.

Tag url berfungsi untuk menampilkan URL yang akan didaftarkan pada sitemap Google Search Console.

Tag loc berfungsi untuk memasukkan URL yang akan didaftarkan pada sitemap, biasanya berupa URL blog dan post

Tag lastmod bisa kita isi dengan kapan URL tersebut dibuat dan juga harus sesuai dengan format seperti pada kode di atas karena apabila salah format, maka Google tidak bisa mengenali isi dari lastmod tersebut sesuai dengan pengalaman yang saya rasakan.

Tag changefreq bisa kita isi dengan daily, weekly atau monthly. Tapi disarankan daily, agar Google selalu memeriksa URL ini setiap hari.

Terakhir, tag priority memberikan efek pada Google agar URL tersebut diprioritaskan untuk dibaca sesegera mungkin. Kita bisa mengisinya 0.1, 0.5 dan lain-lain. Tapi dalam tutorial ini saya isi dengan 0.1.

Kemudian sisanya merupakan perulangan untuk menambahkan kode sitemap sesuai dengan jumlah artikel yang ada di database kita.

Testing Implementasi Sitemap

Kita akan mencoba menjalankan setiap kode-kode yang telah kita buat tadi.

Let's go, mari kita coba.

Buka URL ini:

http://localhost/ci_sitemap/sitemap.xml

Jika berhasil dan tidak ada error, maka akan muncul seperti berikut ini:

Penutup

Akhirnya kita berhasil membuat sitemap di CodeIgniter dan siap untuk didaftarkan pada Google Search Console. Jika ada pertanyaan atau terjadi kendala silahkan tinggalkan komentar di bawah ini.

Dan juga untuk mendukung tutorial membuat sitemap ini, saya menyediakan link untuk download source code dari aplikasi ini via GitHub. Silahkan download dibawah ini:

Download Source Code

blog comments powered by Disqus