1. 模板文件目录结构

模板文件存放在以下目录结构中:

/templates/
   ├─biquge/      (模板名称)

每个模板目录下包含:

header.html      公共头部
footer.html      公共底部
index.html       首页模板
booklist.html    书籍详情/目录模板
chapter.html     章节内容模板
login.html       登录模板
register.html    注册模板
user.html        用户模板
sort.html        分类模板
search.html      搜索模板
passeditw.html   修改密码页模板
paihangbang.html 排行榜模板
full.html        全本模板
author.html      作者模板
history.html     临时书架模板
bookcase.html    收藏夹模板

2. 引入公共头部与底部

使用 Pongo2 的 include:

{% include "header.html" %}
页面内容
{% include "footer.html" %}

3. 输出变量

模板中可以直接使用变量:

{{ site_title }}

{{ template_dir }}

{{ Applang }}

支持点语法访问对象属性:

{{ bookLang.shouye }}
{{ bookLang.shujia }}

4. if 条件判断

{% if Applang=="tw" %}
  繁体中文
{% elif Applang=="cn" %}
  简体中文
{% else %}
 其他
{% endif %}
其他详细使用可查询官方地址https://github.com/flosch/pongo2/blob/master/template_tests/if.tpl

5. for 循环语法


6. 过滤器(内置)

常用示例:

{{ intro|safe }}            输出HTML不转义
{{intro|slice:":20"}}       从左边截取20个字符
{{ item.lastupdateT|slice:"5:"}} 从第5个字符开始截取后面所有字符
{{ intro|slice:"5:20"}} 从第5个字符开始截取20个字符
{{ intro | trim }}                  去空格
{{ intro | escape }}                HTML 转义
{{words/1000}}K                     支持的运算符:+(加)、-(减)、*(乘)、/(除)、%(求模)、>(大于)、<(小于)、=(等于)

7. 输出原始 HTML 内容

{{ intro | safe }}

用于小说简介、章节内容等富文本。

8. 模板中变量列表

不同页面会提供不同变量,本系统固定提供以下核心变量:

Tiaozhuan        跳转            类型  bool
Isadweb          受众站          类型  bool
Encode10         是否10进制      类型  bool
Tznum            跳转页面计数    类型  int
htmllang         网页语言        类型  string (zh/tw/en->简体中文/繁体中文/英文)      
Applang          程序语言        类型  string (zh/tw/cn/en/auto->简繁中文/繁体中文/简体中文/英文/自动)
logodir          电脑站logo地址  类型  string 
logowapdir       手机站logo地址  类型  string
sortList         分类集合        类型  []map[string]interface{} 需for取值包含name,pinyin,sortid,sorturl
template_dir     模板路径        类型  string
template         模板名称        类型  string
homesorturl      分类默认URL     类型  string
homepaihangurl   排行榜默认URL   类型  string
homefullurl      完本默认URL     类型  string
current_lang     用户语言        类型  string (cn/tw/en->简体中文/繁体中文/英文) 
sitename         网站简介        类型  string
date             当前年份        类型  string
bookLang         语言字典集合    类型  map[string]interface{}  etc/lang.json里面 比如bookLang.denglu取值,可以自行添加
tongji           统计代码        类型  string  后台设置后全页面可以直接取值{{ tongji | safe }}
webname          网站名称        类型  string
weburl           电脑站域名      类型  string
wapurl           手机站域名      类型  string

模块公共变量全是string类型:

articleid        小说id
articlename      小说名称
author           作者名字
intro            小说介绍
sortid           小说分类id
sortname         小说分类名字
sortpy           小说分类拼音
allvisit         小说点击数
fullflag         小说状态   连载/完结
fullflagid       小说状态   0/1
lastchapter      小说最新章节名称
chapters         小说章节列表排序最大序号
lastupdate       小说最近更新时间 时间戳
lastupdateT      小说最近更新时间 年-月-日
postdate         小说入库时间 时间戳
postdateT        小说入库时间 年-月-日
imgurl           小说封面URL
words            小说字数
listurl          小说信息目录页URL
lastupdateurl    小说最新章节URL
authorurl        小说作者URL
sorturl          小说分类URL
fullurl          完本URL
paihangurl       排行榜URL

index.html首页模板变量:

site_title              首页title       类型  string
keywords                首页keywords    类型  string
description             首页description 类型  string
BOOK_AD_INDEX_TOP       首页顶部广告    类型  string  后台设置首页广告可以直接取值{{ BOOK_AD_INDEX_TOP | safe }}
BOOK_AD_INDEX_BOTTOM    首页底部广告    类型  string  后台设置首页广告可以直接取值{{ BOOK_AD_INDEX_BOTTOM | safe }}
BOOK_AD_INDEX_SUSPENDED 首页悬浮广告    类型  string  后台设置首页广告可以直接取值{{ BOOK_AD_INDEX_SUSPENDED | safe }}
BookSiteName            网站名称        类型  string  和核心变量webname重叠了
yl                      站群内首页互连  类型  []map[string]string  需for取值包含url,name
sorttj                  分类推荐集合    类型  []map[string]interface{} 需for取值包含sortid,sortname,sortpy,sorturl,sortbooks类型是[]map[string]string也需要嵌套for取值,内容是模块公共变量
postdate                最新入库集合    类型  []map[string]string  for取值,内容是模块公共变量
tj                      最近访问集合    类型  []map[string]string  for取值,内容是模块公共变量
zjgx                    最近更新集合    类型  []map[string]string  for取值,内容是模块公共变量
allvisit                热门小说集合    类型  []map[string]string  for取值,内容是模块公共变量
full                    完结小说集合    类型  []map[string]string  for取值,内容是模块公共变量
size                    字数排行集合    类型  []map[string]string  for取值,内容是模块公共变量
goodnum                 收藏排行集合    类型  []map[string]string  for取值,内容是模块公共变量
allvote                 推荐排行集合    类型  []map[string]string  for取值,内容是模块公共变量

booklist.html信息列表页模板变量:

chapter                 章节列表集合    类型  []map[string]interface{} for取值包含章节名称 chaptername,章节URL chapterurl
last9                   最新九章集合    类型  []map[string]interface{} for取值包含章节名称 chaptername,章节URL chapterurl
lastchapter             最新章节名称    类型  string
firsturl                第一章URL       类型  string
lastupdateurl           最新章节URL     类型  string
uptime                  最近更新时间    类型  string   年-月-日 时:分
BOOK_AD_INDEX_TOP       顶部广告        类型  string   后台设置信息目录页广告可以直接取值{{ BOOK_AD_INDEX_TOP | safe }}
BOOK_AD_INDEX_BOTTOM    底部广告        类型  string   后台设置信息目录页广告可以直接取值{{ BOOK_AD_INDEX_BOTTOM | safe }}
BOOK_AD_INDEX_SUSPENDED 悬浮广告        类型  string   后台设置信息目录页广告可以直接取值{{ BOOK_AD_INDEX_SUSPENDED | safe }}
sorturl                 分类URL         类型  string
authorurl               作者URL         类型  string
booklisturl             信息目录页URL   类型  string
articleid               小说原始ID      类型  int   原始ID用于推荐,收藏传递参数
articlename             小说名字        类型  string
author                  作者名字        类型  string
intro                   小说简介        类型  string
sortid                  小说ID          类型  int
fullflag                小说状态        类型  string  连载/完结
flags                   小说状态        类型  string  b/a
imgurl                  小说封面URL     类型  string
sortname                分类名称        类型  string
jiandu                  最新章节简读    类型  string   最新章节内容截取三行
rmxs                    热门小说集合    类型  []map[string]string  for取值,内容是模块公共变量
bltj                    本类推荐集合    类型  []map[string]string  for取值,内容是模块公共变量
tag                     当前小说TAG     类型  string  当前小说的TAG关键词
booklist_title          title           类型  string  列表页Title
booklist_key            keywords        类型  string  列表页关键字
booklist_description    description     类型  string  列表页描述
youzhan                 内页互连集合    类型  []map[string]string  需for取值包含URL,Name

chapter.html阅读页模板变量:

chapterid               txt真实cid       类型  int  这个其实是数据库中的chapterid,也就是txt文件的id
lastrows                最新九章集合     类型  []map[string]interface{} for取值包含章节名称 chaptername,章节URL chapterurl,当前章节标记isCurrent
chaptername             当前章节名称     类型  string
articlename             小说名字         类型  string
articleid               当前小说真实ID   类型  int
nextchapterid           下一页txt真实cid 类型  int
BOOK_AD_INDEX_TOP       顶部广告         类型  string   后台设置阅读页广告可以直接取值{{ BOOK_AD_INDEX_TOP | safe }}
BOOK_AD_INDEX_BOTTOM    底部广告         类型  string   后台设置阅读页广告可以直接取值{{ BOOK_AD_INDEX_BOTTOM | safe }}
BOOK_AD_INDEX_SUSPENDED 悬浮广告         类型  string   后台设置阅读页广告可以直接取值{{ BOOK_AD_INDEX_SUSPENDED | safe }}
content                 当前章节内容     类型  string   模板需{{ content|safe }}取值
sorturl                 分类URL          类型  string
pagename                分页标记         类型  string   模板里<h2>{{ chaptername }}{{ pagename }}</h2>配合使用
preurl                  上一章/页URL     类型  string   上一章/上一页URL地址,无需拼接{{ preurl }}直接使用
nexturl                 下一章/页URL     类型  string   下一章/下一页URL地址,无需拼接{{ nexturl }}直接使用
nextpalyurl             下一个听书URL    类型  string   下一章/页 听书URL地址,用于提前缓存下一个音频
palyurl                 当前章听书URL    类型  string   <audio id="ttsAudio" preload="auto" src="{{ palyurl }}"></audio>可以直接播放本章内容
PreChaptername          上一章/页        类型  string   上一章/上一页/回首页。多语言会自动转换
NextChaptername         下一章/页        类型  string   下一章/下一页/回首页。多语言会自动转换
sortid                  小说分类ID       类型  int
cid                     小说CID          类型  int       这个其实是数据库中的chapterorder
sortname                分类名称         类型  string
jiandu                  当前章节简读     类型  string   当前章节内容截取三行
uptime                  最近更新时间     类型  string   年-月-日 时:分
author                  作者名字         类型  string
booklist_title          title            类型  string   章节页Title
booklist_key            keywords         类型  string   章节页关键字
booklist_description    description      类型  string   章节页描述
youzhan                 内页互连集合     类型  []map[string]string  需for取值包含URL,Name

author.html小说作者模板变量:

author                  作者名字        类型  string
articlerows             作者查询集合    类型  []map[string]string  for取值,内容是模块公共变量

bookcase.html收藏夹模板变量:

uid                     当前用户UID          类型  int
uname                   当前用户用户名       类型  string
_book_pagetitle         我的书架             类型  string    回首页。多语言会自动转换
num                     书架书籍数量         类型  int
articlerows             书架查询集合         类型  []map[string]interface{}  for 取值,标签如下
-> ArticleID            书架书籍id           类型  int
-> ArticleName          书籍书籍书名         类型  string
-> ListURL              收藏书籍列表URL      类型  string
-> LastChapter          收藏书籍最新章节名称 类型  string
-> LastUpdateURL        收藏书籍最新章节URL  类型  string
-> BookmarkID           收藏书籍章节CID      类型  int
-> BookmarkURL          收藏书籍章节URL      类型  string
-> Bookmark             收藏书籍章节名称     类型  string
-> LastUpdate           收藏书籍更新时间     类型  string   年-月-日

full.html完本小说模板变量:

BookSiteName            Title               类型  string
jumppage                翻页标签            类型  string  {{ jumppage |safe}}取值
articlerows             完本集合            类型  []map[string]string  for取值,内容是模块公共变量

sort.html小说分类模板变量:

BookSiteName            Title              类型  string
sortid                  分类ID             类型  int
sortpy                  分类拼音           类型  string
sortname                分类名称           类型  string
articlerows             分类书籍集合       类型  []map[string]string  for取值,内容是模块公共变量
articlerowsrk           入库集合           类型  []map[string]string  for取值,内容是模块公共变量
articlerowsdj           点击排行集合       类型  []map[string]string  for取值,内容是模块公共变量
jumppage                翻页标签           类型  string  {{ jumppage |safe}}取值

paihangbang.html排行榜模板变量:

site_title              Title              类型  string
jumppage                翻页标签           类型  string  {{ jumppage |safe}}取值
articlerows             排行集合           类型  []map[string]string  for取值,内容是模块公共变量
paihangsorttj           分类排行推荐集合   类型  []map[string]interface{} 需for取值包含sortid,sortname,sortpy,sorturl,sortbooks类型是[]map[string]string也需要嵌套for取值,内容是模块公共变量
allvisittj              热门小说集合       类型  []map[string]string  for取值,内容是模块公共变量
fulltj                  完本小说集合       类型  []map[string]string  for取值,内容是模块公共变量
goodnumtj               字数排行榜集合     类型  []map[string]string  for取值,内容是模块公共变量
allvotetj               点击排行推荐       类型  []map[string]string  for取值,内容是模块公共变量
orderBy                 推荐方法           类型  string   dayvisit/weekvisit/monthvisit/allvisit/dayvote等等,自己查询数据库
typename                推荐方式名称       类型  string

search.html搜索模板变量:

_book_pagetitle         Title               类型  string
search_key              搜索内容            类型  string
articlerows             搜索集合            类型  []map[string]string  for取值,内容是模块公共变量
search_num              搜索是否有内容      类型  string 1是有内容 ""是没有内容   

login.html登录模板变量:

_book_pagetitle         Title               类型  string
referer                 来路URL             类型  string
chname                  用户名              类型  string  post 提交
chpass                  密码                类型  string  post 提交
data                    提交方式            类型  string  post 提交 html会自动跳转不提交这个参数会返回nodata/nologin/yeslogin,可以在js里面处理

register.html注册模板变量:

_book_pagetitle         Title               类型  string
referer                 来路URL             类型  string
chname                  用户名              类型  string  post 提交
chpass                  密码                类型  string  post 提交
uemail                  邮箱                类型  string  post 提交
data                    提交方式            类型  string  post 提交 html会自动跳转不提交这个参数会返回bigname/bigpass/bigemail/emailerror/havename/haveemail/noregister/noregister/yesregister,可以在js里面处理

user.html用户信息模板变量:

_book_pagetitle         Title               类型  string
_book_uid               用户uid             类型  int
_book_uname             用户名              类型  string
_book_email             用户邮箱            类型  string
_book_avatar            用户等级            类型  int
_book_regdate           用户注册时间        类型  string 年-月-日 时:分

passeditw.html修改密码模板变量:

_book_pagetitle         Title               类型  string
_book_uid               用户uid             类型  int
_book_uname             用户名              类型  string
tips                    修改后返回信息      类型  string  修改密码成功或者失败返回的信息,多语言
isxg                    修改密码状态        类型  int      0->失败 1->成功

history.html临时书架模板变量:

页面实际可用变量以程序最终传入为准。