Lompat ke konten Lompat ke sidebar Lompat ke footer

Membuat Sitemap.xml CodeIgniter Dinamis Otomatis

Sitemap begitu perlu adanya dalam sebuah website, karena berguna untuk menunjukkan peta jalan kepada mesin pencari, supaya mudah di lacak dan artikel maupun halaman kita bisa muncul di mesin pencari seperti Google, Bing, Yahoo! dan sebagainya.

Codeigniter merupakan framework yang lumayan banyak digunakan. Salah satunya digunakan dalam membangun CMS sendiri. Membangun CMS sendiri dengan memakai CMS seperti Wordpress, Blogger dan sebagainya tentu beda. Kita perlu mengkoding lebih dalam ketimbang kalau kita pakai CMS populer.

Termasuk pula sitemap, apabila kita pakai CMS Wordpress, Blogger dan sebagainya tentunya sudah disiapkan templatenya oleh mereka, sehingga kita hanya perlu submit di webmaster console Google, Bing dan sebagainya. Tetapi, apabila kita buat CMS sendiri (customisasi) dengan CodeIgniter, maka kita perlu membuat template atau pengkodean sitemap itu sendiri pula.

Untuk itu, inilah langkah-langkah dan source code membuat sitemap dinamis di CMS sendiri dengan framework CodeIgniter, yakni sebagai berikut.

Terlebih dahulu, Silakan anda masuk ke halaman kontrol panel anda baik itu CPanel, Plesk dan sebagainya. Setelah itu anda buka file manager dan ikut langkah selanjutnya.

1. Setting File Routes

Pertama-tama anda harus mengatur atau setting routes.php yang terdapat pada folder Application/config/routes.php  setelah itu silakan anda edit file tersebut. Tambahkan kode dibawah ini tepat di paling bawah dalam file.
$route['sitemap\.xml'] = 'SitemapController/index';
Kode tersebut berguna untuk supaya bisa memakai file ekstensi .xml (contohnya : https://www.domainku.com/sitemap.xml)

2. Tambahkan SitemapModel.php di Folder Models

Langkah selanjutnya adalah kita buka folder Application/models kemudian buat file dengan nama SitemapModel.php  setelah itu edit dan masukkan kode dibawah ini.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class SitemapModel extends CI_Model {

function create() {
$this->db->select('post_slug');
    return $this->db->order_by('', 'desc')->get('posts')->result_array();
}
}
?>

kode tersebut berfungsi untuk mengambil data dalam CMS di CodeIgniter tersebut.

3. Tambahkan Controller

Langkah berikutnya adalah membuka foleder Application/controllers dan buatlah file dengan nama SitemapController.php  setelah itu silakan edit dan tambahkan kode dibawah ini.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class SitemapController extends CI_Controller {

public function index(){
$this->load->model('SitemapModel');
$post = $this->SitemapModel->create();
        $data = [
            'post'   => $post,
        ];
        $this->load->view('sitemap', $data);
}

}
?>

4. Tambahkan View untuk Melihat Hasil

Langkah selanjutnya adalah membuka folder Application/view atau diluar folder tersebut juga boleh. Selanjutnya tambahkan file dengan nama sitemap.php setelah itu edit dan tambahkan kode dibawah ini.
<?php
  header('Content-type: application/xml; charset="ISO-8859-1"',true);  
  $datetime1 = new DateTime(date('Y-m-d H:i:s'));
?>
 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc><?= base_url() ?></loc>
    <lastmod><?= $datetime1->format(DATE_ATOM); ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>0.1</priority>
  </url>
  <?php foreach($post as $item) { $datetime = new DateTime();?>
  <url>
    <loc><?= base_url('post/'.$item['post_slug']) ?></loc>
    <lastmod><?= $datetime->format(DATE_ATOM); ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
  </url>
  <?php } ?>
</urlset>

Kalau sudah melakukan 4 Langkah diatas berarti tinggal kita coba buka https://www.domainku.com/sitemap.xml jikalau berhasil berarti sukses. KALAU BERHASIL TAMPILANNYA SEPERTI GAMBAR BERIKUT INI.

Kalau ada error itu kemungkinan pengkondingan yang berbeda, cara mengatasinya adalah sebagai berikut.

APABILA ERROR BIN RUDET

Apabila error bin rudet coba ikut langkah sebagai berikut.
Silakan ganti kode pada SitemapModel.php dengan kode dibawah ini.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class SitemapModel extends CI_Model {

function create() {
$this->db->select('slug_url,last_update');
$this->db->where('status','publish');
    return $this->db->order_by('last_update', 'desc')->get('tbl_post')->result_array();
}
}
?>

Kemudian, apabila masih error pada file View yakni sitemap.php silakan ganti dengan kode ini
<?php
  header('Content-type: application/xml; charset="ISO-8859-1"',true);  
  $datetime1 = new DateTime(date('Y-m-d H:i:s'));
?>
 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc><?= base_url() ?></loc>
    <lastmod><?= $datetime1->format(DATE_ATOM); ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>0.1</priority>
  </url>
  <?php foreach($post as $item) { $datetime = new DateTime($item['last_update']);?>
  <url>
    <loc><?= base_url($item['slug_url']) ?></loc>
    <lastmod><?= $datetime->format(DATE_ATOM); ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
  </url>
  <?php } ?>
</urlset>

Ingat yaaa! itu kalau error. Kalau tidak error berarti berhasil. Kalau masih error mungkin kode yang kami sajikan belum cocok dengan data yang ada. Mungkin bisa mencari lagi di interner source code yang berbeda. Siapa tau aja cocok. Terima kasih.
Heri MS
Heri MS Blogger Influencer dari Kuningan yang suka dengan dunia IT, Data Technology, website dan senang bereksplorasi tentang Ipteks. Semoga artikel saya ini bisa antik, otentik, asyik, unik dan menarik.

Posting Komentar untuk "Membuat Sitemap.xml CodeIgniter Dinamis Otomatis"