Drupal

Segalanya mengenai Drupal

Bengkel Pembangunan Laman Web Drupal 7 di Pejabat Tanah dan Galian Selangor

Pada 25 hingga 27 Februari 2014, bengkel Pembangunan Laman Web Drupal 7 telah berjaya disempurnakan di Pejabat Tanah dan Galian Selangor. Bengkel ini diadakan bagi tujuan memberi pendedahan kepada staf Seksyen Teknologi Maklumat yang menguruskan portal rasmi jabatan tersebut. Seramai 7 orang peserta telah menghadiri bengkel ini yang diadakan di lokasi agensi.

bengkel drupal ptgs

Pejabat Tanah dan Galian Selangor mengemas kini laman portal mereka daripada sistem Easy Publisher kepada Drupal 7 setelah mempertimbangkan keupayaan Drupal sepenuhnya. Drupal dipilih kerana mampu untuk memenuhi keperluan fungsian terutamanya paparan portal itu sendiri.

Tujuan utama bengkel ini diadakan adalah untuk memberi pendedahan secara total agar pihak staf dapat mengendalikan portal yang telah dibangunkan dengan lebih yakin. Secara kasar, bengkel kali ini dijalankan menggunakan modul asas dan pertengahan. Walau bagaimanapun terdapat sedikit pengubahsuaian garis pembelajaran asal memandangkan ke semua peserta yang hadir mempunyai latar belakang teknologi maklumat yang kuat.

bengkel drupal ptgs

Di akhir bengkel ini, boleh disimpulkan peserta mendapat kefahaman yang lebih jelas mengenai Drupal, bagaimana ianya berfungsi dan melakukan konfigurasi asas pada Drupal. Difahamkan peserta yang hadir bakal membangunkan sebuah sistem ringkas untuk kegunaan dalaman menggunakan Drupal. Semoga berjaya.

[Snippet] Numbering index for comment

Default comment system in Drupal providing variables $id to be used as index and numbering for each comment. However, when continue to another page, this number will start to 1 again. This snippet will help to determine the current number of comment per page and recalibrate for each pages.

Add these code into template.php for current theme.

<?php
function THEME_preprocess_comment(&$vars) {

  // Calculate the true comment index
  $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 0;
  $comments_per_page = variable_get('comment_default_per_page_' . $vars['node']->type);
  $index = ( $page * $comments_per_page ) + $vars['id'];
  $vars['comment_index'] = l(
    '#' . $index, 'node/' . $vars['comment']->nid,
    array(
      'fragment'=>'comment-' . $vars['comment']->cid,
      'attributes' => array(
        'title' => t("Link to this comment")
      ),
    )
  );
}
?>

Replace or used $comment_index string in comment.tpl.php

<?php print $comment_index; ?>

[Snippet] Load image alt and title in content

In Drupal 6, there is a module call ImageField Token which automatically define in markup. In Drupal 7, it can be done through theme preprocessing by using this code:

function MYTHEME_preprocess_image(&$vars) {
  // alt
  if (empty($vars['attributes']['alt'])) {
    $vars['attributes']['alt'] = DEFAULT_IMAGE_ALT;
  }

  // title
  if (empty($vars['attributes']['title'])) {
    $vars['attributes']['title'] = DEFAULT_IMAGE_TITLE;
  }
}

Ralat "strict warning: Non-static method view::load_views()"

Ini adalah penyelesaian untuk masalah pengguna Drupal 6 dengan modul Views. Ralat ini kerana Views versi D6 dibangunkan untuk PHP versi 5.3. Kebanyakan pengehosan sekarang sudah meningkat upaya kepada PHP 5.4 yang mempunyai standard yang lebih ketat atau "Strict warning" terhadap penggunaan kod PHP.

Antara ralat yang dipaparkan adalah:

strict warning: Non-static method view::load_views() should not be called statically in /public_html/sites/all/modules/views/views.module on line 1076.

Langkah untuk penyelesaian

Cari baris ralat yang dipaparkan. Kod tersebut adalah:

$views = view::load_views();

Gantikan kod ini dengan kod di bawah:

$r = new view();   
$view = $r->load($name, $reset);

Gantikan semua baris yang mempunyai kod yang sama. Simpan fail tersebut dan muat naik.

