Costumisasi WP permalink menggunakan .htaccess

Dengan menggunakan permalink kita bisa mendapatkan url yang cantik, bahasa inggrisnya pretty url. Contoh url biasa seperti ini www.gethuk.co.id/beli.php?rasa=durian&warna=biru nah saya pengen pretty urlnya jadi www.gethuk.co.id/beli/durian/biru,bisa gak ya?

Ternyata bisa, dasar si drakulil aja yang newbie :P .
Caranya dengan menggunakan RewriteRule pada .htaccess.

RewriteRule ^/beli/(.+)/(.+)/?$ /beli.php?rasa=$1&warna=$2

Jangan lupa RewriteEngine harus di On kan :) , kode lengkapnya seperti ini.

RewriteEngine On
RewriteBase /
RewriteRule ^/beli/(.+)/(.+)/?$ /beli.php?rasa=$1&warna=$2

Nah, sekarang gimana make RewriteRule seperti ini di wordpress? Perlu diketahui, wordpress akan menulis ulang file .htaccess setiap hali halaman settings->permalink di load, yang ditulis ulang adalah semua yang berada di antara
#BEGIN Worpress
...
#END WordPress

hal ini membuat sekrip RewriteRule yang kita tambahin secara manual diantara Rulenya wordpress akan terhapus.

Supaya tidak terhapus gunakan wp codex Rewrite API: add_rewrite_rule pada functions.php, contohnya:


if( !function_exists('gethuk_pretty_url') ):

function gethuk_pretty_url(){
add_rewrite_rule('/beli/(.+)/(.+)/?$','beli.php?rasa=$1&warna=$2','top');
}

//load the function before everything else get load
add_action('init','gethuk_pretty_url');

endif;

Function ini akan menambahkan RewriteRule pada file .htaccess (tanpa menyimpan setingannya di database) pada saat halaman settings->permalink di load. Jadi jangan lupa untuk membuka halaman settings->permalink setelah menambahkan function ini. Dah.siap itu aja, Selamat mencoba ya.

Pada tulisan berikutnya akan saya ulas cara lain untuk melakukan customisasi permalink tanpa mengubah .htaccess.

Biker dan anjing yang akan ditendangnya

Pagi tadi saya melihat seekor anjing dan seorang biker dan pasangannya yang berada tepat di depan saya, sang anjing sedang bermain di jalur kanan (lawan arah). Sang biker yang merasa kesal karena ada anjing di jalanan mencoba melepaskan tendangan ke arah anjing tersebut, kenapa saya bilang mencoba? karena menurut saya tendangan yang dilepaskannya memang hanya iseng untuk menggertak si anjing dan sang biker berlalu sambil tertawa-tawa gembira.

Walaupun tendangannya iseng seperti itu tapi si anjing kaget dan langsung menoleh ke arah kaki yang melayang di samping punggungnya, feeling keanjingannya mengigatkan akan datangnya ancaman.

Mas Biker, anda beruntung kawan, untung saja anjing yang anda isengi ini adalah tipe rumahan yang kelihatannya masih kenyang. Coba saja kalau dia sedang lapar dan bete, tendangan iseng anda akan disambut oleh gigitan yang sempurna, gigi-giginya yang tajam dan berliur akan menembus kulit kaki anda meninggalkan sobekan luka menganga yang bukan main sakitnya. Belum lagi kalau anjing itu rabies, derita anda akan berkali-kali lipat jadinya.

Menendang anjing dari atas sepeda motor yang sedang berjalan memang merupakan tindakan yang berbahaya, jadi sebaiknya tindakan seperti ini tidak dilakukan sembarangan, apa lagi iseng. Kalau memang terpaksa, pastikan bahwa tendangan anda sempurna sampai si anjing terkapar tak berdaya, dan segeralah menjauh untuk mendapatkan posisi aman dari serangan balasan.

Upload data dengan mysqlimport dan LOAD DATA LOCAL INFILE

Pada mysqlimport, nama file yang akan diimport harus sama dengan nama table yang akan diisi. Untuk melakukan upload banyak file ke banyak database bisa menggunakan spasi sebagai pembatas antar file yang akan diimport.

contoh: mengupload ke table employee dari file employee.txt dan table manager dari file manager.txt

# mysqlimport -u root -ptmppassword –local test employee.txt manager.txt

Menggunakan LOAD DATA LOCAL INFILE

mysqlimport berfungsi sama dengan LOAD DATA LOCAL INFILE, hanya saja LOAD DATA LOCAL INFILE dijalankan dari dalam mysql sebagai command mysql.

# mysql -u root -ptmppassword

mysql> use test;

mysql> LOAD DATA LOCAL INFILE ‘/home/me/employee.txt’

-> INTO TABLE employee

-> FIELDS TERMINATED BY ‘\t’

-> LINES TERMINATED BY ‘\n’

-> (empno, ename, job);

Query OK, 3 rows affected (0.01 sec)

Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

Opsi-opsi mysqlimport dan LOAD DATA LOCAL FILE yang sering digunakan adalah sebagai berikut:

  1. compress : Mengkompress seluruh informasi yang dikirim antara client dan server.
  2. delete : mengosongkan table sebelum melakukan insert.
  3. local : membaca file lokal dari komputer client.
  4. lock-tables : mengunci seluruh table sebelum proses import selesai.
  5. columns : menentukan nama-nama field yang akan diinsert
  6. fields-terminated-by : menentukan delimiter antar field.
  7. fields-enclosed-by : menentukan range awal s/d akhir suatu field
  8. fields-escaped-by : menentukan karakter yang akan diinterpretasikan contoh: escaped by ‘\’ pada data dengan isi ‘\n’ akan membuat baris baru pada field.
  9. lines-terminated-by: menentukan pembatas antar row/baris.
  10. force : proses tetap dilanjutkan meskipun ada error.
  11. replace : menghapus duplikasi data
  12. verbose : mengeluarkan detail proses ke layar

contoh:

# mysqlimport \

–user=root \

–password=tmppassword \

–columns=empno,ename,job \

–compress \

–delete \

–fields-optionally-enclosed-by=’"’ \

–fields-terminated-by=’\t’ \

–fields-escaped-by=” \

–lines-terminated-by=’\n’ \

–local \

–lock-tables \

–verbose \

test employee.txt

Output dari command di atas:

Connecting to localhost

Selecting database test

Locking tables for write

Deleting the old data from table employee

Loading data from LOCAL file: /home/me/employee.txt into employee

test.employee: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

Disconnecting from localhost

Tclexpectsmsgw: Daemon SMS written in Tc/expect and AT Command

Tclexpectsmsgw ini adalah sebuah SMS gateway simple yang dibuat menggunakan bahasa pemrograman Tcl/expect.
Paket expect memungkinkan aplikasi ini untuk memiliki kecerdasan berinteraksi secara otomatis dengan modem pengirim SMS dan database mysql sebagai sumber data. Oh iya satu lagi, aplikasi ini hanya support modem yang memiliki fasilitas teks mode.

Thanx to Mr. ELP, aplikasi ini cocok digunakan sebagai daemon SMS gateway karena menggunakan database sebagai sumber datanya, sehingga aplikasi dengan platform apa saja bisa menggunakannya asal bisa mengakses database yang sama dengan daemon ini.

Bagi yang ingin mencoba, silahkan kunjungi http://sourceforge.net/projects/tclexpectsmsgtw/

Persyaratan dasar yang harus anda install adalah:
1. Bahasa pemrograman Tcl
2. Paket Expect
3. Database mysql
4. Paket mysqltcl

Bagi pengguna ubuntu linux semua paket tersebut tersedia di repository
sudo apt-get install tcl expect mysql-server mysqltcl

Konfigurasi Database:
1. Donlot dan extract file dari sourceforge dengan alamat di atas.
2. Simpan dalam folder (terserah anda)
3. Buat database seperti yang ada dalam file smsd.sql, tentukan user dan password sesuai keinginan anda.

Konfigurasi Koneksi mysqltcl:
1. Buka file smsD.tcl
2. Ganti nilai port "/dev/ttyUSB2" sesuaikan dengan port modem anda. (untuk windows menggunakan port com)
3. Ganti yang dibold pada [mysqlconnect -user smsd -db smsd -password smsdsecure] sesuaikan dengan user/db_name/password database anda

Menghidupkan aplikasi:
dari terminal/dos ketikkan tclsh /path/ke/folder/smsD.tcl
pastikan mysql database dan modem anda sudah hidup dan terdeteksi.

Mengirim sms:
login ke mysql, masukkan teks dan nomor tujuan menggunakan query sbb:
insert into sms_out (nd,isi) values ('0812xxxxxx','teks sms yang akan dikirim');

Membaca sms masuk:
login ke mysql, extract isi table sms_in menggunakan query sbb:
select * from sms_in;

Silahkan dicoba semoga bermanfaat.

Mengekstrak HTML tag dalam file XML menggunakan JQuery tanpa CDATA

Penggunaan paling populer dari XML adalah untuk menyimpan dan melakukan transport data.
Secara default seluruh teks dalam file XML akan diparsing oleh XML Parser, XML Parser ini berfungsi memecah-mecah elemen XML sehingga sub elemen yang ada didalam elemen utama bisa terbaca. Untuk beberapa keperluan isi dari elemen XML boleh tidak diparsing, contohnya saya yang ingin memuat tag-tag html dalam elemen XML.
Hal ini bisa dilakukan menggunakan CDATA, semua yang berada dalam bagian CDATA tidak akan diparsing oleh XML Parser.
Sebuah bagian CDATA dimulai dengan <![CDATA[ dan diakhiri dengan ]]>

Kurang lebih begitulah teorinya, tapi pada implementasinya saya tidak bisa menggunakan CDATA ini untuk menampilkan tag HTML. Tiap kali data diambil melalui jQuery .post, tag HTML yang sudah disiapkan ternyata menghilang, nampaknya ini XML Parser punya kerjaan.

Kalo begitu mari kita coba untuk melupakan CDATA sejenak dan langsung saja menuliskan tag HTML kedalam XML.
Sebagai catatan, XML ini digenerate oleh php yang akan dipanggil oleh jQuery.

1. File php untuk mengenerate XML. [xmlgenerator.php]

<?php
// generator.php
echo'
<?xml version="1.0"?>
<pelanggan>
<detail>
<table><tr><td><b>Nama</b></td><td>Andi Sulistyo Nugroho</td></tr>
<tr><td><b>Alamat</b></td><td>Medan</td></tr>
</table>
</detail>
</pelanggan>';
?>

2. File html berisi jQuery untuk memanggil dan menampilkan data dari xmlgenerator.php [index.html]

<html>
<head><title></title>
<script type='text/javascript' src='path/to/jqueryfile.js'></script>
<script type='text/javascript'>
$(function(){
    $('#tombol').click(function(){
        $.post('xmlgenerator.php', function(data){
            var detail = $('detail',data).html();
            $('#content').html(detail);
        });
    return false;
    });
})
</script>
</head>
<body>
<p><input type='button' id='tombol' value='View' /></p>
<p id='content'>Konten</p>
</body>
</html>

Pada saat tombol View diklik maka table yang digenerate dalam XML akan dimunculkan didalam paragrap konten.
Cara ini dengan mengabaikan CDATA mungkin bukanlah cara terbaik untuk mengekstrak HTML tag dalam XML, tapi cukup ampuh menyelesaikan masalah saya. Semoga bermanfaat.