制作模板

2018-06-13 16:54 更新

默認(rèn)地,ModPHP 并不自帶模板,在安裝了 ModPHP 之后,你還需要為自己的網(wǎng)站制作或下載一套(主題)模板。

由于 ModPHP 是支持無(wú)限模塊擴(kuò)展的,所以這篇文檔僅以默認(rèn)的五個(gè)模塊為例,向你介紹開發(fā)一套 ModPHP 模板所需要進(jìn)行的工作。

必需或者建議創(chuàng)建的模板文件:

  • index.php??索引文件,存放和展示站點(diǎn)的首頁(yè)內(nèi)容。
  • functions.php??模板函數(shù)文件,存儲(chǔ)與模板相關(guān)的自定義函數(shù)、Api Hook 回調(diào)函數(shù),以及模板將會(huì)使用的全局變量等。
  • header.php??公共頭部文件,顯示整站統(tǒng)一的網(wǎng)頁(yè)頭部?jī)?nèi)容。
  • footer.php??公共腳部文件,顯示整站統(tǒng)一的網(wǎng)頁(yè)腳注內(nèi)容。
  • profile.php??用戶詳情頁(yè),顯示登錄用戶的詳細(xì)信息。
  • category.php??分類目錄頁(yè)面,顯示分類目錄下的文章列表。
  • single.php??文章詳情頁(yè),顯示文章的具體內(nèi)容。

除了 function.php,其他模板文件的命名都是可選的,但是要根據(jù)配置中的模板設(shè)定來(lái)選擇正確的命名,否則將會(huì)無(wú)法正確加載頁(yè)面。

調(diào)用并展示數(shù)據(jù):

要調(diào)用存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù),你可以使用函數(shù)或類方法來(lái)實(shí)現(xiàn),相關(guān)的函數(shù)可以在?文檔?>>?函數(shù)?的后面部分找到,類方法可以在?文檔?>>??>>?mod?中找到。 例如,要在文章詳情頁(yè)中顯示一篇文章,你可以這么做:

<article>
? ? <h1 class="title"><?php echo post_title(); ?></h1>
? ? <section class="content">
????? ? <?php echo post_content(); ?>
? ? </section>
</article>

在公共頭部文件中,你可以使用頁(yè)面面判斷函數(shù)類選擇在不同的頁(yè)面顯示不同的內(nèi)容:

<?php
? ? if(is_home()){
????? ? $title = '首頁(yè)';
? ? }elseif(is_category()){
????? ? $title = category_alias() ?: category_name();
? ? }elseif(is_profile()){
????? ? $title = user_nickname() ?: user_name();
? ? }
?>
<head>
????<title><?php echo $title.' - '.config('site.name'); ?></title>
</head>

然后在其他模板文件中,你可以使用 include 命令引入這個(gè)頭部文件:

<?php include 'header.php'; ?>

在分類目錄頁(yè)面,可以使用 get_multi_post() 來(lái)獲取并列舉文章:

<div class="container">
? ? <ul>
????? ? <?php while(get_multi_post()): ?>
????????<li>
????????????<h2 class="title"><a href="<?php echo post_link() ?: create_url(config('post.staticURI'), post_category('name'), post_id()); ?>"><?php echo post_title(); ?></a></h2>
????????????<div class="desc"><?php echo substr(post_content(), 0, 100); ?>...</div>
????????????<div class="meta">作者:<?php echo post_user('nickname') ?: post_user('name'); ?>,日期:<?php echo date('Y-m-d', post_time()); ?></div>
????????</li>
????? ? <?php endwhile; ?>
? ? </ul>
</div>

你可以在模板函數(shù)文件中定義一些函數(shù)或變量,將功能相同的代碼集中到一起,然后在模板中調(diào)用它們,也可以設(shè)置 Api Hook 回調(diào)函數(shù),定義自己對(duì)數(shù)據(jù)的過(guò)濾和修飾規(guī)則。

例如上面在公共頭部文件中進(jìn)行頁(yè)面判斷代碼,也可以做成函數(shù)放在模板函數(shù)文件中:

<?php
function get_title(){
? ? if(is_home()){
? ? ? ? $title = '首頁(yè)';
? ? }elseif(is_category()){
? ? ? ? $title = category_alias() ?: category_name();
? ? }elseif(is_profile()){
? ? ? ? $title = user_nickname() ?: user_name();
? ? }
? ? return $title.' - '.config('site.name');
}

然后直接在頭部文件中調(diào)用這個(gè)函數(shù):

<head>
????<title><?php echo get_title(); ?></title>
</head>

要?jiǎng)?chuàng)作出漂亮又功能強(qiáng)大的模板,你需要更多地了解 ModPHP 所提供地各類函數(shù)、對(duì)象及其他特性,并且熟練掌握 HTML、CSS 和 JavaScript。 另外,你可以到互聯(lián)網(wǎng)上下載現(xiàn)有的網(wǎng)站模板,對(duì)其中的內(nèi)容進(jìn)行一定的修改,加入 ModPHP 的元素,讓其成為一個(gè) ModPHP 主題模板,從而加快你的開發(fā)進(jìn)度。 在多套模板之間進(jìn)行切換: ModPHP 所加載的模板,是由?config('mod.template.savePath') ?設(shè)定的,假如你的網(wǎng)站存在多套可供選擇的模板,你應(yīng)當(dāng)將它們分別存放在不同的文件夾中,然后通過(guò)寫改配置來(lái)設(shè)置應(yīng)當(dāng)調(diào)用的模板,例如可以設(shè)置?config('mod.template.savePath', 'template/default/') ?來(lái)調(diào)用 default 模板。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)