Sep
05

wordpress multiple sidebar theming

wordpress ,,,

หากคุณเป็นคนนึงที่ทำ themes wordpress มาใช้เอง ก็เคยอาจเจอกับปัญหาที่ว่าอยากให้มันมี sidebar หลายๆอัน(กรณีของผมคือ อยากให้มันมี sidebar อันเดียวอะแหละ แต่อยากมี widget มาแปะไว้ข้างล่างเพื่อที่จะใส่ recent post,recent comment,category)

มาถึงตอนนี้ผมก็เจอวิธีที่สามารถที่จะทำให้เรามี sidebar ได้มากกว่า1 แล้วครับ โดยการ register_sidebar ที่ไฟล์ function.php (จริงๆวิธีนี้ที่ http://codex.wordpress.com เขาก็เขียนไว้แต่ไม่มี ภาษาไทย)

Code:

<?php
if ( function_exists(’register_sidebar’) ){
register_sidebar(array(
‘name’ =>
sidebar-right', // sidebar 1
‘before_widget’ => ‘<li id=”%1$s” class=”widget”>’,
‘after_widget’ => ‘</li>’,
‘before_title’ => ‘<h3 class=”title”>’,
‘after_title’ => ‘</h3><hr/>’,
));
register_sidebar(array(
‘name’ => ‘sidebar-bottom‘, // sidebar อื่นๆ
‘before_widget’ => ‘<li id=”%1$s” class=”widget”>’,
‘after_widget’ => ‘</li>’,
‘before_title’ => ‘<h3 class=”title”>’,
‘after_title’ => ‘</h3><hr/>’,
));
}
?>

เพียงเท่านี้คุณก็สามารถที่จะมี sidebar ได้มากกว่า 1 ที่ได้แล้วครับ

เพิ่มเติมอีกนิดสำหรับการจัดวาง sidebar ใน themes ของคุณ

ปกติ sidebar จะถูกเรียกจาก ไฟล์ sidebar.php โดยผ่าน function <?php get_sidebar(); ?> ซึ่งใน ไฟล์ sidebar.php จะมีfunction เรียก dynamic sidebar(จากที่เรา register_sidebar ในไฟล์ function.php นั้นแหละ) อีกที

คราวนี้เราก็แค่ย้าย เจ้า function(dynamic_sidebar()) ที่ว่าไปไว้ในส่วนอื่นๆของ theme (อาจจะเป็น index.php,header.php,footer.php แล้วแต่การออกแบบของคุณ)

ส่วนวิธีการย้ายไปไว้ที่ไหนโดยจะการกำหนดชื่อ sidebar ตามไปด้วยครับ เช่นผมจะเอา sidebar-bottom (ตามที่ register ไว้ข้างบน) ไปไว้ที่ footer ผมก็แค่เพิ่ม <? dynamic_sidebar(’sidebar-bottom’) ?> ลงไปในตำแหน่งที่เหมาะสม ก็เป็นอันเสร็จสิ้นแล้วครับ

หวังหว่าคงจะช่วยให้คนที่กำลังหาเรื่องนี้อยู่ได้ มีประสพการณ์เพิ่มขึ้นอีกนิดนะครับ

ปล. หากเป็นห่วงเรื่องการแสดงผลที่ในกรณีที่ไม่ widget อยู่เลยก็ให้ใส่ if คร่อมไว้ก็ได้ครับ (แต่กรณีของผม wordpress2.6.1 มันจะไม่แสดงผลออกมา)

No Comments

Make A Comment

No comments yet.

Comments RSS Feed   TrackBack URL

top