Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Octopress Aggregator

Website Aggregator adalah suatu website yang isinya adalah kumpulan link ke posting di website lain. Beberapa skenario penggunaan website aggregator:

  • website perusahaan, ingin mencantumkan posting blog dari anggota timnya
  • website komunitas, ingin mencantumkan posting blog dari anggota komunitas tersebut

Pada artikel ini kita akan membahas cara pemasangan website aggregator di aplikasi blogging Octopress.

Instalasi Dependensi

Kita akan menggunakan aplikasi yang namanya planet.rb. Sebelum mengikuti langkah-langkah di websitenya, terlebih dulu kita siapkan Ubuntu supaya planet.rb bisa diinstal.

Instalasi dependensi dilakukan dengan perintah berikut

sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev

Setelah itu, kita install planet.rb dengan perintah berikut

gem install planet

Kalau menemui error seperti ini

ERROR:  Could not find a valid gem 'planet' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - no such name (https://rubygems.org/latest_specs.4.8.gz)

atau ini

ERROR:  While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
no such name (https://rubygems.org/gems/planet-0.5.1.gem)

artinya koneksi internet Anda bermasalah. Coba lagi dengan koneksi internet yang lain. Mungkin bisa nebeng dulu di tetangga ;)

Konfigurasi

Kita generate dulu konfigurasi planet.rb. Jalankan perintah ini di dalam folder Octopress kita.

planet init

Perintah di atas akan membuatkan file konfigurasi planet.yml. Edit sesuai kebutuhan. Berikut adalah contoh konfigurasi yang saya gunakan

planet:
    posts_directory: source/_posts/
    templates_directory: source/_layouts/
    whitelisted_tags: []

blogs:
  - author: "Endy is Programmer"
    feed:   "http://software.endy.muhardin.com/atom.xml"
    image:  "http://www.gravatar.com/avatar/31694bbf42349c6b6adfe893bb1e19d8.png"
    twitter: "endymuhardin"

  - author: "Endy is Photographer"
    feed:   "http://rana.endy.muhardin.com/atom.xml"
    image:  "http://www.gravatar.com/avatar/a3c8a6a973fc0c0fa3d89cb69c103ad0.png"

Eksekusi

Selanjutnya, kita jalankan generatornya. planet.rb akan menjelajahi semua blog yang kita daftarkan dan akan membuatkan posting dalam folder source/_posts.

Terakhir, kita bisa publish dan deploy seperti biasa.

Kekurangan

Sayangnya planet.rb menaruh semua isi posting dari blog asal ke website tujuan. Nah, ini bisa bikin google cemberut. Idealnya, saya ingin memasang potongan isi artikel saja, dengan disertai link ke artikel aslinya. Ini dikenal dengan istilah linked list.

Octopress sudah memiliki dokumentasi untuk fitur ini, tapi entah kenapa ternyata belum bisa dipakai.

Mungkin harus coba bikin sendiri seperti dijelaskan di sini

Solusi

Kebetulan semua website yang ingin saya aggregasi adalah website saya sendiri, dan semuanya Octopress. Oleh karena itu, saya modifikasi saja Atom Feednya supaya menghasilkan summary artikel kalau ada. Kalau tidak ada summary, barulah tampilkan content penuhnya.

Caranya mudah, edit file source/atom.xml, yang tadinya seperti ini

<content type="html"><![CDATA[{{ post.content | expand_urls: site.url | cdata_escape }}]]></content>

menjadi seperti ini

{% capture excerpted %}{{ post.content | has_excerpt }}{% endcapture %}
{% if excerpted == 'true' %}
    <summary type="html"><![CDATA[{{ post.content | split: '<!--more-->' | first | expand_urls: site.url | cdata_escape }}]]></summary>
{% else %}
<content type="html"><![CDATA[{{ post.content | expand_urls: site.url | cdata_escape }}]]></content>
{% endif %}

Setelah itu, generate ulang dan deploy masing-masing website. Hasilnya, pada waktu di-aggregasi hanya akan tampil summary saja. Sehingga yang tampil di website aggregator tidak seluruh isi artikel. Paman Google pun tidak kesal dibuatnya ;)

Selamat mencoba