MovableType Plugin: SimpleLink

Contoh pembuatan PlugIn untuk MovableType, sebuah Blogger Engine dengan menggunakan pemrograman PERL.


Kamis Pahing, 1 Desember 2005

Para blogger sejati, hampir pasti mengenal Blogger Engine ini. Meski masih sedikit penggunanya (di lingkungan sini), namun sangat powerful khasiatnya. Berbeda dengan Blogger Engine yang lain, semisal WordPress atau TextPattern yang menggunakan PHP sebagai script enginenya, MovableType menggunakan PERL. Mungkin hal tersebut yang menyebabkan engine ini lebih powerful, karena memiliki akses yang lebih luas (sebagai CGI - Common Gateway Interface).

Sama dengan Blogger Engine yang lain, MovableType juga menyediakan fitur PlugIn, di mana pengguna dapat menambahkan fungsi baru pada blognya. PlugIn dapat diperoleh dari situs resmi Six Apart, atau dari situs-situs pembuatnya langsung. Kita sebagai programmer, juga dapat membuat sendiri PlugIn impian, dengan syarat yaitu menguasai PERL programming.

Berikut ini akan dibahas cara-cara membuat PlugIn untuk MovableType. Contoh kasus yang dibahas adalah SimpleLink, yaitu untuk menampilkan daftar URL pada blog kita. Ide ini saya buat karena dari usaha pencarian kesana kemari, tidak menemukan PlugIn untuk hal seperti ini.

Untuk membuat PlugIn, cukup dengan membuat satu file PERL, yaitu file Teks biasa dengan ekstensi .PL. Silakan buat satu file teks, lalu isikan baris kode berikut:

package MT::Plugin::SimpleLink;

Itu adalah untuk menandakan bahwa kita membuat satu paket dengan nama SimpleLink pada paket MT::Plugin.

use MT::ConfigMgr;
use MT::Plugin;
use MT::PluginData;
use MT::Template::Context;

Kita perlu mengambil beberapa paket lain untuk mendukung pembuatan PlugIn ini.

my $linkslist = '';
my $separator = '';
my $linkformat = '';
use vars qw( $VERSION %mta_config $plugin %config );
$VERSION = '1.0';

Inisialisasi variabel-variabel.

eval {
    $plugin = new MT::Plugin({
    name => 'SimpleLink',
    version => $VERSION,
    author_name => "Aryo Sanjaya",
    author_link => "http://www.mahesajenar.com/",
    description => "Display list of URLs to be a link exchange. ($VERSION)",
    system_config_template => \&sysconf_template,
    settings => new MT::PluginSettings([
        ['linkslist', { Default => '' }],
        ['separator', { Default => ';' }],
        ['linkformat', { Default => '<li class="module-list-item"><a href="<URL>" title="<TITLE>" target="_blank"><TEXT></a></li>' }],
        ]),
    });
    MT->add_plugin($plugin);
};

Baris di atas adalah inti dari PlugIn kita, yaitu menciptakan obyek baru (MT::Plugin), kemudian mengisi parameter-parameter yang diperlukan, serta nilai-nilai standar.
Pada baris terakhir blok program di atas, dilakukan pendaftaran obyek $plugin kepada daftar plugin yang tersedia pada system.

Seperti terlihat pada parameter system_config_template yang merujuk pada sysconf_template, maka kita harus membuat fungsi sysconf_template tersebut. Fungsi ini berisi desain tampilan di mana pengguna dapat melakukan setting PlugIn. Berikut penggalan fungsinya:

sub sysconf_template {
    my $tmpl = <<'EOT';
    <div class="setting">
    <div class="label">
    <label for="linkslist">List of Links:</label>
    </div>
    <div class="field">
    <p><textarea name="linkslist" rows="10" cols="50"><TMPL_VAR NAME=LINKSLIST ESCAPE=HTML></textarea>
    <br />Enter the list. Format: &lt;URL&gt; [separator] &lt;TITLE&gt; [separator] &lt;TEXT&gt;</p>
    </div>
...

Hasil setting dapat dibaca dengan menggunakan fungsi berikut ini:

sub readconfig {
    my $mta_config;
    $mta_config = $plugin->get_config_hash('system');
    foreach my $key (keys %$mta_config) {
        my $v = $mta_config->{$key};
        $config{$key} = $v if (defined($v) && $v ne '');
    }
}
readconfig();

Baris program di atas akan membaca semua setting yang sesuai dengan array $config milik kita, yang kemudian disimpan pada array $config itu sendiri.

Setelah semua setting selesai dilakukan, maka hal terpenting agar PlugIn kita dapat dikenali melalui TAG adalah dengan mendaftarkannya. Berikut ini adalah baris untuk mendaftarkan tag SimpleLink.

MT::Template::Context->add_tag ('SimpleLink',\&display_link_exchange);

Baris di atas menyatakan bahwa semua TAG SimpleLink, akan ditangani oleh fungsi display_link_exchange. Untuk itu program harus menyediakan fungsi tersebut. Berikut ini adalah fungsi untuk menangani TAG SimpleLink:

sub display_link_exchange {

    @lists = split("\n", $config{linkslist});
    $separator = $config{separator};
    $linkformat = $config{linkformat};

    $links = "";
    $nums = scalar(@lists);
    for ($c = 0; $c < $nums; $c++)
    {
        $record = $lists[$c];
        ($url, $title, $text) = split(/$separator/, $record, 3);
        $item = $linkformat;
        $item =~ s/\<URL\>/$url/;
        $item =~ s/\<TITLE\>/$title/;
        $item =~ s/\<TEXT\>/$text/;
        $links .= $item . "\n";
    }
    return $links;
}

Fungsi di atas akan membaca isi dari setting, lalu memparsing dan mengembalikan teks hasil olahan.

File yang sudah jadi ini, berikan nama SimpleLink.pl, kemudian tinggal dicopykan (diupload) ke direktori plugin milik MovableType. Biasanya ada di direktori /cgi-bin/mt/plugins/.

Buat direktori baru, misalnya SimpleLink, kemudian letakkan file PERL tadi ke direktori ini. Maka PlugIn sudah siap.

Untuk source lengkapnya, silakan download SimpleLink.pl di sini.

Tentang cara penggunaan PlugIn ini, silakan mengacu pada dokumentasi PlugIn. Sengaja saya buat berbahasa inggris, karena memang itu ditujukan untuk kalangan luas :)

Sekian pembahasan kali ini. Terlalu simple memang, untuk disebut sebagai tutorial ^^. Kalo ada pertanyaan, kritik dan masukan, silakan diberikan pada penulis.

Akhirnya, selamat coding dan blogging ^_^

 

Daftar Komentar

Aryo Sanjaya

aryo.sanjaya@...  Kamis Kliwon, 22 Juni 2006
Tes simplelink

Aryo Sanjaya

aryo.sanjaya@...  Sabtu Pahing, 24 Juni 2006
hahaha

Aryo Sanjaya

aryo.sanjaya@...  Selasa Kliwon, 27 Juni 2006
hahaha


URL: https://bengkelprogram.com/data-artikel-176.0.bps