Advertisement
  1. Code
  2. PHP
  3. CodeIgniter

Membangun Feed RSS 2.0 dengan CodeIgniter

Scroll to top
Read Time: 9 min

() translation by (you can also view the original English article)

Dalam tutorial ini, kami akan membangun Feed RSS 2.0 dengan kerangka PHP CodeIgniter. Setelah tutorial ini, Anda akan dapat membuat feed untuk situs web kustom apa pun dalam waktu singkat.

Detail Tutorial

  • Program: Kerangka PHP CodeIgniter
  • Versi: 1.7.1
  • Kesulitan: Mudah
  • Perkiraan Waktu Penyelesaian: 30 menit

Langkah 1: Apa yang Kita Butuhkan

Finished ProductFinished ProductFinished Product

Pertama, kita akan melihat alat yang dibutuhkan untuk memulai. Selain instalasi CodeIgniter, kita memerlukan database MySQL yang berjalan dengan beberapa konten dari mana kita dapat membangun feed kita.

Untuk tujuan ini, berikut beberapa entri dummy yang dapat Anda impor. Buat database yang disebut tut_feeds. Kemudian, salin kode berikut, dan impor ke dalam database MySQL Anda.

1
    CREATE TABLE IF NOT EXISTS `posts` (
2
      `id` int(11) NOT NULL AUTO_INCREMENT,
3
      `title` varchar(120) NOT NULL,
4
      `text` text NOT NULL,
5
      `date` date NOT NULL,
6
      PRIMARY KEY (`id`)
7
    ) ENGINE=MyISAM;
8
    
9
    INSERT INTO `posts` (`id`, `title`, `text`, `date`) VALUES
10
    (1, 'Some great article', 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using ''Content here, content here'', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for ''lorem ipsum'' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).', '2009-08-10'),
11
    (2, 'Another great article', 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using ''Content here, content here'', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for ''lorem ipsum'' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).', '2009-08-10'),
12
    (3, 'News from myfeed', 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using ''Content here, content here'', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for ''lorem ipsum'' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).', '2009-08-10');

Ini adalah bagaimana seharusnya muncul di phpmyadmin. Setelah Anda memasukkan kode, tekan tombol Ok di sisi kanan.

Jika semuanya berjalan dengan benar, Anda akan melihat sesuatu seperti ini:

Langkah 2: Menyiapkan CodeIgniter

Sebelum kita mulai menulis kode, kita perlu mengkonfigurasi CodeIgniter.

Telusuri ke folder CI Anda, dan kemudian ke dalam system/application/config. Kita perlu mengedit file-file berikut:

  • autoload.php
  • config.php
  • database.php
  • routes.php

Edit autoload.php seperti ini:

1
  $autoload['libraries'] = array('database');

Ini akan memberitahu CI untuk memuat database secara otomatis; jadi kita tidak perlu memuatnya setiap saat.

Edit config.php seperti ini:

1
	$config['base_url'] = "http://localhost/YOUR DIRECTORY";

Anda perlu mengganti tutorials/ci_feeds dengan direktori dan folder CI Anda.

Edit database.php seperti ini:

1
	$db['default']['hostname'] = "localhost"; // your host

2
    $db['default']['username'] = "root";
3
    $db['default']['password'] = "";
4
    $db['default']['database'] = "tut_feeds";

Dengan pengaturan ini, kita memberi tahu CI database mana yang akan digunakan. Di sini Anda juga harus mengganti hostname, username dan
password dengan info database pribadi Anda.

Edit routes.php seperti ini:

1
	$route['default_controller'] = "Feed";

Controller default adalah controller "index" untuk aplikasi Anda. Setiap kali Anda membuka
localhost/YOUR DIRECTORY, controller default ini akan dimuat pertama kali. Kita akan membuat feed di langkah berikutnya.

Langkah 3: Membuat Controller Feed

Dalam controller ini, semua keajaiban terjadi. Jelajahi ke system/application/controllers dan buat file baru
bernama feed.php. Selanjutnya, buat controller Feed dan memperpanjang induk CI Controller.

1
	class Feed extends Controller {
2
      
3
      function Feed()
4
      {
5
		parent::Controller();
6
      }
7
}

Jika Anda sudah bingung silakan lihat milik Jeffrey
tutorial Pengembangan Mudah dengan CodeIgniter.
Setelah Anda mempelajari dasar-dasarnya, kembalilah untuk melanjutkan tutorial ini! :)

Sebelum langkah berikutnya, kami akan memanfaatkan helper CI yang hebat. Muat helper xml dan text.

1
class Feed extends Controller {
2
      
3
      function Feed()
4
      {
5
        parent::Controller();
6
        
7
        $this->load->helper('xml');
8
		$this->load->helper('text');
9
      }
10
}

Langkah 4: Membuat Model

Selanjutnya, akan membuat model untuk menerima data dari database. Jika Anda tidak tahu apa itu model, lihatlah
panduan pengguna CI. Jelajahi ke system/application/models
dan buat file bernama posts_model.php.

1
class Posts_model extends Model {
2
	
3
	// get all postings

4
	function getPosts($limit = NULL)
5
	{
6
		return $this->db->get('posts', $limit);
7
	}
8
}

