Drupal 7: Cara Membuat Form Fieldset Collapsible di Halaman Admin

Ketika form di halaman admin semakin banyak, maka untuk memudahkan mencari bagian form dan merapikan tampilan, lebih baik masih-masing set form dibuat collapsible atau bisa menyempit dan melebar.

Ada beberapa solusi di internet tapi solusi yang saya dapat dari sini seperti berikut yang sudah berhasil saya coba dan juga bagusnya berdasarkan Form API drupal.

$form['highlight'] = array(
    '#type'  => 'fieldset',
    '#title' => t('Highlight'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
    '#attached' => array(
        'library' => array(
            array('system', 'drupal.collapse'),
        ),
      ),
);

Baris ke-4 sampai ke-10 adalah inti dari collapsible function.

Drupal 7: Cara Ambil URL File yang Disimpan Melalui Custom Form Halaman Admin

Saya menemui kasus dimana dibutuhkan untuk menampilkan background image pada halaman tertentu website yang menggunakan drupal 7.

Supaya background image ini bisa diganti-ganti sesuai tema dan dengan cara manual, maka dibutuhkan form di halaman admin untuk menangani upload file.

File yang sudah di-handle di halaman admin perlu diambil url nya supaya bisa dipakai di halaman yang ingin kita tampilkan.

Saya menemukan beberapa sumber referensi, tapi disini yang paling lengkap prosesnya.

Pertama bikin menu admin dulu yang akan dipakai untuk mengakses halaman konfigurasi, termasuk upload file image tersebut.

<?php
/**
 * @file
 * mymodule.module
 */

/**
 * Implements hook_menu().
 */
function mymodule_menu() {
  $items['admin/content/set-default-header-image'] = array(
    'title' => 'Set Default Header Image',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(‘mymodule_set_default_header_image_form'),
    'access arguments' => array('access administration pages'),
    'file' => ‘mymodule.pages.inc',
  );

  return $items;
}

pada bagian ‘page arguments’ itulah nama function dimana form-nya ditempatkan.

<?php
/**
 * @file
 * mymodule.pages.inc
 * Part of the mymodule package.
 */
function mymodule_set_default_header_image_form(){

  // Add a managed file form element for uploading an image
  $form['mymodule_default_header'] = array(
    '#type' => 'managed_file',
    '#title' => t('Default Header Image'),
    '#description' => t('Set the site-wide default header image'),
    '#upload_location' => 'public://files',
    '#default_value' => variable_get('mymodule_default_header', ''),
  );

  // Add custom submit handler to set the file status to permanent
  $form['#submit'][] = 'mymodule_set_default_header_image_form_submit';

  return system_settings_form($form);
}

Selanjutnya adalah function yang berfungsi membuat file tetap sebagai variable permanen yang bisa diakses kapanpun melalui API bawaan drupal.

Snippet ini yang sebelumnya tertinggal dari percobaan-percobaan saya sebelumnya.

/*
 * Additional submit handler for making the file permanent
 */
function mymodule_set_default_header_image_form_submit($form, &$form_state){
  $form['mymodule_default_header']['#file']->status = FILE_STATUS_PERMANENT;
  file_save($form['mymodule_default_header']['#file']);
}

Dari fungsi diatas, kita bisa memanggil file dengan cara sebagi berikut

<?php

// Load image fid
$image_fid = variable_get('mymodule_default_header');

// Load image
$image = file_load($image_fid);

// Get URL
$url = file_create_url($image['uri']);

Snippet diatas bisa kita pasang di semua halaman atau file template drupal kita.

Cara yang sama mestinya bisa digunakan untuk file dengan ekstensi yang lain.

Drupal 7: Menggunakan Drupal API pada external Script

Kasus lagi dimana kita ingin menggunakan Drupal API untuk script yang dibangun diluar system drupal, tapi ingin kita gunakan untuk berinteraksi dengan system drupal. Salah satu kegunaannya adalah untuk menggunakan fungsi-fungsi database seperti db_query()  loading data users dll.

Dalam kasus saya, ingin digunakan pada script yang  menggunakan ajax

Setelah googling ke beberapa sumber, dari forum drupal, dokumentasi, dll, berikut kira-kira kode yang bisa kita gunakan

<?php 
//set the working directory relative to the script
$drupal_path='../../../';
chdir($drupal_path);
define('DRUPAL_ROOT', getcwd());

//Load Drupal API
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
?>

Tambahkan pada baris teratas script.

Drupal 7: Render Block Di Artikel Programatically

Mungkin ada yang mengalami kasus seperti saya, ingin menampilkan block dari custom modul di dalam artikel.

Setelah googling akhirnya menemukan code yang sudah berhasil saya coba yaitu seperti ini:

<?php
$block = block_load(<nama_modul>, <nama_block>);
print render(_block_get_renderable_array( _block_render_blocks(array($block))));
?>

Pasang di content artikel atau custom themes. Ganti <nama_modul> dan <nama_block> dengan data yang sesuai.

Mendengar Langit

Kalau Peterpan pernah membuat lagu dengan judul Langit Tak Mendengar, kali ini kita yang akan mendengarkan langit. Kata orang kan jangan nyuruh orang lain mendengar kalau kita tidak bisa mendengar.

Gimana cara mendengarkan langit? Apa itu mendengar langit? Apa yang didengar?

Langit kita yang diatas kita ini ternyata tidak diam. Disana penuh hiruk pikuk suara langit.  Tapi telinga kita tidak bisa mendengar langsung.

Darimana sumber suaranya?

Dari sisa-sisa ledakan saat pembentukan alam semesta, dari bintang, dari matahari, dari planet jupiter, dll.

Bagaimana cara mendengarnya?

Dengan teleskop radio. Antena yang didesain khusus untuk menangkap sinyal radio alami.

Apakah kita orang umum bisa mendengarnya?

Bisa, kita semua yang punya tv pernah mendengarnya. Suara mendesis televisi ketika tidak bisa menangkap siaran atau frekuensi pemancar tv, disitulah kita sedang mendengar suara langit. Suara ini adalah dari sinyal radio yang dipancarkan dari sisa-sisa ledakan besar saat pembentukan alam semesta.

Apa yang didengar cuma mendesis begitu?

Kalau kita pelajari lebih detail dengan antena lebih spesifik, kita bisa menemukan pola dari sinyal radio tersebut. Pola ini bisa kita citrakan dalam sebuah gambar. Dari pola ini kita bisa pelajari lebih detail lagi tentang benda yang memancarkannya.

Buat apa dengerin begituan?

Buat pengetahuan kita supaya kita memahami lingkungan kita. Keuntungan kita memahami lingkungan, kita jadi lebih bisa beradaptasi dan tau bagaimana menempatkan diri di lingkungan. Misalnya, dari memahami hujan, kita bisa menciptakan payung, jas hujan, penutup atap mobil, atau kenangan masa lalu ketika melihat hujan dari jendela :D.

Berbeda lagi dengan mendengarkan matahari, planet, bintang, dll. Linkungannya akan berbeda juga.

Menarik ya mendengarkan langit…