[**Belajar SQL**](http://pojokprogrammer.net/tags/belajar-sql) | Seiring dengan kebutuhan aplikasi-aplikasi bisnis dan layanan publik masa kini, maka kebutuhan penyimpanan data dalam bentuk database relasional menjadi hal yang tidak terelakkan, sehingga pemahaman yang baik tentang ***structured query language*** (***SQL***) menjadi hal yang **amat sangat penting** karena SQL adalah bahasa yang kita gunakan untuk *berkomunikasi* dengan database. Sayangnya kenyataan berkata lain, peningkatan skill SQL menjadi prioritas paling akhir karena kebanyakan programmer terlalu fokus pada hal lain yang lebih *seksi*, seperti, meningkatkan skill bahasa pemrograman tertentu, membuat user interface yang atraktif dan user-friendly, dan membuat aplikasi yang bisa berjalan di database apapun
Pengenalan BPMN
BPMN merupakan kepanjangan dari Business Process Model and Notation, yaitu sebuah standar untuk menggambarkan proses bisnis yang dikeluarkan oleh Open Management Group (omg.org). Mengingat BPMN sudah diakui sebagai standar kelas dunia, maka mau tidak mau, kita tidak boleh tertinggal, minimal mempelari dari hal-hal yang mendasar dahulu, seperti BPMN fundamental. Karena spesifikasi tentang BPMN salah satunya berhubungan dengan diagram, maka pendekatan yang relatif mudah untuk mempelajari BPMN adalah dengan mengenal notasi dasar. Pengenalan BPMN fundamental akan dibahas lebih detail di artikel terpisah tentang Dasar-dasar BPMN.
Pengenalan Drupal
Pengenalan Drupal | Artikel ini akan membantu teman-teman mengenal lebih jauh tentang Drupal, terutama Drupal 7. Makhluk apa sih Drupal? Termasuk apakah sih Drupal itu, CMS atau Framework? Bagaimana Drupal bekerja dan komponen apa saja yang ada di dalamnya.
Tak lupa juga kita akan membahas teknologi apa saja yang diperlukan untuk menjalankan Drupal, serta sejumlah terminologi dasar yang harus dipahami, seperti node, entity, hook, block dan theme. Semoga artikel ini dapat menjawab semua pertanyaan tersebut.
Update 2013-12-20: Penambahan penjelasan tentang konsep Entity, Entity Type dan Bundle
Makanan Apa Sih Drupal?
Drupal bisa kita gunakan untuk membangun sebuah website, tapi…. kan ada WordPress, Joomla, Zikula, dan lain-lain, apa bedanya? Drupal adalah Content Management Framework (CMF) yang bersifat open source dan menekankan pada kolaborasi antar developernya. Drupal sangat modular, sangat mudah dikembangkan, dan seperti halnya sebuah framework, dia memiliki standar yang harus kita ikuti. Dalam paket instalasi Drupal sudah ada beberapa core module yang mencakup fungsionalitas utama sebagai sebuah Content Management System (CMS), namun fungsionalitas tersebut dapat dengan mudah kita tambahkan dengan mengaktifkan built-in module yang ada atau mengaktifkan contributed module lainnya. Drupal di-desain agar mudah untuk melakukan kustomisasi, namun kustomisasi tersebut dilakukan dengan cara membuat module baru yang menambah atau menghilangkan fungsionalitas standar yang ada, bukan dengan memodifikasi core module.
Dengan kemudahan melakukan kustomisasi Drupal, kita bisa membangun bermacam-macam website seperti portal internet, portal berita, website personal, departemen, korporat sampai kenegaraan. Kita juga bisa membangun aplikasi e-commerce, social networking, dan image gallery menggunakan Drupal. Jadi bisa dikatakan, segalam macam jenis website bisa kita bangun menggunakan Drupal…. keren kan?
Drupal juga memiliki tim khusus yang didedikasikan untuk memastikan tingkat security selalu pada level tertinggi, dengan cara menanalisa laporan keamanan dari para penggunanya dan meluncurkan update secara berkala, dan sampai artikel ini dibuat, Drupal sudah mencapai versi 7.24. Sebuah organisasi nirlaba bernama Drupal Associations didirikan untuk selalu mengembangkan situs resmi Drupal dan komunitasnya di http://drupal.org dan http://groups.drupal.org. Karena dukungan luas inilah Drupal punya tagline "Come for the software, stay for the community"
Teknologi Pendukung
Drupal juga di-desain agar dapat berjalan di server hosting dengan harga yang terjangkau, namun tetap mampu dikembangkan menjadi situs besar, terdistribusi dengan dukungan sistem dan teknologi terbaru. Drupal dibangun menggunakan bahasa PHP dan keseluruhan code di dalamnya mengikuti standar yang ketat (http://drupal.org/node/318). Dengan menggunakan bahasa PHP yang sangat umum ini, maka developer pemula akan dengan mudah mempelajarinya. Untuk Drupal 7 minimal versi PHP yang dibutuhkan adalah versi 5.2.
Drupal dapat berjalan di semua RDBMS populer seperti MySQL, PostgreSQL, SQLite, Oracle, Microsoft SQL Server, dan RDBMS lain yang mendukung PDO. Drupal 7 berbeda dengan Drupal 6 dalam pengakses database karena adanya Database Abstraction Layer yang dibuat ulang khusus untuk Drupal 7 dan sangat mempermudah para programmer mengakses database dari Drupal.
Drupal juga dapat berjalan di atas sejumlah web server populer seperti Apache, IIS dan nginx. serta mendukung Clean URL sehingga sangat mempermudah proses optimasi SEO. Dan otomatis drupal bisa berjalan di Operating System apapun selama menggunakan webserver yang tersebut tadi.
Core
Sebuah framework yang ringan merupakan inti dari Drupal. Core framework inilah yang memberikan fungsionlitas utama untuk membangun sebuah website yang hebat. Core framework ini meliputi sejumlah module dan sebuah library agar Drupal dapat melayani request yang dikirimkan pengguna. Core module meliputi user management, basic content management, templating, dan beberapa lainnya seperti terlihat dalam gambar.
Antarmuka Administrasi
Antarmuka untuk proses administrasi website di Drupal sangat terintegrasi dengan keseluruhan website, artinya Drupal tidak memberikan antarmuka terpisah untuk administrasi seperti halnya dilakukan oleh CMS lain. Drupal menyediakan toolbar khusus jika kita login sebagai admin. Jadi bagi yang sudah terbiasa dengan WordPress dan Joomla biasanya di awal akan sedikit bingung melihat antarmuka administrasi Drupal 🙂
Modules
Drupal sangat sangat modular. Dan fungsionalitas tambahan diberikan dengan mengaktifkan atau menonaktifkan module yang ada. Jadi untuk website yang memerlukan fungsionalitas canggih cukup menambahkan contributed module yang luar biasa banyak, namun jika tidak diperlukan, silakan nonaktifkan module-module yang tidak diperlukan.
Dengan menggunakan cutom module kita bisa menambahkan tipe konten baru, seperti Resep Masakan, Data Customer, Data Jamaah Umroh/Haji, Data Penerimaan Mahasiswa Baru dan sebagainya. Serta bisa juga kita menambahkan kemapuan baru misalkan, pengiriman email otomatis ketika ada orang yang mendaftar Umroh/Haji, dan sebagainya.
Dan yang selalu perlu diingat adalah, Drupal lebih menyarankan membuat module sendiri untuk menambahkan (atau mengurangi) fungsionalitas Drupal, karena jika kita melakukan hack ke core module atau contributed module yang ada, maka semua perubahan yang kita lakukan akan hilang pada proses update security berikutnya.
Hook
Hook bisa diibaratkan event internal Drupal. Bisa juga disebut sebagai callback, namun bukan benar-benar sebuah callback, karena tidak menggunakan listener pada umumnya, namun hook dibuat menggunakan konvensi penamaan fungsi saja. Dengan hook ini, module yang kita buat bisa "hook into" atau "menempel" ke segala sesuatu yang terjadi di internal Drupal.
Misalkan pada saat proses login, maka otomatis Drupal akan muncul event hook_user_login() maka otomatis yang mengimplementasikan hook_user_login() akan ikut dipanggil. sebagai contoh jika module comment mengimplementasikan comment_user_login() maka fungsi ini akan ikut dijalankan ketika proses login. Contoh lain adalah jika kita membuat module khusus bernama spammer untuk memblokir spamming, maka otomatis fungsi spammer_user_login() juga akan ikut dijalankan
Node
Seluruh konten yang ada di Drupal berbasis pada satu tipe, yaitu node. Apapun website yang sedang kita bangun, blog sederhana, kumpulan resep makanan, atau to-do list sebuah project, maka struktur data dasarnya tetap sama. Pendekatan seperti ini membuat Drupal sangat mudah dikembangkan. Developer dapat menambahkan fitur seperti rating, komentar, file attachment, informasi lokasi, dan lain-lain tanpa perlu melihat jenis kontennya. Administrator kemudian bisa meramu fungsionalitas berdasarkan jenis konten, misalkan komentar hanya bisa untuk blog, tapi resep tidak. Atau attachment hanya bisa untuk to-do list, dan seterusnya.
Node juga memiliki beberapa behavior standar dan berlaku juga untuk jenis konten turunannya, misalkan bisa melakukan publish dan unpublish, promote dan unpromote node ke halaman muka. Dan dengan behavior yang seragam ini, kita dapat melakukan proses batch di antarmuka adminitrasi website.
Field
Konten di Drupal terdiri dari kumpulan Field-Field. Judul dan isi sebuah node adalah field. Kita bisa menggunakan field untuk membuat jenis konten apapun yang terlintas di pikiran kita. Misalkan kita ingin membuat Meetup, maka field yang mungkin diperlukan antara lain, nama meetup, deskripsi meetup, tanggal meetup, jam mulai, jam selesai, lokasi, dan link untuk proses registrasi.
Kita bisa menggunakan antarmuka administrasi Drupal untuk memngelola jenis konten dan field-fieldnya, namun untuk para hardcore programmer, tersedia Field API untuk membuat jenis konten dan fieldnya menggunakan coding.
Entity Type
- Nodes (content)
- Comments
- Taxonomy terms
- User profiles
Bundle
Entity
Jika Entity Type adalah abstraksi dari kumpulan field, maka Entity sendiri adalah instance dari Entity Type tertentu, seperti comment, taxonomy term atau user profile, or instance dari bundle seperti blog post, article, resep, atau product. Jika dianalogikan dengan konsep OOP, maka konsep Entity Drupal sangat mirip,
- Entity type adalah base class
- Bundle adalah inherited class, atau extended class.
- Field adalah class property, atau variable.
- Entity adalah instance dari base atau inherited class.
Theme
Ketika kita membuat sebuah web page, maka ada dua hal penting yang perlu diperhatikan, pertama adalah bagaimana kita mendapatkan data yang ingin ditampilkan, dan yang kedua adalah bagaimana kita menampilkan data yang sudah didapat tersebut. Drupal menggunakan PHP Template, namun kita bisa juga menggunakan templating engine lainnya, seperti Easy Template System (ETS), namun kebanyakan developer Drupal sudah merasa cukup dengan tempalting standar.
Ada 3 (tiga) cara untuk melakukan kustomisasi tampilan Drupal (atau themeing) antara lain,
- Membuat CSS tambahan untuk meng-override CSS standar Drupal
- Membuat sendiri file-file template baru, cukup mudah karena hanya berisi code HTML dan sedikit kode PHP.
- Dan untuk lebih jauhnya, kita juga bisa mengkustomisasi tampilan breadcrumb, menu, dll menggunakan fungsi buatan sendiri dan hook ke hook_theme()
Block
Block adalah bagian halaman yang bisa kita munculkan atau sembunyikan di lokasi tertentu dalam halaman web. Sebagai contoh block yaitu block yang menampilkan jumlah user yang aktif di website kita. Atau bisa juga block yang berisi daftar konten paling sering dilihat orang. Block umumnya ditempatkan di sidebar, header, atau footer dari halaman wab yang kita buat. dalam antarmuka administrasi, ada page khusus untuk mengelola block ini.
Seringkali, block digunakan untuk menampilkan sejumlah informasi yang khusus ditujukan untuk user yang sedang login pada saat itu, misalkan menampilkan link "My Account" yang ketika di-klik otomatis akan membuka halaman profile user tersebut.
Organisasi File
Pemahaman terhadap struktur folder Drupal akan sangat membantu kita mengetahui dimana Drupal menyimpan file seperti module, theme, dan lain-lain. instalasi standar Drupal akan memberikan struktur seperti gambar di bawah ini.
Folder yang cukup penting dan akan sering kita akses adalah
- Folder sites, digunakan untuk menyimpan file themes, modules, settings tambahan diluar file standar Drupal.
- Folder sites/default, berisikan setting website, seperti konfigurasi akses database dan sebagainya
- Folder sites/default/files, berisikan file-file yang kita upload melalui halaman administrasi Drupal
- Folder sites/all/modules, adalah tempat kita mengunggah contributed modules, dan custom module buatan kita sendiri.
- Folder sites/default/themes, adalah tempat kita mengunggah contributed themes, dan custom theme buatan kita sendiri
- Folder sites/default/libraries, adalah tempat kita mengunggah library tambahan seperti jQuery, CKEditor, dan sebagainya.
Simpulan
Mudah-mudahan artikel ini bisa membantu memahami apa itu Drupal, dan bagaimana Drupal bekerja secara umum. Detail masing-masing konsep yang dijabarkan di atas akan dibahas dalam artikel selanjutnya.
Cheers…