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: Structure Content Type Tidak Menampilkan Penuh

Ada kasus dimana halaman admin content type yand dibawah menu structure tidak menampilkan informasi secara penuh seperti form content type itu sendiri dan pengaturan yang lain. Seperti ada css atau javascript yang tidak ter-load dengan sempurna.

Saya menemukan solusi di internet yang menyatakan kalau masalahnya adalah di Token. Kemungkinan terlalu berat untuk menampilkan token sampai lapis 3.

Solusinya adalah setting token di bagian configuration>system>token supaya menampilkan list token hanya sampai kedalaman 2 saja. Secara default kedalaman token sampai 3 lapis.

Setelah diubah kedalaman token menjadi 2, halaman admin edit content type menjadi normal kembali.

Drupal 7 Google Custom Search

Google Custom Search adalah feature dari Google yang memungkinkan kita menambahkan searchbox pada website kita dimana hasil dari search akan diambil dari databasenya Google dan ditampilkan didalam halaman website kita.

Untuk kasus saya ketika menggunakan Drupal 7, idenya adalah menambahkan searchbox di bagian header website dan menampilkan hasilnya di halaman search.

Konsepnya buat form search-box di bagian header dan redirect hasilnya beserta kata yang dicari ke halaman search.

Pada halaman search, ambil kata kunci yang dicari menggunakan $_GET  . Masukkan juga script yang disediakan google di halaman search. Jangan lupa setting variable yang dipakai oleh kata kunci yang dicari. Biasanya google menggunakan variable q .

Sebelumnya buat content baru dengan type Basic page. Masukkan title Search dan kosongkan isinya.  Setelah itu buat template khusus untuk content ini.

Bagusnya drupal, kita bisa membuat template khusus untuk node atau content tertentu. Dalam kasus ini, buat file template dengan format page–node–[nomor node].tpl.php . Nomor node disesuaikan dengan nomor node dari content yang kita buat untuk halaman search.

Dan Selesai…!

Menampilkan Posting Dengan Hanya Tags Tertentu di Halaman Depan WordPress

image source http://hillmediagroup.com , 2015
image source http://hillmediagroup.com , 2015

Kenapa kita perlu mem-filter hanya postingan dengan tags tertentu? jawabannya adalah 1. Ingin mengangkat postingan lama yang sudah terpendam jauh di bawah dan postingan baru yang dihalaman depan sudah terlalu lama muncul, 2. Ingin memfokuskan pengunjung ke topik (tags) tertentu ketika membuka halaman pertama, 3. Suka-suka aja pengen ngotak-ngatik blog.

Kalau pada postingan sebelumnya membahas Menampilkan Hanya Kategori Tertentu di Halaman Depan WordPressdisini kita filter postingan yang ada di halaman depan berdasarkan Tags.

Pada intinya sama dengan filtering berdasarkan kategori, hanya saja pada bagian code kategorinya diganti dengan code tags.

Gunakan code berikut:

<?php
query_posts('tag=radio' . '&showposts=10'.'&paged='.$paged);
?>

Hanya saja kalau pada filtering berdasarkan kategori, kita gunakan nomor kategori. Sedangkan disini kita gunakan kata tags-nya sendiri. Dalam contoh kode diatas yaitu radio .

 

Menampilkan Hanya Kategori Tertentu di Halaman Depan WordPress

image source http://hillmediagroup.com , 2015
image source http://hillmediagroup.com , 2015

Ada suatu kasus dimana kita ingin menampilkan satu atau beberapa jenis kategori saja yang ingin ditampilkan di halaman depan blog. Pengunjung yang membuka alamat utama blog kita, yang muncul adalah postingan-postingan di kategori yang telah kita pilih tersebut.

Sebagai solusi untuk kasus diatas, kita bisa memasukkan satu baris kode di theme wordpress kita. Cara ini syaratnya kita menggunakan wordpress di hosting sendiri, bukan hosting free yang disediakan wordpress.

Masuk ke dalam theme editor di mode admin dan sisipkan kode <?php query_posts(‘cat=3,57’ . ‘&showposts=10′.’&paged=’.$paged); ?>  dan masukkan ke dalam file index.php tepat di bawah baris <div id=”main-content” class=”main-content”> .

Ganti bagian ‘cat=3,57’ dengan nomor kategori yang diinginkan. Setelah selesai dan diupdate file index.php -nya, kita bisa refresh dan posting yang muncul hanya kategori yang telah kita pilih.

Referensi:

Display Only Certain Categories or Single Post on Home Page in WordPress