Multiple Sidebar dan Post Slug

Discussion in 'Desain Web dan Programming' started by Fadli, 18 Jan 2010.

Thread Status:
Not open for further replies.
  1. Fadli

    Fadli Poster 2.0

    Messages:
    155
    Likes Received:
    1
    Trophy Points:
    18
    mohon bantuannya lagi ya.

    saya mau buat sidebar dengan skenario sebagai berikut:
    Halaman Home -> Sidebar 1
    Page About -> Sidebar 2 (isinya link subpages dari halaman About)
    - Page About Me (subpage dari About) -> Sidebar 2
    - Page About My School (subpage dari About) -> Sidebar 2
    Page Album -> Sidebar 3 (isinya link subpages dari halaman Album)
    - Page Travel (subpage dari Album) -> Sidebar 3

    Nah, saya sudah buat untuk di sidebarnya pake kode ini:
    Code:
    <?php
    $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
    if ($children) { ?>
        <ul>
            <?php echo $children; ?>
        </ul>
    <?php } ?>
    cuma masalahnya sidebar itu hanya bisa dipakai di Page saja karena yang punya subpage (child) hanya halaman Page saja sehingga kalau misalnya saya tampilkan di halaman About Me maka sidebar itu tidak akan muncul. Solusinya saya ganti .$post->ID. dengan ID halaman wordpress tersebut secara direct, misalnya 4. Nah sidebar ini akan muncul di halaman About dan seluruh subpagenya. Tapi sekali lagi tidak akan muncul di halaman Album beserta subpagenya.

    Apakah tidak ada cara lain supaya saya tidak perlu membuat banyak sidebar dan template Page untuk menampilkan sidebar yang berbeda-beda tersebut di seluruh halaman Page maupun subpage? Mohon petunjuknya.

    Dan satu lagi, kalau kode .$post->ID. untuk mengambil ID halaman wordpress, kode apa yang digunakan untuk mengambil post-slugnya? jadi kalau halaman itu bernama hxxp://websiteku.com/2009/12/10/about/ nah saya mau ambil post-slug yang berwarna merah itu. bagaimana kodenya?

    terima kasih banyak atas bantuannya! :)
     
  2. dpnux

    dpnux Expert 1.0

    Messages:
    455
    Likes Received:
    28
    Trophy Points:
    28
    Wordpress yah Untuk mendapatkan slug untuk page yang aktif bisa menggunakan $post->post_name

    Saya kurang paham dengan tujuannya jadi asumsi pada saat tidak ada child page maka tidak akan muncul. Begitu bukan mas? kalau begitu kita bisa check menggunakan $post->parent_page

    PHP:
    if(!$post->post_parent
    {
     
    $children wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
     if (
    $children)  echo '<ul>'.$children.'</ul>';
    }
    Jadi akan mengecek apakah dia punya parent atau tidak, kalau iya, maka tidak akan dieksekusi. Saya belum mencoba codenya.
     
  3. imedia

    imedia Beginner 1.0

    Messages:
    21
    Likes Received:
    0
    Trophy Points:
    1
  4. Fadli

    Fadli Poster 2.0

    Messages:
    155
    Likes Received:
    1
    Trophy Points:
    18
    @dpnux
    iya mas, saya kan buat satu halaman dengan sub-halaman, misal seperti ini:
    Code:
    Home - About - Download
                      |
                   Software - Ebook - Article
    nah, saya mau tampilkan list link sub-pagenya itu di sidebar. kalau saya pake kode yg saya punya diatas itu link list-nya cuma bisa tampil kalau saya buka di halaman Download saja. sedangkan kalau saya buka halaman Software/Ebook/Article itu tidak mau tampil. saya coba dulu kode dari masnya ya. thx

    @imedia
    ok, saya coba juga dulu ya. thx
     
  5. Fadli

    Fadli Poster 2.0

    Messages:
    155
    Likes Received:
    1
    Trophy Points:
    18
    Alhamdulillah.. akhirnya bisa juga :)

    kode yang saya pakai seperti ini:
    Code:
            } elseif (is_page(array('About','About Me','About My School'))) {
    			$children = wp_list_pages('sort_column=menu_order&title_li=&child_of=4&echo=0');
    			echo "<div class=\"sidebar about\">";
    			echo "<h2><span>About</span></h2>";
    			echo "<div class=\"sidebar-content\">";
    			echo "<ul>" . $children ."</ul>";
    			echo "</div>";
    			echo "<div class=\"sidebar-bottom\"></div>";
    			echo "</div>";
            } elseif (is_page(array('Download','Download E-book','Download Article','Download Tutorial'))) {
    			$children = wp_list_pages('sort_column=menu_order&title_li=&child_of=6&echo=0');
    			echo "<div class=\"sidebar download\">";
    			echo "<h2><span>Download</span></h2>";
    			echo "<div class=\"sidebar-content\">";
    			echo "<ul>" . $children ."</ul>";
    			echo "</div>";
    			echo "<div class=\"sidebar-bottom\"></div>";
    			echo "</div>";
    
    tapi rasanya terlalu panjang kalau setiap halaman harus saya setting seperti itu. ada yang punya masukan untuk lebih mempersingkat lagi scriptnya? terima kasih sebelumnya :)
     
  6. Fadli

    Fadli Poster 2.0

    Messages:
    155
    Likes Received:
    1
    Trophy Points:
    18
    oh ya, satu lagi, saya juga mau jadikan beberapa bagian dari kode saya ini (file page.php) seperti conditional tag diatas. jadi nanti hanya halaman yang saya tentukan saja yang akan memunculkan bagian tersebut. bagian yang dimaksud adalah yang dimulai dari <?php $thumbnails ... sampai ...strtolower($bottomcaption); ?></span></p></div>

    ini kode selengkapnya:
    Code:
    <?php get_header(); ?>
    
    	<div id="main">
    	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    			<div class="content">
    				<?php $thumbnails = get_post_meta($post->ID,'thumbnails', true); ?>
    				<?php $align = get_post_meta($post->ID,'align', true); ?>
    				<?php $bottom = get_post_meta($post->ID,'bottom', true); ?>
    				<div class="align-<?php echo strtolower($align); ?>">
    					<img src="<?php bloginfo('template_url'); ?>/images/content/<?php echo strtolower($thumbnails); ?>.jpg" />
    					<p><?php echo strtolower($thumbnails); ?><br /><span class="bottom"><?php echo strtolower($bottom); ?></span></p>
    				</div>
    
    				<?php the_content(); ?>
    				
    	<?php endwhile; else: ?>
    		
    				<div class="pagetitle">
    					<h2>Page Not Found</h2>
    				</div>
    				<div class="errormsg">
    					<p>Sorry, page not found.</p>
    				</div>
    			<?php endif; ?>
    			</div>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>
    
    bagaimana ya caranya? Trims!
     
  7. dpnux

    dpnux Expert 1.0

    Messages:
    455
    Likes Received:
    28
    Trophy Points:
    28
    Wuih mantap :). Setahu saya, kalau mau check post pakainya is_single();
     
  8. Fadli

    Fadli Poster 2.0

    Messages:
    155
    Likes Received:
    1
    Trophy Points:
    18
    maksudnya check post apa mas?
     
  9. dpnux

    dpnux Expert 1.0

    Messages:
    455
    Likes Received:
    28
    Trophy Points:
    28
    Gue kira loe mau ngecek tipe post (wordpress ada dua tipe informasi, post ama page, terminologi mereka). Kalau begitu bisa pakai cara "filtering" yang loe udah buat, mas. Tetep pake is_page untuk ngecek apakah judulnya sama :).

    Bisa juga pakai fitur options kalau mau coba sih, jadi kita susupi data pada suatu page / post kemudian dicek pada saat pemanggilan page.php.
     
  10. Fadli

    Fadli Poster 2.0

    Messages:
    155
    Likes Received:
    1
    Trophy Points:
    18
    ic... jadi memang cuma itu ya caranya...

    tapi bisa bantu ga mas, kalau-kalau script saya diatas itu masih bisa di kompress lagi :D
     
Loading...
Thread Status:
Not open for further replies.

Share This Page

Loading...