Kami menggunakan active records untuk menerima data
dari database. Parameter pertama mendeklarasikan tabel yang ingin kita gunakan dan dengan yang kedua kita dapat menetapkan batas - jadi kita
dapat memberi tahu CI berapa banyak record yang ingin kita ambil.

Mungkin Anda telah memperhatikan bahwa $limit diatur ke NULL secara default. Ini memungkinkan untuk menetapkan batas, tetapi Anda tidak harus melakukannya.
Jika Anda tidak mengatur parameter kedua, fungsi ini hanya akan mengembalikan semua record.

Langkah 5: Kembali ke Controller Feed

Sekarang setelah kita membuat model kita, kita dapat melanjutkan dengan controller feed kami. Kita akan memuat posts_model yang baru kita buat.

1
class Feed extends Controller {
2
      
3
      function Feed()
4
      {
5
        parent::Controller();
6
        
7
        $this->load->helper('xml');
8
		$this->load->helper('text');
9
        $this->load->model('posts_model', 'posts');
10
      }
11
}

Dengan parameter kedua, kami menetapkan model kami ke nama objek yang berbeda - jadi kami memiliki lebih sedikit untuk mengetik :P. Sekarang kita buat metode index
yang merupakan metode yang dipanggil secara default.

1
	function index()
2
	{
3
		$data['feed_name'] = 'MyWebsite.com'; // your website

4
		$data['encoding'] = 'utf-8'; // the encoding

5
        $data['feed_url'] = 'http://www.MyWebsite.com/feed'; // the url to your feed

6
        $data['page_description'] = 'What my site is about comes here'; // some description

7
        $data['page_language'] = 'en-en'; // the language

8
        $data['creator_email'] = 'mail@me.com'; // your email

9
        $data['posts'] = $this->posts->getPosts(10);  
10
        header("Content-Type: application/rss+xml"); // important!

11
	}

Mari kita menyiapkan beberapa informasi untuk view feed nanti juga.Meskipun sebagian besar informasi di atas mudah dimengerti, kita akan melihat dua di antaranya.
header("Content-Type: application/rss+xml"); adalah bagian yang sangat penting. Ini memberitahu browser untuk mengurainya sebagai
sebuah Feed RSS. Jika tidak, browser akan mencoba mengurainya sebagai teks biasa atau html.

Dengan $data['posts'] = $this->posts->getPosts(10); kami menggunakan model kami dan menyimpan semua record dalam array $posts.
Saya menetapkan batas hingga 10; jadi itu akan mengembalikan, paling banyak, 10 record. Anda dapat menetapkan nilai ini lebih tinggi atau lebih rendah jika Anda mau. Jika kita tinggalkan
kosong, seperti $data['posts'] = $this->posts->getPosts();, itu akan mengembalikan semua record.

Akhirnya, kita perlu memuat view yang akan kita buat di langkah berikutnya.

1
	function index()
2
	{
3
		$data['feed_name'] = 'MyWebsite.com'; 
4
		$data['encoding'] = 'utf-8'; // the encoding

5
        $data['feed_url'] = 'http://www.MyWebsite.com/feed'; 
6
        $data['page_description'] = 'What my site is about comes here'; 
7
        $data['page_language'] = 'en-en'; 
8
        $data['creator_email'] = 'mail@me.com';
9
        $data['posts'] = $this->posts->getPosts(10);  
10
        header("Content-Type: application/rss+xml"); 
11
        
12
        $this->load->view('rss', $data);
13
	}

Array $data kita dilewatkan sebagai parameter kedua ke file view, sehingga kita dapat mengaksesnya dalam view.
Controller feed Anda seharusnya sekarang terlihat seperti ini:

1
class Feed extends Controller {
2
	
3
	function Feed()
4
	{
5
		parent::Controller();
6
		
7
		$this->load->helper('xml');
8
		$this->load->helper('text');
9
        $this->load->model('posts_model', 'posts');
10
	}
11
	
12
	function index()
13
	{
14
		$data['feed_name'] = 'MyWebsite.com';
15
		$data['encoding'] = 'utf-8';
16
        $data['feed_url'] = 'http://www.MyWebsite.com/feed';
17
        $data['page_description'] = 'What my site is about comes here';
18
        $data['page_language'] = 'en-en';
19
        $data['creator_email'] = 'mail@me.com';
20
        $data['posts'] = $this->posts->getPosts(10);    
21
        header("Content-Type: application/rss+xml");
22
		
23
		$this->load->view('rss', $data);
24
	}
25
	
26
}

Langkah 6: Membuat View

Akhirnya kita harus membuat file view - keluaran kita. Jelajahi ke system/application/views dan buat file yang disebut
rss.php.

Pertama kita mengatur versi xml dan pengkodean di dalam head.

1
	<?php  echo '<?xml version="1.0" encoding="' . $encoding . '"?>' . "\n"; ?>

Diikuti oleh beberapa informasi meta rss.

1
    <rss version="2.0"
2
        xmlns:dc="http://purl.org/dc/elements/1.1/"
3
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
4
        xmlns:admin="http://webns.net/mvcb/"
