Templat yang kita bangunkan sebelum ini telah ditetapkan untuk menggunakan enjin PHPTemplate sebagai tunjang utama. Dengan gabungan fungsi Drupal yang dipanggil "preprocessing" atau pra-pemprosesan membolehkan kita mengawal beberapa fungsi yang dihasilkan oleh sistem Drupal sebelum ianya dilepas ke bahagian pembentukan laman.

Bagi melakukan proses ini, kita memerlukan satu fail yang menyimpan arahan dan kod aturcara tersebut. Fail tersebut dinamakan template.php.

Berbeza dengan fail-fail templat yang lain yang mempunyai sambungan tpl.php, fail template.php dikhaskan untuk menyimpan kod dan aturcara yang digunakan dalam sistem Drupal. Dan ianya merupakan salah satu keperluan untuk enjin PHPTemplate.

Penggunaan fail template.php

Memandangkan fail ini mengandungi kod-kod Drupal, anda seharusnya biasa dengan sistem dan skema penulisan kod Drupal serta mempunyai kemahiran dalam PHP. Memang tidak jalan pintas untuk memahami fungsi fail template.php melainkan pengalaman menggunakan Drupal.

Tetapi dalam tutorial ini, saya akan cuba untuk tunjukkan salah satu fungsi fail ini bagi menambah beberapa variasi dalam templat sebelum ini. Perhatikan kepada tangkap layar di bawah ini:

Antara kandungan dan senarai komen, tidak mempunyai pemisah atau tatatanda. Kita mungkin boleh mewujudkan satu garisan melalui kod CSS tetapi dalam kes ini kita akan masukkan satu tatatanda tulisan iaitu "Komen-komen".

Proses ubahsuaian ini tidak boleh dilakukan menerusi mana-mana fail templat sama ada comment.tpl.php atau pun page.tpl.php kerana kandungan dan senarai komen didatangkan sekaligus. Oleh itu, sebelum pakej "kandungan+komen" di hantar ke page.tpl.php untuk dipaparkan, kita akan selitkan satu kod arahan panambahan ke dalamnya.

Struktur penulisan template.php

Hasilkan satu fail dan namakannya sebagai template.php. Memandangkan fail ini akan ditarik masuk ke dalam sistem Drupal (include), maka kita hanya perlu menulis pembuka kod PHP sahaja iaitu <?php pada bahagian atas TANPA perlu menutup dengan ?>.

Kemudian masukkan kod PHP ini ke dalam fail tersebut dan siap.

function parasolx_preprocess_comment_wrapper(&$vars) {
  if ($vars['content'] && $vars['node']->type != 'forum') {
    $vars['content'] = '<h2 class="comments">'. t('Komen-komen') .'</h2>'.  $vars['content'];
  }
}

Drupal membolehkan kita mencipta sendiri fungsi atau "function" berdasarkan kepada setiap templat. Dalam erti kata mudah, Drupal menyediakan satu fungsi yang dinamakan _comment_wrapper yang mana fungsi ini adalah bungkusan senarai-senarai komen untuk satu-satu "nodes".

Bagi membolehkan fungsi ini diubahsuai sebelum ianya dilepaskan kepada enjin templat, sistem Drupal secara automatik menghasilkan satu fungsi maya untuk pra-pemprosesan iaitu _preprocess_comment_wrapper. Seandainya fungsi ini tidak digunakan, Drupal akan merujukan kepada fungsi asal iaitu _comment_wrapper.

Untuk fungsi maya _preprocess_comment_wrapper, sekiranya kita lakukan ubahsuai dengan fungsi ini tidak akan berlaku sebarang perubahan pada paparan kerana Drupal tidak tahu ianya perlu diamplikasikan kepada templat yang mana. Jadi, kita perlu memasukkan nama templat pada bahagian depan fungsi tersebut menjadi parasolx_preprocess_comment_wrapper.

Kod aturcara di atas akan menambahkan satu kod HTML apabila diterjemahkan oleh pihak pelayan seperti ini:

<h2 class="comments">Komen-komen</h2>

Seterusnya yang tinggal hanyalah menambah kod paparan CSS dalam fail style.css.

Kod atucara CSS untuk tag "Komen-komen"

Paparan akhir terhasil hasil dari kemasukkan kod CSS akan jadi seperti dalam gambar di bawah:

Satu gambar yang digunakan sebagai latar belakang tanpa mengulangnya dan satu garisan kelabu dihasilkan untuk menampakkan kesan pemisah antara kandungan dan komen-komen. Kod aturcaranya adalah seperti berikut:

#comments h2.comments {
  background: url(images/comment.gif) no-repeat center left #fff;
  padding-left: 25px;
  font: 18px/160% Arial;
  border-bottom: 2px solid #ddd;
}

Maka dengan ini kita sudah selesai menghasilkan satu templat ringkas Drupal dengan menerapkan banyak fungsi kepenggunaan di dalamnya.

Tag #: 
Penilaian: 
No votes yet