WordPress 上的導(dǎo)航菜單一般有兩種, 頁面導(dǎo)航菜單和分類導(dǎo)航菜單.
可曾記得? WordPress 是可以撰寫?yīng)毩㈨撁娴? 頁面導(dǎo)航菜單就是以首頁和各個獨立頁面組成的菜單. 而分類導(dǎo)航菜單則是以首頁和各個分類組成的菜單.
這是效果演示
既然菜單由首頁和獨立頁面列表或首頁和分類列表所組成, 我們就需要處理兩個環(huán)節(jié), 即首頁菜單項和其他菜單項.
另外, 我們還需要處理菜單項的三個狀態(tài), 即一般狀態(tài), 當(dāng)前菜單項狀態(tài) (如: 在首頁中, 首頁菜單項就是當(dāng)前菜單項) 和選中菜單項狀態(tài).
也就是說, 我們共需要處理 3 個事情:
1. 首頁外的其他菜單項
2. 首頁菜單項
3. 菜單項處于不同狀態(tài)時的視覺效果
預(yù)想結(jié)構(gòu):
頁面導(dǎo)航菜單
1. 獨立頁面列表作為菜單項
調(diào)用 wp_list_pages 獲取獨立頁面列表, 并使用以下參數(shù):
depth: 列表深度(層的最大數(shù)量), 本文討論的是一級菜單, 故最大深度為 1
title_li: 標(biāo)題字符串, 這里不需要, 設(shè)為 0
sort_column: 列表項的排序方式, 根據(jù)創(chuàng)建頁面時所設(shè)定的 order 進(jìn)行升序排列
打印獨立頁面菜單項的語句是:
<?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); ?>
2. 首頁菜單項
由于一般獨立頁面的 class 是 page_item, 當(dāng)前獨立頁面的 class 是 current_page_item. 當(dāng)頁面是首頁時, 首頁菜單項的 class 應(yīng)該是 current_page_item, 其他情況則是 page_item. 為此, 我們需要一段分支代碼來為它確定 class:
<?php // 如果是首頁, class 是 current_page_item if (is_home()) { $home_menu_class = 'current_page_item'; // 如果不是首頁, class 是 page_item } else { $home_menu_class = 'page_item'; } ?>
打印首頁菜單項的語句是:
3. 菜單的樣式
這是一個從普遍到特殊的處理過程, 一般菜單項的樣式放前面, 當(dāng)前和選中菜單項的樣式放在后面, 當(dāng)后者條件滿足就會覆蓋前者的樣式, 從而改變外觀.
/* 菜單項 */ #menubar ul.menus li { float:left; /* 靠左浮動 */ list-style:none; /* 清空列表風(fēng)格 */ margin-right:1px; /* 右側(cè)的間隔 */ } /* 菜單項鏈接 */ #menubar ul.menus li a { padding:5px 10px; /* 內(nèi)邊距 */ display:block; /* 顯示為塊 */ color:#FFF; /* 文字顏色 */ background:#67ACE5; /* 背景顏色 */ text-decoration:none; /* 沒有下橫線 */ } /* 當(dāng)前菜單項鏈接 */ #menubar ul.menus li.current_page_item a { background:#5495CD; /* 背景顏色 */ } /* 選中菜單項鏈接 */ #menubar ul.menus li a:hover { background:#4281B7; /* 背景顏色 */ }
分類導(dǎo)航菜單
1. 分類列表作為菜單項
調(diào)用方法 wp_list_categories 獲取分類列表, 并使用以下參數(shù):
depth: 列表深度(層的最大數(shù)量), 本文討論的是一級菜單, 故最大深度為 1
title_li: 標(biāo)題字符串, 這里不需要, 設(shè)為 0
orderby: 列表項的排序方式, 根據(jù)創(chuàng)建頁面時所設(shè)定的 order 進(jìn)行升序排列
show_count: 是否顯示該分類的文章數(shù)量, 這里不需要顯示, 設(shè)為 0
打印分類菜單項的語句是:
<?php wp_list_categories('depth=1&title_li=0&orderby=name&show_count=0'); ?>
2. 首頁菜單項
與頁面導(dǎo)航菜單相似, 只是菜單項的 class 有所不同.
page_item 更改為 cat-item
current_page_item 更改為 current-cat
3. 菜單的樣式
因為菜單項的 class 略有不同, 所以也需稍作修改.
current_page_item 更改為 current-cat
二級導(dǎo)航菜單
我們已經(jīng)知道菜單如何創(chuàng)建了, 這回我們要使用分類列表做成二級導(dǎo)航菜單. 我們要做的其實是在原有的基礎(chǔ)上改出二級菜單, 以及對二級菜單進(jìn)行處理. (請確保的的分類中包含子分類, 否則調(diào)不出二級菜單.)
我們共需要處理 3 個事情:
1. 調(diào)出二級菜單 (子分類)
2. 二級菜單的樣式
3. 二級菜單的效果
預(yù)想結(jié)構(gòu)
實施操作
1. 調(diào)出二級菜單 (子分類)
是否還記得制作導(dǎo)航菜單時是如何設(shè)定列表深度的? 當(dāng)時將深度設(shè)為 1 是為了不顯示子分類, 現(xiàn)在要二級子分類當(dāng)然要將深度設(shè)為 2 了.
depth: 列表深度(層的最大數(shù)量), 本文討論的是二級菜單, 故最大深度為 2.
打印分類菜單項的語句是:
<?php wp_list_pages('depth=2&title_li=0&sort_column=menu_order'); ?>
2. 二級菜單的樣式
也只是在本來的樣式上進(jìn)行修改, 加上子分類的樣式.
/* 二級菜單 */ #menubar ul.children { display:none; /* 初始化頁面時不顯示出來 */ padding:0; margin:0; } /* 二級菜單的菜單項 */ #menubar ul.children li { float:none; /* 垂直排列 */ margin:0; padding:0; } /* 二級菜單的當(dāng)前菜單項鏈接 */ #menubar ul.children li a { width:100px; /* 對 IE6 來說十分很重要 */ }
打印首頁菜單項的語句是:
3. 二級菜單的效果
全部使用 JavaScript 實現(xiàn), 為便于理解, 使用面向?qū)ο蠓绞骄帉懘a, 借鑒了部分 Prototype 框架的代碼. 因為代碼比較多, 不適合逐句解說, 所以我已標(biāo)上了大量注釋. 代碼不是很復(fù)雜, 有 JS 基礎(chǔ)的話應(yīng)該不會存在障礙.
另外為了迎合個別人的口味, 加上透明效果. Enjoy!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com