5
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
        xmlns:content="http://purl.org/rss/1.0/modules/content/">
7
    
8
        <channel>

Sekarang kita akan mengakses array $data dari langkah sebelumnya. Kita dapat mengakses data ini melalui kunci array, seperti:

1
    <title><?php echo $feed_name; ?></title>
2
3
    <link><?php echo $feed_url; ?></link>
4
    <description><?php echo $page_description; ?></description>
5
    <dc:language><?php echo $page_language; ?></dc:language>
6
    <dc:creator><?php echo $creator_email; ?></dc:creator>
7
8
    <dc:rights>Copyright <?php echo gmdate("Y", time()); ?></dc:rights>
9
    <admin:generatorAgent rdf:resource="http://www.codeigniter.com/" />

Sekarang kita perlu melakukan perulangan, dengan foreach, untuk mendapatkan semua record.

1
    <?php foreach($posts->result() as $post): ?>
2
    
3
       <item>
4
5
          <title><?php echo xml_convert($post->title); ?></title>
6
          <link><?php echo site_url('YOUR URL' . $post->id) ?></link>
7
          <guid><?php echo site_url('YOUR URL' . $post->id) ?></guid>
8
9
          	<description><![CDATA[ <?php echo character_limiter($post->text, 200); ?> ]]></description>
10
			<pubDate><?php echo $post->date; ?></pubDate>
11
        </item>
12
13
        
14
    <?php endforeach; ?>
15
	
16
    	</channel>
17
	<</rss>

Untuk link dan guide, Anda harus menetapkan tautan ke controller Anda tempat posting diambil. Sebagai contoh: my/posts/$post->id.

Saya harap Anda memperhatikan CDATA. Ini digunakan untuk text-output (konten). Ingat bagaimana kita belajar di head bahwa ini adalah xml;
jadi harus xml yang valid. Jika kami tidak menetapkan CDATA, kami berpotensi menghasilkan markup yang tidak valid.

Langkah 7: Gambaran

Sekarang file Anda akan terlihat seperti ini:

system/application/controllers/feed.php

1
class Feed extends Controller {
2
	
3
	function Feed()
4
	{
5
		parent::Controller();
6
		
7
		$this->load->helper('xml');
8
		$this->load->helper('text');
9
        $this->load->model('posts_model', 'posts');
10
	}
11
	
12
	function index()
13
	{
14
		$data['feed_name'] = 'MyWebsite.com';
15
		$data['encoding'] = 'utf-8';
16
        $data['feed_url'] = 'http://www.MyWebsite.com/feed';
17
        $data['page_description'] = 'What my site is about comes here';
18
        $data['page_language'] = 'en-en';
19
        $data['creator_email'] = 'mail@me.com';
20
        $data['posts'] = $this->posts->getPosts(10);    
21
        header("Content-Type: application/rss+xml");
22
		
23
		$this->load->view('rss', $data);
24
	}
25
	
26
}

system/application/models/posts_model.php

1
class Posts_model extends Model {
2
	
3
	// get all postings

4
	function getPosts($limit = NULL)
5
	{
6
		return $this->db->get('posts', $limit);
7
	}
8
}

system/application/views/rss.php

1
	<?php  echo '<?xml version="1.0" encoding="' . $encoding . '"?>' . "\n"; ?>
2
    <rss version="2.0"
3
        xmlns:dc="http://purl.org/dc/elements/1.1/"
4
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
5
        xmlns:admin="http://webns.net/mvcb/"
6
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
        xmlns:content="http://purl.org/rss/1.0/modules/content/">
8
    
9
        <channel>
10
        
11
        <title><?php echo $feed_name; ?></title>
12
    
13
        <link><?php echo $feed_url; ?></link>
14
        <description><?php echo $page_description; ?></description>
15
        <dc:language><?php echo $page_language; ?></dc:language>
16
        <dc:creator><?php echo $creator_email; ?></dc:creator>
17
    
18
        <dc:rights>Copyright <?php echo gmdate("Y", time()); ?></dc:rights>
19
        <admin:generatorAgent rdf:resource="http://www.codeigniter.com/" />
20
    
21
        <?php foreach($posts->result() as $post): ?>
22
        
23
            <item>
24
    
25
              <title><?php echo xml_convert($post->title); ?></title>
26
              <link><?php echo site_url('blog/posting/' . $post->id) ?></link>
27
              <guid><?php echo site_url('blog/posting/' . $post->id) ?></guid>
28
    
29
                <description><![CDATA[ <?php echo character_limiter($post->text, 200); ?> ]]></description>
30
                <pubDate><?php echo $post->date; ?></pubDate>
31
            </item>
32
    
33
            
34
        <?php endforeach; ?>
35
        
36
        </channel>
37
    </rss>

Dan feed kita terlihat seperti ini, hanya dengan konten lain :)

Kesimpulan

Saya harap Anda telah belajar betapa mudahnya membangun Feed RSS 2.0 dengan kekuatan CodeIgniter. Untuk tutorial dan screencasts lebih lanjut tentang CodeIgniter, periksa serial CodeIgniter dari Awal oleh Jeffrey.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.