Belajar WordPress — Membuat Dynamic Highlight Menu

Dynamic Menu Highlighting adalah sebuah cara yang sudah banyak digunakan oleh banyak desainer theme WordPress — untuk menambahkan class secara dinamis pada navigasi blog WordPress. Gunanya untuk memberi semacam informasi kepada pembaca mengenai halaman apa yang sedang dilihat.

Seperti fungsinya, halaman yang sedang dibuka mempunyai class yang berbeda dengan halaman-halaman lain yang tidak dibuka. Sebagai contoh bisa kita lihat di blog ini, dimana tab home akan ter-highlight saat kita membuka halaman depan, sedangkan yang lain seperti about dan contact tidak ter-highlight. Begitu juga apabila halaman contact dibuka maka hanya tab contact-lah yang ter-highlight sedangkan yang lainnya tidak.

Untuk membuat highlight menu navigasi yang dinamis seperti itu tentu saja kita harus mengaplikasikan WordPress Conditional Tags. Ada beberapa metode conditional tags yang bisa dipakai.

<ul class="menu">
	<li class="<?php if ( is_home() or is_archive() or is_single() or is_paged() or is_search() or (function_exists('is_tag') and is_tag()) ) { ?>current_page_item<?php } else { ?>page_item<?php } ?>"><a href="<?php echo get_settings('home'); ?>" title="<?php _e('Home'); ?>"><?php _e('Home'); ?></a></li>
	<?php wp_list_pages('sort_column=post_title&depth=1&title_li='); ?>
	<?php wp_register('<li>','</li>'); ?>
</ul>

Kode di atas adalah kode sederhana yang saya pakai untuk dynamic highlight menu blog ini. Kode tersebut menambahkan class="current_page_item" pada tab halaman yang sedang dibuka, dan class="page_item" pada tab halaman lainnya. Kode tersebut cocok digunakan untuk navigasi blog yang hanya menggunakan dua class yang membedakan halaman yang sedang dibuka dan yang tidak.

Terus bagaimana caranya membuat dynamic menu highlighting untuk navigasi yang tiap li tab halamannya mempunyai class sendiri-sendiri?

Salah satu contoh bagus dalam penggunaan class berbeda pada tiap halaman bisa kita lihat pada sistem navigasi dinamis Pearsonified. Pada tab navigasinya, ada empat menu yang dipakai, yang tiap menu merujuk pada halaman tertentu: home, archives, themes, dan about.

Pearsonified

Apabila kita membuka salah satu halaman dan melihat kode sumbernya, maka kita akan tahu bahwa ada class yang ditambahkan pada header. Kita ambil contoh kode sumber home

<div id="header" class="home">
	<div id="logo">
		<a href="http://www.pearsonified.com"></a>
	</div>
	<ul id="nav">
		<li id="home"><a href="http://www.pearsonified.com">home</a></li>
		<li id="archives"><a href="http://www.pearsonified.com/archives/">archives</a></li>
		<li id="themes"><a href="http://www.pearsonified.com/themes/">WordPress themes</a></li>
		<li id="about" class="last"><a href="http://www.pearsonified.com/about/">about</a></li>
	</ul>
</div>

Class home pada baris pertama merupakan class yang dipakai pada homepage. Sedangkan halaman archives, themes, dan about mempunyai class tersendiri: archives, themes, dan about.

Sekarang kita tahu bahwa keempat class tersebut sifatnya kondisional, penambahannya tergantung pada halaman yang dibuka. Bagaimana cara membuatnya? Tentu saja dengan Conditional Tags :D

<?php if (is_home()) { ?>
<div id="header" class="home">
<?php } elseif ( is_search() || is_single() || is_attachment() || is_date() || is_tag() || is_author()) { ?>
<div id="header" class="archive">
<?php } elseif (is_page('Themes')) { ?>
<div id="header" class="themes">
<?php } elseif (is_page('About')) { ?>
<div id="header" class="about">
<?php } else { ?>
<div class="archive">
<?php } ?>
	<ul id="nav">
		<li id="home"><a href="http://www.pearsonified.com">home</a></li>
		<li id="archives"><a href="http://www.pearsonified.com/archives/">archives</a></li>
		<li id="themes"><a href="http://www.pearsonified.com/themes/">WordPress themes</a></li>
		<li id="about" class="last"><a href="http://www.pearsonified.com/about/">about</a></li>
	</ul>
</div>

Kode Conditional Tags di atas (baris 1-11) akan memilih class yang sesuai untuk setiap halaman — home untuk homepage, archives untuk halaman pencarian, single post, dan arsip; themes untuk themes, dan about untuk about.

Sedikit kode CSS diperlukan untuk menyempurnakan dynamic menu highlighting ini ↓

ul#nav {
	list-style:none;
	width:332px;
	height:30px;
	margin:6px 0 0 0;
	background:url('images/nav_menu.gif') 0 0 no-repeat;
	float:left
}
ul#nav li {
	width:80px;
	height:30px;
	padding:0 4px 0 0;
	text-indent:-9999px;
	float:left
}
ul#nav li.last {padding:0}
ul#nav li a, ul#nav li a:visited, ul#nav li a:hover {
	display:block;
	width:80px;
	height:30px;
	background:transparent url('images/nav_menu.gif') no-repeat;
	outline:none
}
ul#nav li#home a,
ul#nav li#home a:visited {background-position:0 0}
ul#nav li#archives a,
ul#nav li#archives a:visited {background-position:-84px 0}
ul#nav li#themes a,
ul#nav li#themes a:visited {background-position:-168px 0}
ul#nav li#about a,
ul#nav li#about a:visited {background-position:-252px 0}
ul#nav li#home a:hover {background-position:0 -30px}
ul#nav li#archives a:hover {background-position:-84px -30px}
ul#nav li#themes a:hover {background-position:-168px -30px}
ul#nav li#about a:hover {background-position:-252px -30px}
.home ul#nav li#home a,
.home ul#nav li#home a:visited,
.home ul#nav li#home a:hover {
	background-position:0 -60px;
	cursor:default
}
.archive ul#nav li#archives a,
.archive ul#nav li#archives a:visited,
.archive ul#nav li#archives a:hover {
	background-position:-84px -60px;
	cursor:default
}
.themes ul#nav li#themes a,
.themes ul#nav li#themes a:visited,
.themes ul#nav li#themes a:hover {
	background-position:-168px -60px;
	cursor:default
}
.about ul#nav li#about a,
.about ul#nav li#about a:visited,
.about ul#nav li#about a:hover {
	background-position:-252px -60px;
	cursor:default
}

Pemakaian conditional tags tergantung pada theme yang dipakai dan halaman yang dibuat, tetapi semuanya tetap menggunakan konsep conditional statement if-else seperti contoh tadi. Ingin mencoba membuat highlight menu dinamis? Silakan buat beberapa file HTML (untuk beberapa class berbeda), tambahkan kode sumber HTML navigasi dan CSS di atas, dan gambar ini sebagai backgroundnya.

Instant Internet Business Ideas

Related Posts ↓

Rahasia Sukses Paid Review

{23 Comments so far }

  1. arikaka said,

    Wrote on July 16, 2009 @ 12:33 am

    pratama…

    membangkitkan semangat saya lagi nih broo :)

  2. OkeBanget said,

    Wrote on July 16, 2009 @ 3:32 pm

    Itu manfaatnya buat apa mas? Wah saya ga ngerti yang kayak ginian.

    Salam kenal aja mas. Sukses selalu.

  3. adirossi said,

    Wrote on July 17, 2009 @ 1:01 am

    Apakah jika kita membuka subpage dari suatu halaman, efeknya juga akan tampak?

  4. ganda said,

    Wrote on July 17, 2009 @ 9:14 am

    Menilik dari kode CSS nya, kelihatan klo tekniknya menggunakan CSS sprites. hehehehe.. Like I thought….

  5. fanari said,

    Wrote on July 17, 2009 @ 1:38 pm

    @adirossi: kalau tidak ditambah class yang lebih spesifik, efeknya akan sama dengan halaman parent
    @ganda: karena CSS sprites meminimalkan HTTP request hehehe bro, ada coding PHP yang lebih efektif dari yang saya tulis di atas? saya masih awam soal PHP :D

  6. pakwo said,

    Wrote on July 17, 2009 @ 9:53 pm

    Salam sukses, terima kasih infonya boleh juga di coba tu…baru tau ni….

  7. m!ke said,

    Wrote on July 18, 2009 @ 1:51 am

    keren juga nih bro tipsnya…mantap..
    thank’s yak…coba dulu ah meluncur ke tkp…..

  8. audy said,

    Wrote on July 18, 2009 @ 10:33 pm

    wah pokoknya blog mas fanari tu buat referensi kalo ngerjain wp ni…hihihi saya gaptek abis ni…thanks yaah mas infonyaa…

  9. Dinda Watson said,

    Wrote on July 19, 2009 @ 8:13 am

    Ga ngerti :d

  10. aditya permana said,

    Wrote on July 23, 2009 @ 6:54 pm

    waw..lengkap banget gan :matabelo:

    boleh saya coba ga?

  11. ganda said,

    Wrote on July 24, 2009 @ 4:49 pm

    Saya lihat kode diatas sudah efektif. Jika performansi kurang seperti yang di inginkan, itu disebabkan oleh kode yang di eksekusi fungsi itu tersendiri.

  12. Pakde Cholik said,

    Wrote on July 27, 2009 @ 10:33 am

    Saya sudah membaca sampai tuntas dan akhirnya sampai pada pertanyaan : mana yang bisa saya copy trus di paste dimana mas, ha..ha..ha,, maklum pake dah tua dan gaptek.
    Makasih artikel yang bermanfaat dan aplikatif.
    Maju terus untuk kemajuan blogger pemula seperti saya.
    Salam hangat dari pakde di Surabaya.

  13. ran said,

    Wrote on August 1, 2009 @ 6:26 pm

    kalau membuat menu tab nya gimana mas? mata saia sampe juling belum ketemu² tolong ajari pak gur ! hwehehehhe

    seperti yg blog ini keren,,mantabs tenan

  14. 11 Trik WordPress Conditional Tags said,

    Wrote on August 17, 2009 @ 9:13 pm

    [...] Sumber: Belajar WordPress — Membuat Dynamic Highlight Menu. [...]

  15. 20+ Tips Lengkap Optimasi WordPress said,

    Wrote on January 18, 2010 @ 3:06 pm

    [...] positioning masing-masing bagian gambar dengan CSS. Contoh implementasinya pernah saya tulis pada tutorial membuat dynamic highlighting menu. CSS sprite banyak digunakan untuk membuat rollover effect pada [...]

  16. geedebook » 11 Trik WordPress Conditional Tags said,

    Wrote on January 27, 2010 @ 9:19 am

    [...] Sumber: Belajar WordPress — Membuat Dynamic Highlight Menu. [...]

  17. yohan said,

    Wrote on June 10, 2010 @ 8:07 am

    thanks tutornya :)

  18. tips membuat loading wordpress enteng dan cepat | indonesia Go Blog ger said,

    Wrote on June 19, 2010 @ 10:05 am

    [...] positioning masing-masing bagian gambar dengan CSS. Contoh implementasinya pernah saya tulis pada tutorial membuat dynamic highlighting menu. CSS sprite banyak digunakan untuk membuat rollover effect pada [...]

  19. arieff said,

    Wrote on June 24, 2010 @ 8:29 am

    Salam sukses, terima kasih infonya boleh juga di coba tu…baru tau ni….

  20. ardhan said,

    Wrote on July 8, 2010 @ 6:26 am

    banyak info yang bisa saya dapat dari blog ini, tx untuk postingannya

  21. dety said,

    Wrote on July 19, 2010 @ 4:50 am

    waah jadi kereen tuh. pantas di coba. jadi smangat ngeblog neehhhh. thanks gan

  22. kai said,

    Wrote on July 19, 2010 @ 7:33 am

    makasi buat postingannya… ane jadi pengen bagusin blog ane neh…

  23. chai said,

    Wrote on July 19, 2010 @ 10:04 am

    infonya bagus nih… dicoba dulu deh

Comment RSS · TrackBack URI

Leave a Comment ↓

Name

E-mail

Website