程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 學習typecho主題開發筆記01,typecho主題筆記01

學習typecho主題開發筆記01,typecho主題筆記01

編輯:關於PHP編程

學習typecho主題開發筆記01,typecho主題筆記01


博客被加速樂坑掉,於是有了學習typecho主題開發的想法,感謝這個機會!


首先是去看主題文件夾下面的'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('&laquo; 前一頁', '後一頁 &raquo;'); ?> 32 </div><!-- end #main--> 33 34 <?php $this->need('sidebar.php'); ?> 35 <?php $this->need('footer.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('&laquo; 前一頁', '後一頁 &raquo;'); ?>
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('&laquo; 前一頁', '後一頁 &raquo;'); ?>
</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基礎,但是學習了之後發現不難,嘿嘿!繼續努力!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved