Drupal 7 telah dibangunkan dengan memperkenalkan empat konsep terbaru iaitu "Entity types", "Bundles", "Fields" dan "Entity". Konsep ini diperkenalkan bagi membenarkan implementasi modul Content Construction Kit (CCK) yang digunakan hampir kebanyakan laman semenjak Drupal 5.



Secara umum, keempat-empat konsep ini adalah berkaitan dan merupakan subset kepada setiap satu konsep iaitu: Entity types > Bundles > Fields > Entity. Bermaksud kita boleh mencipta atau membina sebarang Entity types, yang seterusnya akan dijadikan satu Bundles. Seterusnya Bundles ini akan dilampirkan dengan beberapa Fields bagi menghasilkan satu Entity. Komponen ini adalah perubahan yang terbesar dibuat dalam Drupal 7 berbanding Drupal 6.



Seandainya anda pernah menggunakan Drupal 6 sebelum ini, anda pastikan mengetahui terdapat kengkangan terhadap mencipta medan (fields) tambahan kepada komponen pengguna, komen atau taksonomi. Komponen ini tidak fleksibel seperti node (kandungan). Mereka juga tidak mempunyai fungsi seperti versioning (sejarah), terjemahan dan lain-lain. Ia juga memberi kengkangan kepada modul lain dalam mengguna dan memanggil data-data selain daripada node. Eksperimen dilakukan terhadap Drupal 6 adalah menjadikan komponen pengguna, komen dan taksomoni ini seolah-olah node (kandungan) tetapi kebanyakannya tidak menunjukkan hasil yang sempurna. Ini menyebabkan maklumat node terpaksa disuntik ke dalam komponen ini (yang hakikatnya tidak perlu) menjadikan Drupal 6 begitu perlahan dari segi prestasinya.



Bagi mewujudkan satu sistem yang ringan dan tidak kompleks, Drupal 7 telah mencipta konsep di atas agar ianya lebih fleksibel dan lebih mudah diskalakan.



Entity types



Dalam versi sistem terdahulu, konfigurasi untuk medan tambahan hanya tertumpu kepada kandungan iaitu node. Semua data pangkalan data akan menggunakan node sebagai tunjang kepada panggilan daripada pangkalan data. Ini adalah kengkangan yang wujud pada ketika itu. Terdapat lanjutan maklumat yang terpaksa dipanggil menjadikan sistem terdahulu sukar mencapai tahap prestasi yang optimum.



Data taksonomi, komen dan pengguna perlu bergantung penuh kepada jadual data node (kandungan). Bagi membuka ruang kengkangan ini, konsep entity types diwujudkan. Setiap kandungan node, taksonomi, komen, pengguna dan lain-lain data dalam Drupal kini diterjemahkan kepada entity type. Setiap entity type membenarkan struktur Drupal untuk melampirkan sebarang medan (fields) tambahan kepadanya tanpa kebergantungan kepada node.



Lebih menarik, kepada pembangun, konsep ini membenarkan kita mencipta sebarang entity types lain seperti quiz, order, forum dan lain-lain yang hadir daripada pemasangan modul tambahan menerusi API Drupal hook_entity_info. Melalui penggunaan modul Entity API, fungsi API ini dilengkap dengan entity_crud_hook_entity_info.



Bundles



Bundles elemen subset kepada entity type. Lebih mudah diterangkan bundles merupakan pengelasan yang lebih spesifik untuk entity type yang ada. Sebagai contoh, node (entity type) boleh dikelaskan kepada beberapa jenis kandungan (content type) seperti artikel, blog, blog atau produk.



Walau bagaimanapun, tidak semua entity type perlu diwujudkan satu bundles. Entity type seperti pengguna (users) tidak mempunyai pengelasan lanjut tetapi berfungsi pada data tersendiri. Bagi entity type yang menyokong penghasilan bundles, kita dibenarkan untuk mencipta seberapa banyak bundles seperti mencipta jenis kandungan tanpa sebarang had di ruangan Administer Structure Content type. Seterusnya bundles ini membenarkan kita untuk mencipta medan tambahan menerusi fields.



Fields



Fields merupakan kelompok data yang boleh digunakan berulang kali. Secara teknikal, field merupakan sejenis data primitif, yang didatangkan dengan validasi dan widget tertentu bagi tujuan suntingan dan bentuk paparan. Fields boleh dihasilkan dalam pelbagai bentuk maklumat seperti tarikh, medan teks, teks panjang, pilihan, gambar, fail dan lain-lain elemen.



Perkara yang penting bagi fields adalah ianya boleh dilampirkan kepada sebarang bundles (atau entity types) bagi membantu dalam pengurusan data. Sebagai contoh, kita mencipta satu jenis kandungan baru iaitu produk. Dengan menggunakan fields, kita mencipta satu elemen medan teks bagi memasukkan data harga. Data widget yang sama boleh dilampirkan kepada bundles yang lain seperti tempahan atau pendaftaran acara.



Fields amat-amat membantu pembangun laman web dalam "query builder" seperti penggunaan modul Views.



Entity (entities)



Manakala entity secara kasarnya merupakan komponen lengkap digunakan oleh Drupal untuk menghasilkan satu dokumen kandungan lengkap seperti komen dan terma taksonomi pada kandungan, terbitan kandungan seperti blog atau artikel.



Kita boleh membaca dan memanggil setiap satu entity ini untuk dipaparkan pada kandungan menerusi API Drupal entity_load. Walau bagaimanapun Drupal tidak menyertakan aktiviti untuk menyimpan (save), mengemas kini (update) dan memadam (delete) entity secara lalai. Kewujudan modul Entity API sekali lagi melengkapkan jurang yang tertinggal di dalam Drupal core melalui panggilan API entity_create(), entity_save(), entity_delete(), entity_view() dan entity_access().



Entity sebagai Object Oriented (OO) dalam pengaturcaraan



Sekiranya anda mempunyai latar belakang dalam pengaturcaraan natif, konsep entity ini adalah menyamai konsep yang digunakan sebagai Object Oriented Programming. Ianya boleh ditakrifkan seperti berikut:








Drupal Entity

Object Oriented (OO)

Entity type

base class

Bundle

extended class

Field

class member, property, variables, field instance

Entity

object/instance kepada base/extended class 
Penilaian: 
No votes yet