学习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
class="col-mb-12 col-8" id="main" role="main">
16 while(
$this->
next()): ?>
17 class="post" itemscope itemtype="http://schema.org/BlogPosting">
18 class="post-title" itemprop="name headline">$this->title() ?>
19
25 class="post-content" itemprop="articleBody">
26 $this->content('- 阅读剩余部分 -'); ?>
27
28
29 endwhile; ?>
30
31 $this->pageNav('« 前一页', '后一页 »'); ?>
32
33
34 $this->need('sidebar.php'); ?>
35 $this->need('footer.php'); ?
下面是这是index.php的源代码:
<span> 1</span> <?<span>php
</span><span> 2</span> <span>/*</span><span>*
</span><span> 3</span> <span> * 这是 Typecho 0.9 系统的一套默认皮肤
</span><span> 4</span> <span> *
</span><span> 5</span> <span> * @package Typecho Replica Theme
</span><span> 6</span> <span> * @author Typecho Team
</span><span> 7</span> <span> * @version 1.2
</span><span> 8</span> <span> * @link http://typecho.org
</span><span> 9</span> <span>*/</span>
<span>10</span>
<span>11</span> <span>if</span> (!<span>defined</span>('__TYPECHO_ROOT_DIR__')) <span>exit</span><span>;
</span><span>12</span> <span>$this</span>->need('header.php'<span>);
</span><span>13</span> ?>
<span>14</span>
<span>15</span> <div <span>class</span>="col-mb-12 col-8" id="main" role="main">
<span>16</span> <?php <span>while</span>(<span>$this</span>-><span>next</span>()): ?>
<span>17</span> <article <span>class</span>="post" itemscope itemtype="http://schema.org/BlogPosting">
<span>18</span> <h2 <span>class</span>="post-title" itemprop="name headline"><a itemtype="url" href="<?php <span>$this</span>->permalink() ?>"><?php <span>$this</span>->title() ?></a></h2>
<span>19</span> <ul <span>class</span>="post-meta">
<span>20</span> <li itemprop="author" itemscope itemtype="http://schema.org/Person"><?php _e('作者: '); ?><a itemprop="name" href="<?php <span>$this</span>->author->permalink(); ?>" rel="author"><?php <span>$this</span>->author(); ?></a></li>
<span>21</span> <li><?php _e('时间: '); ?><<span>time</span> datetime="<?php <span>$this</span>->date('c'); ?>" itemprop="datePublished"><?php <span>$this</span>-><span>date</span>('F j, Y'); ?></<span>time</span>></li>
<span>22</span> <li><?php _e('分类: '); ?><?php <span>$this</span>->category(','); ?></li>
<span>23</span> <li itemprop="interactionCount"><a itemprop="discussionUrl" href="<?php <span>$this</span>->permalink() ?>#comments"><?php <span>$this</span>->commentsNum('评论', '1 条评论', '%d 条评论'); ?></a></li>
<span>24</span> </ul>
<span>25</span> <div <span>class</span>="post-content" itemprop="articleBody">
<span>26</span> <?php <span>$this</span>->content('- 阅读剩余部分 -'); ?>
<span>27</span> </div>
<span>28</span> </article>
<span>29</span> <?php <span>endwhile</span>; ?>
<span>30</span>
<span>31</span> <?php <span>$this</span>->pageNav('« 前一页', '后一页 »'); ?>
<span>32</span> </div><!-- <span>end</span> <span>#</span><span>main--></span>
<span>33</span>
<span>34</span> <?php <span>$this</span>->need('sidebar.php'); ?>
<span>35</span> <?php <span>$this</span>->need('footer.php'); ?>
Copy after login
<p>2-9行是注释,里面包含了主题的各种信息,每行以*开头。</p>
Copy after login
@package 表示主题的名称
@author 表示作者信息
@version 表示主题当前的版本
@link 表示作者的网站链接
include()方法用来包含要用到的php文件,具体用法查阅PHP官方手册include()方法
在12,34,35行都能看到$this->need(),它在typecho里面就和include()的作用是一样的
<span>$this</span>->need('header.php'<span>);
</span><?php <span>$this</span>->need('sidebar.php'); ?>
<?php <span>$this</span>->need('footer.php'); ?>
Copy after login
所以上面的代码就是调用header.php,sidebar.php,footer.php。具体这三个php文件是什么作用的,很简单,顾名思义哦!
然后就是文章页面的主体了
<div <span>class</span>="col-mb-12 col-8" id="main" role="main">
<?php <span>while</span>(<span>$this</span>-><span>next</span>()): ?>
<article <span>class</span>="post" itemscope itemtype="http://schema.org/BlogPosting">
<h2 <span>class</span>="post-title" itemprop="name headline"><a itemtype="url" href="<?php <span>$this</span>->permalink() ?>"><?php <span>$this</span>->title() ?></a></h2>
<ul <span>class</span>="post-meta">
<li itemprop="author" itemscope itemtype="http://schema.org/Person"><?php _e('作者: '); ?><a itemprop="name" href="<?php <span>$this</span>->author->permalink(); ?>" rel="author"><?php <span>$this</span>->author(); ?></a></li>
<li><?php _e('时间: '); ?><<span>time</span> datetime="<?php <span>$this</span>->date('c'); ?>" itemprop="datePublished"><?php <span>$this</span>-><span>date</span>('F j, Y'); ?></<span>time</span>></li>
<li><?php _e('分类: '); ?><?php <span>$this</span>->category(','); ?></li>
<li itemprop="interactionCount"><a itemprop="discussionUrl" href="<?php <span>$this</span>->permalink() ?>#comments"><?php <span>$this</span>->commentsNum('评论', '1 条评论', '%d 条评论'); ?></a></li>
</ul>
<div <span>class</span>="post-content" itemprop="articleBody">
<?php <span>$this</span>->content('- 阅读剩余部分 -'); ?>
</div>
</article>
<?php <span>endwhile</span>; ?>
<?php <span>$this</span>->pageNav('« 前一页', '后一页 »'); ?>
</div><!-- <span>end</span> <span>#</span><span>main--></span>
Copy after login
endwhile是什么鬼????为什么我重来没用过....查阅了下资料,原来是一种语法糖:)
文章主体就是从这里开始到结束的
<?php <span>while</span>(<span>$this</span>-><span>next</span>()): ?>
<?php <span>endwhile</span>; ?>
Copy after login
:替代了{
;替代了}
详细见文章:PHP中流程控制的替代语法
接着就是一些方法了
<?php <span>$this</span>->permalink() ?><span> 文章所在的连接
</span><?php <span>$this</span>->title() ?><span> 文章标题
</span><?php <span>$this</span>->author(); ?><span> 文章作者
</span><?php <span>$this</span>->author->permalink(); ?><span> 文章作者地址
</span><?php <span>$this</span>-><span>date</span>('F j, Y'); ?><span> 文章的发布日期,格式可参考PHP日期格式
</span><?php <span>$this</span>->category(','); ?><span> 文章所在分类
</span><?php <span>$this</span>->commentsNum('%d Comments'); ?><span> 文章评论数及连接
</span><?php <span>$this</span>->content('Continue Reading...'); ?> 文章内容,其中的“<span>Continue</span> Reading…” 是显示摘要时隐藏部分的文字
Copy after login
_e()这是什么方法,专一而精十
看了下wordpress里面的_e()方法,居然是用作翻译的。。。难道typecho还有歪果仁使用(逃
直接打印输出到 html 中的字符串,就用 _e() 。具体看这里
在代码里面还能看见itemprop属性,这是html5新加的,暂时不用管他Q.Q
最后是一个分页的方法
<?php <span>$this</span>->pageNav(); ?>
Copy after login
至此,index.php文件已经被分析一遍了,虽然我没有php基础,但是学习了之后发现不难,嘿嘿!继续努力!