幾乎每個(gè)網(wǎng)站都有一個(gè)導(dǎo)航欄,,導(dǎo)航欄一般將網(wǎng)站的內(nèi)容分成幾個(gè)類目,,然后在導(dǎo)航欄中顯示出來(lái),以方便讀者查閱相關(guān)內(nèi)容,。WordPress博客也提供了此功能,,但是不同的博客主題在導(dǎo)航欄的設(shè)置方面也不盡相同,現(xiàn)在大多數(shù)主題是以頁(yè)面(page)作為導(dǎo)航欄類目的,,但是這種方式似乎達(dá)不到"導(dǎo)航"的目的,,個(gè)人覺(jué)得用分類(category)和頁(yè)面(Page一起)做為導(dǎo)航欄更合適。本文將指導(dǎo)你在WordPress中,,如何設(shè)計(jì)一個(gè)用分類和頁(yè)面作為菜單的導(dǎo)航欄,,并高亮顯示當(dāng)前所在的欄目。
為了讓讀者了解當(dāng)前所在的文章分類,,網(wǎng)頁(yè)設(shè)計(jì)師常常用一些比較突出的方式顯示導(dǎo)航欄中的當(dāng)前欄目,,抬頭看一下本文的上方,導(dǎo)航欄中的"教程指南"項(xiàng)目就被高亮顯示了,。
其實(shí)稍微懂一點(diǎn)網(wǎng)頁(yè)設(shè)計(jì)的朋友都知道,,這可以通過(guò)CSS來(lái)實(shí)現(xiàn),但關(guān)鍵是如何確定該文章屬于哪個(gè)分類,,WordPress已經(jīng)提供了現(xiàn)成的方法,,更簡(jiǎn)單,調(diào)用幾個(gè)函數(shù)就可以實(shí)現(xiàn),,而且不需要太多額外的代碼,。下面我們一步一步地來(lái)實(shí)現(xiàn)我們的目的。
WordPress主題都提供了導(dǎo)航欄,,一般導(dǎo)航欄的代碼在header.php 這個(gè)文件中,,找到相應(yīng)的導(dǎo)航欄代碼(如果你的導(dǎo)航欄現(xiàn)在顯示的是頁(yè)面列表,你只需找到 wp_list_pages 就可以了 ),,改成如下形式,,修改完畢后在瀏覽器里看看效果吧!注意:本文不講解導(dǎo)航欄的樣式設(shè)計(jì),,可根據(jù)需要自己定義相關(guān)的CSS和HTML,。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <ul>
<li<?php if (is_home()) { echo ' class="current-cat"';} ?>><a title="Home" href="/">博客主頁(yè)</a></li>
<?php
$currentcategory = '';
// 以下這行代碼用于在導(dǎo)航欄添加分類列表,
// 如果你不想添加分類到導(dǎo)航中,,
// 請(qǐng)刪除 6 - 14 行代碼
if (is_category() || is_single()) {
$catsy = get_the_category();
$myCat = $catsy[0]->cat_ID;
$currentcategory = '¤t_category='.$myCat;
}
wp_list_categories('depth=1&title_li=&show_count=0&hide_empty=0&child_of=0'.$currentcategory);
// 以下這行代碼用于在導(dǎo)航欄添加頁(yè)面列表
// 如果你不想添加頁(yè)面到導(dǎo)航中,,
// 請(qǐng)刪除16 - 19行代碼
wp_list_pages('depth=1&title_li=&sort_column=menu_order');
?>
</ul> |
上面那段代碼是通過(guò)無(wú)序列表的形式來(lái)顯示導(dǎo)航欄的,第一個(gè) <li> 顯示的是博客主頁(yè),,如果當(dāng)前所在是主頁(yè),,則高亮顯示"博客主頁(yè)",高亮顯示則是通過(guò)class="current-cat" 樣式來(lái)定義的,,這個(gè)可以根據(jù)自己的需要定義,。上面代碼中通過(guò)調(diào)用 wp_list_categories 和 wp_list_pages 這兩個(gè)函數(shù)來(lái)羅列所有的分類目錄和頁(yè)面,并且程序會(huì)自動(dòng)判斷當(dāng)前文章所在的分類,也會(huì)自動(dòng)判斷當(dāng)前分類和當(dāng)前頁(yè)面,,然后將其所在的 <li> 加上 class="current-cat" 的CSS類選擇器,,你只需在你主題目錄下的style.css中定義一個(gè)名為 .current-cat 的 class ,來(lái)定義高亮形式即可,,如:
1 2 3
| li.current-cat a {
color:red;
} |
<————————————–以下內(nèi)容已過(guò)時(shí)————————————–>
但是上面的那段代碼也有一定的缺陷,,就是進(jìn)入文章頁(yè)面后,導(dǎo)航欄就無(wú)法高亮了,,訪客就不容易知道這篇文章是屬于哪個(gè)分類的了,,那怎么解決呢?解決起來(lái)也比較簡(jiǎn)單,,加入以上*代碼一*后,,先在瀏覽器里面瀏覽你的博客,,然后"查看源文件",,找到導(dǎo)航欄的代碼,我的是這樣子的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| < ul>
< li>< a title="Home" href="/">博客主頁(yè)</ a></ li>
< li class="cat-item cat-item-1 ">< a href="/category/diaries" title="生活隨感">生活隨感</ a></ li>
< li class="cat-item cat-item-3 ">< a href="/category/encyclopedia" title="百科全書">百科全書</ a></ li>
< li class="cat-item cat-item-4 ">< a href="/category/material" title="素材下載">素材下載</ a></ li>
< li class="cat-item cat-item-5 ">< a href="/category/showcase" title="櫥窗展示">櫥窗展示</ a></ li>
< li class="cat-item cat-item-6 current-cat">< a href="/category/tutorials" title="教程指南">教程指南</ a></ li>
< li class="cat-item cat-item-17 ">< a href="/category/freebies" title="免費(fèi)資源">免費(fèi)資源</ a></ li>
< li class="page_item page-item-2 ">< a href="/about" title="關(guān)于露兜">關(guān)于露兜</ a></ li>
</ ul> |
我們給上面的代碼加入動(dòng)態(tài)PHP代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <ul>
<li><a title="Home" <?php if (is_home()) { echo 'class="current"';} ?> href="/">博客主頁(yè)</a></li>
<li class="cat-item cat-item-1 <?php if ( (is_category('1') || in_category('1')) && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/diaries" title="生活隨感">生活隨感</a></li>
<li class="cat-item cat-item-3 <?php if ( (is_category('3') || in_category('3')) && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/encyclopedia" title="百科全書">百科全書</a></li>
<li class="cat-item cat-item-4 <?php if ( (is_category('4') || in_category('4')) && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/material" title="素材下載">素材下載</a></li>
<li class="cat-item cat-item-5 <?php if ( (is_category('5') || in_category('5')) && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/showcase" title="櫥窗展示">櫥窗展示</a></li>
<li class="cat-item cat-item-6 <?php if ( (is_category('6') || in_category('6')) && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/tutorials" title="教程指南">教程指南</a></li>
<li class="cat-item cat-item-17 <?php if ( (is_category('17') || in_category('17')) && !is_page() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/category/freebies" title="免費(fèi)資源">免費(fèi)資源</a></li>
<li class="page_item page-item-2 <?php if ( is_page('2') && !is_category() && !is_home() ) { echo 'current-cat'; } ?>"><a href="/about" title="關(guān)于露兜">關(guān)于露兜</a></li>
</ul> |
好了,,將上面的代碼改成你的內(nèi)容,,替換掉header.php中的導(dǎo)航欄代碼即可。is_category()和is_page()函數(shù)的使用方法可以參閱條件標(biāo)簽,,is_category()括號(hào)中的數(shù)字是根據(jù)前面的 cat-item-? 來(lái)確定的,,如前面的class中是cat-item-6,則寫成is_category('6') ,。
如果你有一定的網(wǎng)頁(yè)設(shè)計(jì)基礎(chǔ),,相信這并不是一件難事。如果遇到什么問(wèn)題,,可以在此發(fā)表評(píng)論,,我會(huì)樂(lè)意效勞的。
|