Typecho主题开发1~3:HelloWorld

前言

Typecho是我接触过最好用,最简单,最快的建站程序,看了一下官网第一篇文章居然是2008年的!!!这个程序只比我小了一岁 (甚至可能比我还大)

写Typecho主题模板不难,你只需要会HTML看得懂CSS即可。

重要

Typecho主题开发系列教程基于TTDF

GitHub:github.com/ShuShuicu/T...

关于TTDF

在这之前特别感谢@Sualiu的贡献,伟大 无需多言!

这是一款Typecho主题模板开发框架,还算不上框架只能说让开发变得更简单些

HelloWorld

ok,我们将下载好的TTDF解压到Typecho主题目录usr/themes

打开ide,修改index.php头部注释中的相关信息

php 复制代码
<?php
/**
 * 欢迎使用Typecho主题模板开发框架!
 * @package TTDF
 * @author 鼠子(Tomoriゞ)
 * @version 1.0.0
 * @link https://github.com/ShuShuicu/TTDF
 */
Name Info
package 主题名称
author 主题作者
version 主题版本号
link 主题链接

修改后启用主题访问Typecho站点首页应该就能看到:

接下来继续看下方的php代码:

php 复制代码
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
// 面向过程调用
get_template('AppHeader');

// 输出 TTDF 默认内容,开发前删除即可
TTDF::HelloWorld();

// 面向对象调用
Get::Template('AppFooter');

第一个if判断是禁止直接访问到php文件的

get_template&Get::Template方法为require_once引入目录Template文件夹下的php文件

TTDF::HelloWorld方法为调用默认内容,作为测试使用,开发时删掉即可

基础结构

主题的基础结构以及语法

文件 页面
index.php 首页
post.php 文章
page.php 页面
archive.php 分类标签

下面我们开始编写index.php首页的模板

index.php

php 复制代码
<?php
/**
 * 欢迎使用Typecho主题模板开发框架!
 * @package TTDF
 * @author 鼠子(Tomoriゞ)
 * @version 1.0.0
 * @link https://github.com/ShuShuicu/TTDF
 */
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
Get::Template('AppHeader');

// while 输出文章列表
while (GetPost::List()) {
    GetPostHTML();
};

// 编写文章列表HTML
function GetPostHTML() {
?>
<li>
    <a href="<?php GetPost::Permalink(); ?>">
        <h2><?php GetPost::Title(); ?></h2>
        <p><?php GetPost::Excerpt(); ?></p>
    </a>
</li>
<?php
};

Get::Template('AppFooter');

如果你需要自定义归档(分类标签)页面的样式就在主题根目录新建archive.php,写法和index.php是一样的

接下来写文章/页面详情页面post.php

php 复制代码
<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
Get::Template('AppHeader');
?>
<h2><?php GetPost::Title(); ?></h2>
<p>
<?php GetPost::Date(); ?> · <?php GetPost::Category(); ?> · <?php GetPost::Tags(); ?>
</p>
<div>
<?php GetPost::Content(); ?>
</div>
<?php
Get::Template('AppFooter');

这时候点击文章链接到内页就可以看到文章内容了。

如果你需要自定义独立页面的样式就在主题根目录新建page.php,写法和post.php是一样的

提个建议,例如全局调用的组件(侧边栏,评论样式)就写到Template目录下使用Get::Template()方法或get_template()函数调用,根目录仅保留入口文件

更多调用方法请阅读文档:github.com/ShuShuicu/T...

相关推荐
dog shit28 分钟前
web第十次课后作业--Mybatis的增删改查
android·前端·mybatis
我有一只臭臭29 分钟前
el-tabs 切换时数据不更新的问题
前端·vue.js
七灵微32 分钟前
【前端】工具链一本通
前端
Nueuis2 小时前
微信小程序前端面经
前端·微信小程序·小程序
_r0bin_4 小时前
前端面试准备-7
开发语言·前端·javascript·fetch·跨域·class
IT瘾君4 小时前
JavaWeb:前端工程化-Vue
前端·javascript·vue.js
potender4 小时前
前端框架Vue
前端·vue.js·前端框架
站在风口的猪11085 小时前
《前端面试题:CSS预处理器(Sass、Less等)》
前端·css·html·less·css3·sass·html5
程序员的世界你不懂5 小时前
(9)-Fiddler抓包-Fiddler如何设置捕获Https会话
前端·https·fiddler
MoFe15 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore