2010-01-15 69 views
0

我正在嘗試拉入特定類別的樣式側邊欄。我有下面的代碼可以工作,但它是拉動我的新邊欄和默認值。我在這裏做錯了什麼?如何分辨Wordpress類別頁面以調用特定側邊欄

從category.php

<?php get_sidebar(); 
if (in_category('39')) { 
include(TEMPLATEPATH . '/sidebar2.php'); 

} else { 
include(TEMPLATEPATH . '/sidebar.php'); 

} 
?> 
<?php get_footer(); ?> 
+1

如果你得到任何我們誰也發佈了一個答案,請你繼續前進,標誌着你的問題通過單擊旁邊的複選框給誰就給誰的答案回答是恰當的。謝謝。 – David 2010-01-21 14:35:12

+0

對不起,暫時還沒有來過:) – 2010-01-29 17:59:39

回答

3

因爲你打電話邊欄兩次;此操作:

<?php 

if (in_category('39')) { 
include(TEMPLATEPATH . '/sidebar2.php'); 

} else { 
include(TEMPLATEPATH . '/sidebar.php'); 

} 
?> 
1

從代碼中刪除此:

get_sidebar(); 

否則,你把這個文件 「的sidebar.php」 兩次......

,如果你看看WP文檔http://codex.wordpress.org/Function_Reference/get_sidebar

你可以這樣做:

<?php 
if (in_category('39')) : 
    get_sidebar('two'); //this will include sidebar-two.php 
else : 
    get_sidebar(); 
endif; 
?> 
1

你應該創建一個名爲category-39.php的獨立模板,並做一些常見的設計工作。 WP本身會注意到它應該將此模板應用於id = 39的類別。不需要if else語句。

3

提供給您的代碼存在一個小問題。但是正如Eimantas所建議的那樣,您可以簡單地創建一個名爲category-39.php的新文件,它將完美地完成這項工作,如果由於某種原因您仍然想繼續使用您的category.php文件,那麼這裏是您需要的要做到:

if (is_category('39')) { 
    get_sidebar('2'); 
} else { 
    get_sidebar(); 
} 
?> 
<?php get_footer(); ?> 

這一點,你發佈的代碼之間的區別是,我已刪除

<?php get_sidebar(); ?> 

此外,我已經改變in_category到is_category。原因是因爲當使用is_category查看類別頁面時,它會在類別列表中更改,而in_category只查看當前文章,因此除非查看single.php頁面,否則不會更改。

例子: in_category將改變側邊欄下面的網址www.mysite.com/category/stuff/myfirstpost 但只要它不會改變側邊欄這個網址www.mysite.com/category/stuff is_category將解決這個問題。

接下來的事情將使用

get_sidebar('2'); 

get_sidebar(); 

get_sidebar();除了包含sidebar.php之外,還將運行與側邊欄相關的適當wordpress功能。 get_sidebar('2');另一方面將運行與側邊欄相關的所有適當的wordpress功能,同時還加載sidebar-2.php。

希望這有助於

相關問題