Tutorial: Bina Module Slideshow untuk Joomla! 1.5.x

Nota:

Tedapat tutorial yang sama tetapi untuk WordPress plugin di sini: Tutorial: Bina Slideshow Plugin Untuk WordPress 3.0.x.

Kebanyakan laman web sekarang mempunyai image slideshow pada laman utama. Ianya sudah boleh dikatakan satu benda yang wajib ada, bergantung kepada jenis laman web itu sendiri. Tapi jika kita perhatikan, memang kebanyakan pemilik laman web suka dengan slideshow di laman web mereka. Lagi banyak animation, lagi mereka suka. Dan kalau boleh semua diorang nak animate :P

Jika kita search Joomla! Extensions Directory, terdapat banyak module slideshow yang ada di sana, Commercial atau Non-commercial. Tapi, pernahkah anda terfikir untuk cuba menghasilkannya sendiri? Kali ini saya ingin menunjukkan cara cara menghasilkan module slideshow untuk Joomla! 1.5.x yang menggunakan jQuery dan juga Coin Slider. Slideshow ini akan menggunakan semua imej yang terdapat di dalam folder yang kita akan tetapkan nanti.

Keperluan

Joomla! 1.5.x (terkini)

Code Editor (saya guna PSPad, percuma)

jQuery 1.4.x (terkini)

Coin Slider for jQuery

Langkah 1

Sekarang, pada mana mana bahagian di dalam komputer anda, cipta satu folder dan namakan mod_myslideshow. Kemudian, create 3 file seperti di bawah ini, dan biarkan ianya kosong terlebih dahulu.

  1. mod_myslideshow.php
  2. mod_myslideshow.xml
  3. helper.php

Di dalam folder myslideshow, create 3 folder seperti di bawah:

  1. css
  2. js
  3. tmpl

Seterusnya, create satu file baru, default.php di dalam folder tmpl. Biarkan ia kosong.  Lihat gambar di sebelah sebagai rujukan.

Download file jQuery dan masukkan di dalam folder js. Pada fail coin-slider.zip yang anda download tadi, extract dengan apa apa software zip. Di dalamnya terdapat 3 files. Copy file berikut sahaja

  1. coin-slider-styles.css ke dalam folder css
  2. coin-slider.min.js ke dalam folder js

Langkah 2

Kita mulakan dengan file metadata untuk module ini terlebih dahulu. Buka file mod_myslideshow.xml dan ikut turutan langkah di bawah ini.

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0" method="upgrade">

Kod bagi module Joomla! 1.5. Perlu ada.

	<name>MySlideshow</name>
	<author>Syahril Zulkefli</author>
	<creationDate>Aug 2010</creationDate>
	<copyright>Copyright (C) 2005 - 2010 Syahril Zulkefli. All rights reserved.</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
	<authorEmail>syah@syahzul.com</authorEmail>
 	<authorUrl>www.syahzul.com</authorUrl>
 	<version>1.0.0</version>
 	<description>Module MySlideshow, original jQuery plugin by http://workshop.rs, ported to Joomla! module by Syahril Zulkefli a.k.a. syahzul.</description>

Kod ini pula lebih kepada maklumat developer. Boleh tukar dengan maklumat anda sendiri, jangan malu malu ye :P

	<files>
		<filename module="mod_myslideshow">mod_myslideshow.php</filename>
		<filename>helper.php</filename>
		<folder>css</folder>
		<folder>js</folder>
		<folder>tmpl</folder>
	</files>

Bahagian ini pula menerangkan apa files atau folders yang terdapat di dalam module kita. Tak perlu tukar apa apa di sini.

	<params>
		<param name="path" type="text" size="60" default="images/stories/myslideshow" label="Image Path" description="Specify your image path here. Must be inside your Joomla! folder." />
		<param name="@spacer" type="spacer" default="" label="" description="" />
		<param name="slideEfx" type="list" default="random" label="Slider effect" description="Choose your preferred slide effect">
			<option value="random">Random</option>
			<option value="swirl">Swirl</option>
			<option value="rain">Rain</option>
			<option value="straight">Straight</option>
		</param>
		<param name="slideWidth" type="text" default="600" label="Slider width" description="Enter your slider width (in pixels) here. Numbers only please." />
		<param name="slideHeight" type="text" default="300" label="Slider height" description="Enter your slider height (in pixels) here. Numbers only please." />
		<param name="slideSpw" type="text" default="7" label="Square per width" description="Be careful with Square per width because large numbers can cause transitions problems." />
		<param name="slideSph" type="text" default="5" label="Square per height" description="Be careful with Square per height because large numbers can cause transitions problems." />
		<param name="slideDelay" type="text" default="3000" label="Delay between images" description="Enter delay between images, in miliseconds." />
		<param name="slideSDelay" type="text" default="30" label="Delay between squares" description="Enter delay between squares, in miliseconds." />
		<param name="slideNavigation" type="radio" default="1" label="Show navigation?" description="If you choose Yes, slide navigation, including Next and Prev button, will be shown.">
			<option value="1">Yes</option>
			<option value="0">No</option>
		</param>
		<param name="slideOpacity" type="list" default="0.7" label="Navigation opacity" description="Enter opacity value for navigation.">
			<option value="0.1">0.1</option>
			<option value="0.2">0.2</option>
			<option value="0.3">0.3</option>
			<option value="0.4">0.4</option>
			<option value="0.5">0.5</option>
			<option value="0.6">0.6</option>
			<option value="0.7">0.7</option>
			<option value="0.8">0.8</option>
			<option value="0.9">0.9</option>
			<option value="1.0">1.0</option>
		</param>
		<param name="slidePauseHover" type="radio" default="1" label="Pause on mouse over?" description="If you choose Yes, slideshow will be stop when user hovering the mouse over the image.">
			<option value="1">Yes</option>
			<option value="0">No</option>
		</param>
		<param name="@spacer" type="spacer" default="" label="" description="" />
		<param name="moduleclass_sfx" type="text" default="" label="Module Class Suffix" description="PARAMMODULECLASSSUFFIX" />
	</params>

	<params group="advanced">
		<param name="cache" type="list" default="0" label="Caching" description="Select whether to cache the content of this module">
			<option value="1">Use global</option>
			<option value="0">No caching</option>
		</param>
		<param name="cache_time" type="text" default="900" label="Cache Time" description="The time before the module is recached" />
	</params>

Ini pula bahagian parameter untuk module kita. Di sini, jika anda perhatikan (atau baca kod itu) terdapat beberapa parameter yang kita perlukan, contohnya width, height, slideshow effects, delay dan lain lain. Sama juga, copy sahaja kod ini tanpa perlu ubah apa apa.

</install>

Penutup untuk file ini. Dah siap, save file tersebut dan bersedia untuk kod PHP pula.

Langkah 3

Buka file mod_myslideshow.php dengan code editor, dan tambah kod kod di bawah ini.

<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

require_once( dirname( __FILE__ ) . DS . 'helper.php' );

$list = modMySlideshowHelper::getList( $params );

// check if any results returned
$items = count( $list );

if (!$items) {
	return;
}

require(JModuleHelper::getLayoutPath('mod_myslideshow'));

Langkah 4

Buka file helper.php dengan code editor, dan tambah kod di bawah ini.

<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

class modMySlideshowHelper
{
	function getList(&$params)
	{
		jimport('joomla.filesystem.folder');

		// load assets
		modMySlideshowHelper::addAssets( $params );

		// get path from parameter
		$path = $params->get('path');

		// split the folder into array
		$_path = explode('/', $path);

		// implode it into absolute path
		$abspath = implode( DS, $_path);

		// add root into our path
		$abspath = JPATH_ROOT . DS . $abspath . DS;

		// now, get all the image files inside these folder
		$files = JFolder::files($abspath, '\.jpg$|\.png$|\.gif$');

		// time to re-construct the url to the images
		for ( $x = 0; $x < count( $files ); $x++ ) {
			$files[$x] = JURI::root() . $path . '/' . $files[$x];
		}
		return $files;
	}

	function addAssets(&$params)
	{
		$document =& JFactory::getDocument();

		// add CSS file
		$document->addStylesheet( JURI::root() . 'modules/mod_myslideshow/css/coin-slider-styles.css' );

		$js  = '<script type="text/javascript" src="' . JURI::root() . 'modules/mod_myslideshow/js/jquery-1.4.2.min.js"></script>';
		$js .= '<script type="text/javascript" src="' . JURI::root() . 'modules/mod_myslideshow/js/coin-slider.min.js"></script>';
		$js .= '<script type="text/javascript">' . "\n";
		$js .= 'jQuery.noConflict();' . "\n";
		$js .= 'jQuery(document).ready( function() {' . "\n";
		$js .= '    jQuery("#mod_myslideshow").coinslider({' . "\n";
		$js .= '        width: ' . $params->get('slideWidth') . ", ";
		$js .= '        height: ' . $params->get('slideHeight') . ", ";
		$js .= '        spw: ' . $params->get('slideSpw') . ", ";
		$js .= '        sph: ' . $params->get('slideSph') . ", ";
		$js .= '        delay: ' . $params->get('slideDelay') . ", ";
		$js .= '        sDelay: ' . $params->get('slideSDelay') . ", ";
		$js .= '        opacity: ' . $params->get('slideOpacity') . ", ";
		$js .= '        effect: \'' . $params->get('slideEfx') . '\', '; // random, swirl, rain, straight
		$js .= '        navigation: ' . ($params->get('slideNavigation') ? 'true' : 'false') . ', ';
		$js .= '        links: false, ';
		$js .= '        hoverPause: ' . ($params->get('slidePauseHover') ? 'true' : 'false') . "\n";
		$js .= '    });' . "\n";
		$js .= '});' . "\n";
		$js .= '</script>';

		$document->addCustomTag( $js );
	}
}

Langkah 5

Buka file tmpl/default.php dan tambah kod di bawah ini.

<div id="mod_myslideshow">
<?php for ( $x = 0; $x < $items; $x++ ) { ?>
	<img src="<?php echo $list[$x]; ?>" />
<?php } ?>
</div>

Langkah 6

Sekarang, select semua files dan folders di dalam folder mod_myslideshow tadi, dan zipkannya.

Pastikan masa nak create zip file tu, pilih extension .zip, bukan .rar atau .7z. Dan gunakan file tersebut, contohnya mod_myslideshow.zip dan install pada mana mana Joomla!.

Langkah 7

Sekarang create satu folder baru di dalam folder images dan berikan nama myslideshow. Kemudian, save 4 gambar berikut di dalam folder tersebut.

* Nota: Klik pada gambar untuk view fullsize.

Langkah 8

Lepas dah install, boleh configure module tadi untuk kesesuaian website kita.

Penerangan Parameters

  • Image Path
    Lokasi imej yang kita nak gunakan. Pastikan ianya berada di dalam folder Joomla!.
  • Slider effect
    Ada 3 effects yang boleh kita gunakan; Swirl, Rain, Straight. Dan boleh combine semua, gunakan Random.
  • Slider width
    Lebar slideshow anda. Pastikan lebar imej juga sama bagi mendapatkan hasil yang memuaskan hati anda.
  • Slider height
    Tinggi slideshow anda. Pastikan tinggi imej juga sama bagi mendapatkan hasil yang memuaskan hati anda.
  • Square per width
    Jumlah kotak berdasarkan lebar, sila tengok demo untuk fahamkan.
  • Square per height
    Jumlah kotak berdasarkan tinggi, sila tengok demo untuk fahamkan.
  • Delay between images
    Had masa antara setiap satu image. Dalam format miliseconds; 1000 miliseconds sama dengan 1 saat.
  • Delay between squares
    Had masa antara setiap satu kotak. Dalam format miliseconds; 1000 miliseconds sama dengan 1 saat.
  • Show navigation
    Perlu tunjukkan button Next dan Prev?
  • Navigation opacity
    Opacity untuk button Next dan Prev.
  • Pause on mouse over
    Slideshow berhenti bila user letak mouse atas slideshow tu.

Demo

http://www.syahzul.com/demo/joomla/

Download

Kalau rasa buat tak menjadi tu, sila download dari sini, free. Boleh guna pada mana mana website jika sudi.

http://bit.ly/bH23Hl

Penutup

Walaupun sebenarnya ini bukan macam tutorial sangat, tapi kalau rajin kaji kod kod di atas tadi untuk belajar konsep MVC Joomla!. Mungkin nanti saya akan extend lagi, tambah title dengan description ke, tambah component untuknya ke, dan mungkin juga jadikan utk content, bukan setakat imej. Tapi buat masa ini, setakat ini sahaja. Feedback amatlah dihargai.

Nota lagi:

Gambar tu untuk tujuan pembelajaran sahaja, sila jangan gunakan untuk tujuan lain.

Suka dengan artikel ini? Kongsi dengan kawan-kawan anda

About Syahril Zulkefli

Freelance Trainer yang mempunyai banyak pengalaman di dalam pembangunan laman web Joomla! dan WordPress, pembangunan aplikasi web menggunakan CakePHP dan CodeIgniter, kini terjebak dengan pembangunan Mobile Application. Menjadi trainer untuk JomTraining dan juga OSDCMY Sdn Bhd dan pernah menjalankan training untuk JPA, AMDI-USM, Politeknik Negeri Sembilan, IKIM, Politeknik Dungun dan lain lain agensi swasta.
Kategori: Joomla!, jQuery, Tutorial, Tag: , , .
  • http://nukilanmaya.com A.Malib

    Salam…

    Syabas sahabat….input-input sebegini memang ditunggu-tunggu…

    Teruskan lagi…Anyway …Tahniah..Welcome to the Club..heheh

    • http://www.syahzul.com syahzul

      insya Allah aku akan tambah lagi di masa akan datang. maklumlah, dah ada baby ni terhad sikit masa depan pc :P

      • Kharis_conect

         bos gambarnya kok kagak muncul ea ? mohon baantuan

        • http://www.syahzul.com Syahril Zulkefli

          kurang jelas, gambar yang mana ya? ada apa-apa error message yang keluar? pakai joomla versi berapa?

  • http://menderas.blogspot.com amirulfaiz

    Wah, mekaseh berkongsi tutorial ni bro. Hehe, saya ada web dengan Joomla, tapi tak berkesempatan lagi nak edit-edit macam yang anda tunjukkan. InsyaAllah pada masa akan datang saya cuba.

  • http://lazaac.com/blog lazaac

    kalaulah bro leh ajar ttg plugin WP, lagi best kowt.. :)

    • http://www.syahzul.com syahzul

      insya Allah, masih dalam proses belajar plugin wordpress. kalau berjaya nanti insya Allah saya akan post tutorial.

    • http://www.syahzul.com syahzul

      ok done. tgk latest post.

      • http://lazaac.com/blog lazaac

        terima kasih banyak bro… :)

  • http://zairiedinzly.blogspot.com zairie

    tutorial yg menarik.. akan dicuba =)

    my recent post:
    JOM MASUK U =)

  • Pingback: Tutorial: Bina Slideshow Plugin Untuk Wordpress 3.0.x « syahzul

  • http://www.chekwan.com chekwan

    memang sesuatu yang menarik dan dinanti2kan.. terima kasih untuk tutorial ini :)

  • http://www.mybazaar2u.com/blog AwengShah

    Salam…
    Saya baru dalam bidang joomla nie… Sangat berminat untuk membina laman web profesional dgn menggunakan joomla. Ada atau tidak tutorial yg mudah dan senang hendak difahami samaada dari tuan sendiri atau pun dari rujukan di “w.w.w” ‘world wide web’. Kalau boleh tutorial di dalam bahasa melayu.

    terima kasih.

  • http://madupakhaji.com/joomlamadu sam

    Salam Syahzul…

    Terima kasih tutorial yang diberikan… tetapi masih tak boleh install sebab ada error ..
    Error message ini keluar : JInstaller::install: File ‘/tmp/install_4cc68b7f915c3/css’ does not exist. Apa sebab nya ?
    Thx again

    • http://www.syahzul.com syahzul

      hmmm… pelik, macam folder css takde dlm tu. itu buat sendiri atau guna yg saya bagi kat http://bit.ly/bH23Hl ? kalau buat sendiri attach and send ke syah@syahzul.com, nak check.

      • http://madupakhaji.com/joomlamadu sam

        Salam Syahzul…! Terima kasih kerana ‘quick response over my matters’. Saya guna yang saya buat sendiri ,ikut steps yg diberi dalam laman ni.On the other hands, kalau guna modul yg downloaded tuhh..installation success.

        2. Saya discover mungkin sebab saya guna latest JQuery v1.4.3, apa yang saya nampak, penggunaan pada modul yang ada dalam steps di laman ni adalah JQuery V1.4.2.After that, saya overwrite the xml file, then zip again the module, saya upload ke server, the installation success but my site gone white ( perhaps WSOD ).

        3.Anyway, saya try dulu rebuild the module, kalau tak berjaya or any error messages, email akan saya hantar ke alamat yang diberikan.

        Thanks for the tips.. Keep up good work, bro!

        Salam.

  • http://madupakhaji.com/joomlamadu sam

    Salam Syahzul!

    untuk info, if i disabled the module yang dibuat sendiri tuh, the site went ok. The ‘so-called “WSOD” tu disappeared.

    See again.

  • http://blog.balootisme.com Baloot

    Bro, dah takde demo kat http://www.syahzul.com/demo/joomla/ tu.. :)

    • http://www.syahzul.com syahzul

      ok dah letak bali, aritu restore files lupe plak nak letak module position.

  • riey

    thanks Syahzul..amat2 brguna ni…

  • riey

    Salam syahzul..
    nak tnya cket..macam mana nak buat, gmbar yg kite masukkn dlm folder “myslideshow” tu resize sendiri mngikut Slider Width & Slider Height yang kite setkan pada Module Parameters??
    time kasih..

    • http://www.syahzul.com syahzul

      nope, tak boleh. sbb coinslider js tu akan calculate boxes based on image size. memang kena resize manually.

  • riey

    oo…ok,time kasih..

  • Zuraida

    Salam, Saya nak tanya. Bagaimana kita boleh buat supaya gambar yang kita buat slide show tu boleh pergi ke suatu artikel.

    Sebab saya pernah lihat dari laman web http://www.jpnns.gov.my, jabatan pelajaran tersebut meletakkan berita terkini pada silde show tersebut, dan bila di klik pada gambar ia akan membawa ke artikal tentang iklan tersebut.

    Harap dapat bantu saya.

    • http://www.syahzul.com syahzul

      kalau module yg saya tunjukkan ni, tak boleh link ke mana mana. tapi kalau nakkan fungsi macam tu, boleh try guna module lain, contohnya: http://goo.gl/TZ7Vi

  • Excell_dent

    salam… en zul, setelah saya install slide show tu ini yang keluar dan slide show tak muncul… harap sudi membantau… JFolder::files: Path is not a folder:

    • http://www.syahzul.com Syahril Zulkefli

      cuba pastikan folder images/stories/myslideshow tu wujud, kalau takde, kena create manually.

  • Hafeezah78

    saya tak faham.nak create php file pakai software apa

    • http://www.syahzul.com Syahril Zulkefli

      pakai dreamweaver boleh, apatana boleh, pspad boleh, notepad pun boleh :)

  • fadhirul hazriq ishak

    parameter hilang kalau install kt joomla 2.5

    • http://www.syahzul.com Syahril Zulkefli

      ini untuk joomla 1.5 sahaja. takkan berfungsi pada 2.5 sebab API dah banyak berubah. parameter dan tukar kepada field, etc etc.