轉(zhuǎn)自:http://blog./2008/07/theme.html,i.
一、主題包各文件解釋
header.php:這個文件中包羅博客的題目(title),刻畫(description),tag,以及css等消息。
sidebar.php:這個文件掌控你側(cè)邊欄中的揭示方法。
footer.php:掌控版面底端的揭示,包羅ICP,版權(quán)申明等消息。
archive.php:被體系調(diào)用用于揭示用戶提交分類,按時期歸檔,tag等查詢后賣弄的版面。下面代碼顯露了archive.php內(nèi)部是如何識別不同的查詢央求的:
<?php if (is_category()) { ?>
<div class=”pagetitle”>‘<?php single_cat_title(); ?>’ 分類下的文章</div>
<!–顯現(xiàn)下面是哪個分類下的文章列表,‘ ’ 離別是左右單引號,下同–>
<?php } elseif( is_tag() ) { ?>
<div class=”pagetitle”>‘<?php single_tag_title(); ?>’ 標(biāo)簽下的文章</div>
…………
<?php } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?><div class=”pagetitle”>日志歸檔</div>
<?php } ?>
search.php:用于顯現(xiàn)用戶提交搜查后顯現(xiàn)的頁面。
searchform.php:搜查欄表單,被header.php調(diào)用,網(wǎng)絡(luò)流_48156。
single.php:用于全文賣弄post頁面。
page.php:用于全文賣弄page頁面,The.Rose.Has.Teeth.in.the.Mouth.of.a.Beast。
function.php:寄放自定義的函數(shù),被其余文件包括和調(diào)用。
comments.php:留神談?wù)撃0?,被single.php,page.php等必要評價性能的網(wǎng)頁調(diào)用。
style.css:全部網(wǎng)站格局和顯現(xiàn)形式。
screenshot.jpg:用于在后臺抉擇主題版面里顯現(xiàn)這個主題的截圖,wordpress會主動在主標(biāo)題錄下尋找screenshot.*文件。二、從源碼看主題的調(diào)用歷程
當(dāng)博覽器向apache發(fā)送央求要取得博客主頁的HTML代碼時,./index.php被調(diào)用。./index.php中的require(‘./wp-blog-header.php’);調(diào)用./wp-blog-header.php。
而./wp-blog-header.php做了一些鏈接數(shù)據(jù)庫包羅頭文件等解決,中間有兩件事情與主題調(diào)用有關(guān):
1、有require_once( dirname(__FILE__) ./wp-includes/functions.php’);
而/wp-includes/functions.php中包羅進了./wp-includes/theme.php,此地定義了get_home_template()。
function get_home_template() {//回來所要加載的主題
$template = ”;
if ( file_exists(TEMPLATEPATH . “/home.php”) )
$template = TEMPLATEPATH . “/home.php”;
elseif ( file_exists(TEMPLATEPATH . “/index.php”) )
$template = TEMPLATEPATH . “/index.php”;
return apply_filters(‘home_template’, $template);
中間apply_filters()的作用是:將$template hook到tag=’home_template’的filters上并回來$template,也即使主題包的路徑。
2、有require_once(ABSPATH . WPINC . ‘/template-loader.php’);
調(diào)用了./wp-includes/template-loader.php(ABSPATH代表./, WPINC代表/wp-includes)。
而./wp-includes/template-loader.php中有:
} else if ( is_home() && $template = get_home_template() ) {
include($template);
return;
get_home_template()將 主題包路徑歸來給$template,,此地的include($template);語句就把./wp-content/themes/主題名/index.php(譬如阿德日志目前所用的主題路徑就是./wp-content/ade/index.php)包括進入了。于是開端執(zhí)到./wp-content/themes/ade/index.php里邊的代碼了,接下來就是該主題內(nèi)部的事情了。三、主題被調(diào)用后,首頁的加載歷程
各個頁面的加載歷程大概相像,下面以首頁為例解釋。顯露首頁的時候,Wordpress只調(diào)用index.php,在index.php定義了要加載那些模板以及其加載次序。平常情形是:header.php->頁面首要內(nèi)容(index,page,signle等頁面都有其自己的定義)->sidebar.php->footer.php
其實對于一個可以供給Theme的過程而言,在過程的構(gòu)架上一定要完成數(shù)據(jù)和體現(xiàn)的分別。平常我們所說的MVC(Model、View、Controller)架構(gòu)即使這個含義。
在WordPress中,是這么來得逞數(shù)據(jù)和完成的分別的。
1. XHTML:用Div等用來體現(xiàn)數(shù)據(jù),CSS來刻畫這些數(shù)據(jù)的體現(xiàn)模式,用這種方法來完成數(shù)據(jù)和體現(xiàn)的分別;
2. Template的方法:頁面各個局部獨自保留為一個一個.php文件(如上面的sidebar.php,footer.php等),頁面加載時候調(diào)用所需代碼。
譬如<?php comments_template(); ?>就回來了留言框的所需代碼。
在譬如index中有:
<?php get_footer(); ?>
<?php get_header(); ?>
“get_header”和”get_footer”離別用來取得該頁的Header和Footer,其實即使兩個DIV塊兒。index的主體同樣是一個大的Div(<div id=”content”>),在該Theme的CSS中即能夠看到對這個DIV的體現(xiàn)定義,包羅字體、背景色澤、邊距等等。此地單一的 id=content來告知博覽器,將數(shù)據(jù)庫操縱封裝到Javabean,這個標(biāo)簽內(nèi)的內(nèi)容顯露在css中定義的content局部里邊。一、常見差錯1# :多次拷貝字符串
上一