博客被加速樂坑掉,於是有了學習typecho主題開發的想法,感謝這個機會!
首先是去看主題文件夾下面的'index.php',一個博客的文章頁面一般包括下面幾個基本元素
下面是這是index.php的源代碼:
1 <?php 2 /** 3 * 這是 Typecho 0.9 系統的一套默認皮膚 4 * 5 * @package Typecho Replica Theme 6 * @author Typecho Team 7 * @version 1.2 8 * @link http://typecho.org 9 */ 10 11 if (!defined('__TYPECHO_ROOT_DIR__')) exit; 12 $this->need('header.php'); 13 ?> 14 15 <div class="col-mb-12 col-8" id="main" role="main"> 16 <?php while($this->next()): ?> 17 <article class="post" itemscope itemtype="http://schema.org/BlogPosting"> 18 <h2 class="post-title" itemprop="name headline"><a itemtype="url" href="<?php $this->permalink() ?>"><?php $this->title() ?></a></h2> 19 <ul class="post-meta"> 20 <li itemprop="author" itemscope itemtype="http://schema.org/Person"><?php _e('作者: '); ?><a itemprop="name" href="<?php $this->author->permalink(); ?>" rel="author"><?php $this->author(); ?></a></li> 21 <li><?php _e('時間: '); ?><time datetime="<?php $this->date('c'); ?>" itemprop="datePublished"><?php $this->date('F j, Y'); ?></time></li> 22 <li><?php _e('分類: '); ?><?php $this->category(','); ?></li> 23 <li itemprop="interactionCount"><a itemprop="discussionUrl" href="<?php $this->permalink() ?>#comments"><?php $this->commentsNum('評論', '1 條評論', '%d 條評論'); ?></a></li> 24 </ul> 25 <div class="post-content" itemprop="articleBody"> 26 <?php $this->content('- 閱讀剩余部分 -'); ?> 27 </div> 28 </article> 29 <?php endwhile; ?> 30 31 <?php $this->pageNav('« 前一頁', '後一頁 »'); ?> 32 </div><!-- end #main--> 33 34 <?php $this->need('sidebar.php'); ?> 35 <?php $this->need('footer.php'); ?>
2-9行是注釋,裡面包含了主題的各種信息,每行以*開頭。
@package 表示主題的名稱
@author 表示作者信息
@version 表示主題當前的版本
@link 表示作者的網站鏈接
include()方法用來包含要用到的php文件,具體用法查閱PHP官方手冊include()方法
在12,34,35行都能看到$this->need(),它在typecho裡面就和include()的作用是一樣的
$this->need('header.php'); <?php $this->need('sidebar.php'); ?> <?php $this->need('footer.php'); ?>
所以上面的代碼就是調用header.php,sidebar.php,footer.php。具體這三個php文件是什麼作用的,很簡單,顧名思義哦!
然後就是文章頁面的主體了
<div class="col-mb-12 col-8" id="main" role="main"> <?php while($this->next()): ?> <article class="post" itemscope itemtype="http://schema.org/BlogPosting"> <h2 class="post-title" itemprop="name headline"><a itemtype="url" href="<?php $this->permalink() ?>"><?php $this->title() ?></a></h2> <ul class="post-meta"> <li itemprop="author" itemscope itemtype="http://schema.org/Person"><?php _e('作者: '); ?><a itemprop="name" href="<?php $this->author->permalink(); ?>" rel="author"><?php $this->author(); ?></a></li> <li><?php _e('時間: '); ?><time datetime="<?php $this->date('c'); ?>" itemprop="datePublished"><?php $this->date('F j, Y'); ?></time></li> <li><?php _e('分類: '); ?><?php $this->category(','); ?></li> <li itemprop="interactionCount"><a itemprop="discussionUrl" href="<?php $this->permalink() ?>#comments"><?php $this->commentsNum('評論', '1 條評論', '%d 條評論'); ?></a></li> </ul> <div class="post-content" itemprop="articleBody"> <?php $this->content('- 閱讀剩余部分 -'); ?> </div> </article> <?php endwhile; ?> <?php $this->pageNav('« 前一頁', '後一頁 »'); ?> </div><!-- end #main-->
endwhile是什麼鬼????為什麼我重來沒用過....查閱了下資料,原來是一種語法糖:)
文章主體就是從這裡開始到結束的
<?php while($this->next()): ?> <?php endwhile; ?>
:替代了{
;替代了}
詳細見文章:PHP中流程控制的替代語法
接著就是一些方法了
<?php $this->permalink() ?> 文章所在的連接 <?php $this->title() ?> 文章標題 <?php $this->author(); ?> 文章作者 <?php $this->author->permalink(); ?> 文章作者地址 <?php $this->date('F j, Y'); ?> 文章的發布日期,格式可參考PHP日期格式 <?php $this->category(','); ?> 文章所在分類 <?php $this->commentsNum('%d Comments'); ?> 文章評論數及連接 <?php $this->content('Continue Reading...'); ?> 文章內容,其中的“Continue Reading…” 是顯示摘要時隱藏部分的文字
_e()這是什麼方法,專一而精十
看了下wordpress裡面的_e()方法,居然是用作翻譯的。。。難道typecho還有歪果仁使用(逃
直接打印輸出到 html 中的字符串,就用 _e() 。具體看這裡
在代碼裡面還能看見itemprop屬性,這是html5新加的,暫時不用管他Q.Q
最後是一個分頁的方法
<?php $this->pageNav(); ?>
至此,index.php文件已經被分析一遍了,雖然我沒有php基礎,但是學習了之後發現不難,嘿嘿!繼續努力!