Atau, anda boleh muat turun modul Views 6.x-3.0 (berdasarkan kepada keluaran 19 Oktober 2013) di bawah yang telah saya "patch" untuk lebih mudah.

Bengkel Pembangunan Laman Web (Drupal Asas) di Bahagian Perkhidmatan Farmasi Johor

Pada 25 dan 26 November 2013 yang lalu telah berlangsung di MSC Cyberport, Johor Bharu satu bengkel pembangunan laman web dengan Drupal 7 memfokuskan kepada modul pembelajaran peringkat asas. Bengkel ini dihadiri hampir 15 orang peserta yang berpangkat pegawai farmasi, berorientasikan pembelajaran secara praktikal mendapat reaksi yang memuaskan.

Fokus utama bengkel ini adalah untuk memberi pendedahan kepada peserta mengenai penggunaan Drupal sebagai alat dan aset untuk membangunkan laman web. Ini kerana hampir ke semua peserta tidak pernah mempunyai pengalaman dalam menggunakan sistem sumber terbuka. Selain itu, latar belakang yang tidak berpaksikan kepada teknologi maklumat adalah antara cabaran paling tegar untuk bengkel kali ini.

bengkel pembangunan drupal bpf johor

Pihak penganjur mengharapkan hasil daripada kursus yang dijalankan, peserta berupaya untuk membina laman web agensi sendiri. Walaupun sukatan dan modul bengkel yang agak ketat, kebanyakan peserta mampu untuk menggunakan Drupal semasa sesi dijalankan. Terma-terma dan suntingan asas dalam menggunakan Drupal berjaya dilaksanakan dengan baik. Sungguhpun begitu terdapat beberapa modul peringkat pertengahan diselitkan agar peserta mendapat gambaran yang lebih jelas tentang kekuatan dan fleksibelnya menggunakan Drupal.

bengkel pembangunan drupal bpf johor

bengkel pembangunan drupal bpf johor

Pada pengakhiran bengkel, pada pengamatan kami ianya berjaya memberi pendedahan, pengalaman baru dan kemahiran yang belum pernah dimiliki oleh peserta. Semoga setiap peserta mendapat kebaikan daripada kursus yang dianjurkan.

Drupal 8 Sudah Semakin Hampir, Apa Yang Istimewa Mengenainya?

Pada 20 hingga 24 Mei 2013 yang lepas telah berlangsung Drupal Conferences atau singkatannya adalah DrupalCon di Portland, North America. DrupalCon merupakan satu acara yang mengumpulkan semua pakar-pakar dan pembangun sistem Drupal untuk duduk dan berbincang mengenai hala tuju sistem tersebut. Sebagai pengelola sistem secara sah, Dries Buytaert selalunya akan membentangkan "key notes" beliau kepada semua pihak sebagai panduan dan pandu arah. Paling menarik di DrupalCon Portland adalah penayangan video pendek mengenai tingkat upaya yang dibuat pada Drupal 8.


Saksikan video tersebut di bawah ini.




Enam penekanan diterangkan dengan jelas dalam video ini iaitu:


  1. Content authoring
  2. Multilingual
  3. Web Services
  4. Views in Core
  5. Configuration Management
  6. Mobile


#1 Content authoring


Borang kemasukan kandungan ditambah baik dengan mewujudkan dua lajur yang mengasingkan ruangan untuk menulis dan konfigurasi kandungan. Selain itu CKEditor iaitu teks editor yang lebih dikenali sebagai WYSIWYG (What You See Is What You Get) telah diserap masuk terus secara lalai. Bermakna selepas pemasangan, Drupal 8 boleh digunakan secara terus seperti teks editor yang lain. Sokongan "drag-and-drop" juga telah ditambah seperti memuat naik fail media secara pukal dan salinan teks format daripada perisian teks seperti Microsoft Word.


Paling mengagumkan dalam Drupal 8 adalah sokongan untuk melakukan suntingan secara "inline" atau terus daripada laman sebenar. Suntingan "inline" ini merangkumi node, views, blok dan lain-lain elemen medan seperti tajuk, taksonomi dan medan-medan tambahan. Kebanyakan sistem mengasingkan antara suntingan kandungan dengan halaman sebenar untuk privasi data dan lain-lain akses capaian. Butang "Preview" atau pratonton juga akan dipaparkan kepada templat yang aktif dan bukan lagi di paparan pentadbiran.


#2 Multilangual


Sokongan multi bahasa adalah antara inisiatif yang paling kerap diutarakan semenjak Drupal 7 lagi. Dalam Drupal 8 isu ini diketengahkan untuk dilakukan peningkatan dan penambahbaikan termasuk pengurangan kepada hanya tiga modul daripada 13 modul bagi pengaktifan multi bahasa untuk keseluruhan laman. Selain itu, proses terjemahan untuk setiap elemen dipermudahkan termasuk node, blok dan lain-lain elemen. Kemas kini untuk pakej bahasa juga dilakukan secara automatis. Maka kita tidak perlu lagi "mengotorkan" tangan untuk log masuk menerusi FTP bagi mengemas kini perpustakaan bahasa. Terjemahan diasingkan kepada dua bahagian iaitu untuk bahagian laman web dan bahagian pentadbiran.


#3 Views in Core


Bagi pengguna Drupal, Views merupakan antara modul yang paling berkuasa. Kini ianya berada di dalam "core" Drupal 8. Dengan kekuatan yang ada pada Views, ke semua paparan pentadbiran di tingkat upaya untuk menggunakan Views. Pentadbir boleh mengubah dan melakukan penambahbaikan mengikut keperluan tersendiri. Paparan ini merangkumi "List of content", "List of User" dan lain-lain paparan yang melibatkan penggunaan jadual.


#4 Web Services


Apabila berbicara mengenai sistem pengurusan kandungan, ianya tidak cukup fleksibel sekiranya hanya terhad kepada sistem itu sahaja. Inilah yang dikuasakan oleh Drupal 8 di mana setiap tetapan, konfigurasi dan kandungan boleh dieksport ke dalam bentuk XML atau JSON. Seterusnya maklumat ini dihantar kepada sistem atau pelantar lain seperti aplikasi pada mobil. Data-data tersebut kemudian akan dibaca dan diterjemahkan dalam pelbagai bentuk persembahan secara terus. Konsep COPE iaitu "Create Once, Publish Everywhere" merupakan kunci dan tonggak utama kepada inisiatif ini.


#5 Configuration Management


Kesukaran yang dialami oleh pembangun laman menggunakan Drupal atau mana-mana CMS yang lain adalah konfigurasi. Berlainan dengan sistem yang dibina secara "custom", sistem Drupal mempunyai struktur pangkalan data yang standard. Bagi golongan yang sangat amatur, proses salinan konfigurasi sistem daripada komputer "localhost" perlu dibuat menerusi backend dan bukan semua pakar menguruskannya. Drupal 8 mengasingkan semua konfigurasi daripada pangkalan data dan disimpan dalam bentuk fail. Di samping mengurangkan capaian kepada pangkalan data, saiz dan beban kepada pelayan, konfigurasi sesuatu laman boleh dikemas kini, diguna pakai dan dipindah milik hanya dengan melakukan salinan pendua menerusi akses FTP sahaja. Hebat!


#6 Mobile


Internet ada di mana-mana. Kini dengan teknologi telefon pintar, laman web boleh diakses di mana-mana, dalam apa jua bentuk platform dan peranti. Inisiatif yang terakhir ini memastikan Drupal 8 adalah sepenuhnya menyokong paparan pada mobil. Ini termasuklah "responsive" templat yang mengambil kira perubahan saiz skrin. Ianya bukan terhad kepada templat sahaja (yang mana hampir kebanyakan CMS hari ini sudah menggunakannya) sebaliknya sistem itu sendiri. Modul tambahan iaitu Breakpoint yang bertindak untuk memaparkan saiz gambar berlainan pada saiz media yang berlainan, bukan satu gambar yang diskalakan kepada 100%. Modul Breakpoint ini disambungkan dengan modul ImageStyle. Maknanya pada iPhone kita akan melihat gambar hitam putih bersaiz 300px, manakala di desktop pula dengan kesan Sephia pada saiz 500px yang menuntut pengguna memuat naik satu gambar sahaja.

Pemeringkatan kandungan (content staging) dalam Drupal 8

Drupal 8 sudah semakin dekat untuk dilepaskan oleh pihak komuniti Drupal.org yang dijangka bakal menggemparkan dunia pembangunan laman web sekali lagi pada bulan September 2013 ini. Drupal 8 dilihat satu titik baru kepada Drupal itu sendiri kerana seakan-akan dijenamakan semula dengan pelbagai fungsi, susunan kod dan integrasi dengan beberapa elemen tambahan yang baru.


Pada awal pembangunan, Drupal 8 menekankan kepada lima aspek elemen utama dalam penambahbaikkan yang akan dilakukan. Walau bagaimanapun, setelah beberapa perbincangan dan inisiatif yang dilakukan, akhirnya kini jelas Drupal 8 telah memfokuskan kepada tujuh (7) aspek pembangunan utama iaitu Configuration Management, HTML5, Layouts, Mobile, Multilangual, Views in Core dan Web services.


Perkara yang paling menarik untuk dibicarakan kali ini adalah mengenai topik pemeringkatan kandungan atau Content staging di bawah aspek Configuration Management. Berdasarkan kepada standard NPR yang menekankan konsep COPE (Create One, Publish Everywhere), penghasilan kandungan merupakan antara ruang atau jarak yang paling besar dalam satu-satu sistem pengurusan kandungan.


COPE is really a combination of several other closely related sub-philosophies, including:


  • Build content management systems (CMS), not web publishing tools (WPT)
  • Separate content from display
  • Ensure content modularity
  • Ensure content portability


https://www.programmableweb.com/news/cope-create-once-publish-everywhere/2009/10/13


Create One Publish Everywhere

Konsep Create One, Publish Everywhere


Bagi membenarkan konsep COPE diimplementasi dalam Drupal 8 telah menjadi perbahasan yang agak tegang antara pihak komuniti memandangkan penggunakan WYSIWYG atau teks editor CKEditor mengandungi markup atau kod HTML. Setiap platform paparan mempunyai format tersendiri dalam persembahan kandungan. Antara cadangan yang dinyatakan adalah untuk tidak menggunakan sebarang editor atau mencipta editor tersendiri yang mengasingkan teks dan markup. Dengan cara ini, teks disimpan di dalam pangkalan data sebagai raw atau plain text. Manakala markup pula disimpan berasingan dan dipanggil sewaktu teks diterjemahkan ke dalam bentuk paparan Drupal.


Walau bagaimanapun, pendapat dan idea ini tidak diterima memandangkan visi atau pandangan yang diberikan terlalu jauh ke hadapan sedangkan fokus dan tujuan utama Drupal 8 adalah menyediakan satu platform penghasilan kandungan secara lebih mudah, teratur dan berperingkat. Kandungan tersebut pula mengaplikasikan HTML5 dan memaksimumkan konsep responsive. Tambahan, pihak komuniti bersetuju bahawa tidak menjadi masalah untuk mengetengahkan konsep COPE satu masa nanti memandangkan Drupal pemproses setiap kandungan menerusi Input Format atau dalam D7 Text Format.


Kelebihan Text Format adalah kandungan disimpan dalam bentuk teks dan markup yang asal daripada input. Sebelum ianya dilepaskan kepada sistem theme layer, kandungan diproses dan ditapis oleh Text Format. Maka sekiranya kandungan tersebut diperlukan oleh kandungan lain, ianya akan melalui pemprosesan sebelum dihantar mengikut jenis dan bentuk format yang diperlukan.


Dengan kombinasi yang sedia ada, setiap kandungan akan melalui beberapa peringkat yang ditambah baik termasuklah menggunakan konsep modul Workflow. Kandungan dalam Drupal 8 kini boleh ditetapkan untuk melalui frasa deraf, terbitan, terbitan dilaman utama, terbitan yang diutamakan dan tidak dipaparkan.

Drupal dan Apache Solr, enjin carian ala-ala Google

Drupal sememangnya telah terkenal dan menjadi jenama identiti sebagai sistem pengurusan kandungan yang begitu hebat dalam SEO. Selain itu keupayaannya untuk mengendalikan pangkalan data yang bersaiz besar dengan sempurna adalah antara teras utama kebanyakan syarikat dan penyedia laman web gergasi bertukar kepadanya. Dengan kandungan yang begitu banyak, agak sukar untuk kita menyusun setiap kandungan agar mudah dicapai oleh pengguna.


Salah satu fungsi yang sedia ada dimuatkan dalam pakej Drupal adalah "Search" atau carian. Secara lalainya Drupal akan menjalankan proses mengindeks pada setiap entiti node seperti tajuk dan medan-medan yang digunakan. Indeks ini akan digunakan sebagai senarai perbandingan terhadap frasa atau kata kunci carian yang digunakan oleh pengguna. Namun begitu, akibat kengkangan pemprosesan dan capaian data, hasil carian kadang kala terlalu perlahan. Masa yang lebih lama perlu diambil oleh pelayan untuk membaca set carian yang sangat besar dan kompleks.


Meningkatkan tahap kelajuan carian


Salah satu cara untuk memastikan proses carian boleh dijalankan dengan lebih pantas pada laman web Drupal adalah dengan mengubah tatacara pemprosesannya yang asal. Proses daripada capaian kepada pangkalan data diubah ke bentuk capaian yang lebih pantas seperti XML. XML merupakan bahasa pengaturcaraan yang digunakan untuk menghantar dan menerima data-data pada kelajuan yang sangat pantas. Berbeza dengan pangkalan data (MySQL atau SQLite) di mana data perlu dibaca daripada pangkalan data, diproses dan dihantar dalam bentuk "query". Berbeza XML data dihantar dalam bentuk skematik, JSON ataupun Ajax.


Selain itu, XML tidak melibatkan pemprosesan terhadap pangkalan data sebaliknya ianya dijalankan sepenuhnya oleh pelayan. Pada situasi yang sama, carian pada indeks pangkalan data melibatkan dua proses yang berbeza iaitu carian pada pangkalan data dan diproses oleh pelayan. Inilah antara sebab mengapa kebanyakan migrasi atau penghantaran data dilakukan menerusi XML.


Apache Solr


apache solr


Apache Solr merupakan modul tambahan atau "plugin" kepada kod pengaturcaraan PHP yang dijanakan oleh Apache. Apache Solr mengindeks dan menghantar keputusan (result) dalam bentuk XML sekiranya arahan carian dilancarkan. Carian keputusan seterusnya akan dikategorikan mengikut acuan atau dipanggil "facet". Solr ditulis dalam kod pengaturcaraan Java yang jauh lebih pantas daripada PHP dan MySQL. Dengan menggunakan kaedah integrasi, Apache Solr akan menggantikan sepenuhkan fungsi carian lalai Drupal dan setiap frasa carian dibuat, ianya dijalankan sepenuhnya oleh Solr.


Sungguhpun begitu, bagi mana-mana pembangun, pemilik atau pereka laman web menggunakan Drupal perlulah memiliki sekuranga-kurangnya langganan hosting untuk jenis VPS dan yang terbaik adalah Dedicated. Ini disebabkan konfigurasi perlu dibuat pada pelayan dan laman utama portal.


Carian Autocomplete dan Suggested


Dengan Apache Solr, Drupal mampu untuk menterjemah dan belajar daripada hasil carian menerusi senarai cadangan atau "suggestion" sewaktu pengguna mula membuat carian. Bagi kes-kes laman yang mempunyai kandungan tersendiri, Solr bijak dalam memberi kata kunci cadangan untuk membantu pengguna dalam membuat carian dengan lebih efektif berbanding enjin carian yang disedikan secara lalai oleh Drupal.

Pelbagai integrasi pendaftaran pengguna pada sistem Drupal

Dengan merujuk kepada artikel terbaru yang ditulis di laman Kripkorn Studios, "Konsep asas sistem log masuk dan log keluar", Drupal menyediakan pelbagai bentuk sistem pendaftaran pengguna termasuklah menerusi integrasi sosial media seperti Facebook, Twitter dan lain-lain. Walau bagaimanapun terdapat beberapa kengkangan yang menyebabkan integrasi ini gagal dijalankan dengan sempurna pada Drupal.


Integrasi siap sedia dengan sistem lain


Seperti sedia maklum, terdapat lebih ratusan sistem pengurusan kandungan yang dibina dan dicipta semenjak lahirnya konsep sumber terbuka ini. Setiap sistem mempunyai fokus dan minat tersendiri seperti blog, forum dan pengurusan media.


Sekiranya mana-mana sistem Drupal telah diintegrasikan dengan lain-lain sistem pengurusan kandungan, penggunaan integrasi pendaftaran pengguna menerusi sosial media akan gagal. Antara modul yang disediakan pada Drupal adalah seperti Facebook OAuth dan Facebook Connect.


Kegagalan ini bukan disebabkan oleh kekurangan pada Drupal tetapi perbezaan token pengesahan atau sesi ID yang diberikan oleh aplikasi Facebook kepada Drupal. Sekiranya sistem sepenuhnya bergantung kepada Facebook sahaja, integrasi Drupal--CMS lain--Facebook boleh dijana tanpa sebarang masalah.


Tetapi perlu diberi perhatian bahawa tidak semua pengguna yang hadir mempunyai akaun Facebook. Kengkangan ini memaksa Drupal perlu menyediakan alternatif sistem pendaftaran atau log masuk yang asal. Pendaftaran atau sesi log masuk menggunakan sosial media ini tidak akan menghasilkan kata laluan memandangkan pengesahan dibuat menerusi aplikasi yang disediakan. Oleh itu sekiranya pengguna telah memadamkan akaun sosial medianya, maka tiada cara untuk log masuk ke dalam sistem secara manual.


Pengesahan aktiviti dan kewujudan akaun


Drupal menetapkan beberapa maklumat yang akan aktif dikemas kini menerusi proses log masuk secara lalai. Seandainya kaedah log masuk digantikan menerusi sosial media, aktiviti ini tidak akan dipantau dan disimpan. Ini menyebabkan beberapa keperluan maklumat yang diperlukan dalam integrasi antara Drupal dengan CMS yang lain tidak boleh dijalankan.


Ini menyebabkan pengguna log masuk pada Drupal tetapi tidak mendapat pengesahan daripada sistem yang satu lagi. Situasi ini berlaku pada laman Kripkorn Studios di mana cubaan untuk menyediakan kemudahan integrasi dengan sosial media gagal dilaksanakan.


Sehingga kini, masih belum ada jalan penyelesaian untuk permasalahan ini.

[Custom module] Sendnotes


Versi: 7.x-1.0



Fungsi: Modul ini berfungsi menyediakan satu borang untuk memaklumkan penulis kandungan melalui penghantaran emel. Emel yang dihasilkan dihantar menerusi fungsi drupal_mail(). Modul ini sangat kecil dan tidak memerlukan sokongan pangkalan data. Pembaca atau pengendali laman boleh memakluman sebarang perubahan terhadap kandungan spesifik kepada penulis asal. Pautan kepada kandungan dihasilkan secara automatik oleh modul ini. Selain itu, ianya dilengkapi dengan medan Carbon copy (cc) yang membolehkan salinan emel dihantar kepada daripada seorang penerima.





Setelah dipasang, satu menu pada bahagian "action links" Drupal akan dipaparkan pada setiap kandungan.





Ini adalah borang yang disediakan oleh modul ini. Bagi pengguna berdasark, nama dan emel akan diisi secara automatik di medan pengirim. Bagi pengunjung tetapi, ruangan ini membenarkan tetamu memasukkan nama dan alamat emel persendirian. Medan ini berfungsi agar mesej yang dihantar kepada penulis boleh dimaklumkan kembali kepada pengirim. Alamat URL halaman berkenaan dilampirkan bersama dalam emel secara automatik.



Fungsi modul ini mudah memandangkan proses pembinaanya juga sekejap, sekitar 2 jam sahaja. Namun kegunaannya boleh diaplikasikan lebih daripada fungsinya. Sebagai contoh, laman komuniti boleh menggunakan modul ini untuk memastikan maklum balas kandungan boleh dihantar terus kepada penulis (bagi kes laman komuniti berbilang penulis) secara peribadi (tiada paparan emel penulis dipaparkan). Bagi laman korporat, pihak pengurusan tertinggi boleh memastikan setiap kandungan terkini dan dikemas kini oleh pihak pengendali/pekerja.

Subscribe to Drupal