html 这个 namespace 主要处理跟 渲染、HTML 相关的操作。
html
和h
(缩写) 都可以用来调用 HTML。
站内的 URL 应该全部经由 html.url(<the_url>)
进行处理,它的作用就是确保不论是绑定了域名的 bucket 还是未绑定的,其 URL 的相对路径都能得到正确地生成。
作用: 载入前端 css、js 资源用的,相当于一种方便的写法,不用区分是 css 还是 js 的不同代码片段语法。
注意: 相同的资源,相同的页面,最多只能载入一次,重复调用不会重复载入。
作用: 产生 A 标签元素(超级链接),并且根据当前页面的 URL,给予selected
等相应的 class name。
参数: title, url, dom_id=None, must_equal=False, class="selected active current"
参数说明:
True/False
,如果是 True,则当前URL 必须要完全匹配;反之则只要前向匹配则可。
url
一致对应,则 A 标签元素增加此 class name
作用: 可以产生一个链接元素,点击的时候,可以显示图片、在 iFrame 内浏览页面、播放视频。
参数: title, url, group_id=None, view_type='', height=None, width=None, thumbnail=None
参数说明:
.mp4
结尾,view_type 默认作为video
处理
image、iframe、 video、qrcode、erweima
,如果没有特别指定,默认作为iframe
处理
image
处理
作用: 是介于js_view
和 a
两个函数之间的,如果对应 href 比较适合 js_view 呈现,就会调用 js_view
, 反之则调用a
.
参数: title, href, a_title=None, class_name='', group_id='', target="", dom_id=None
作用: 国际化的多语言对应
示例:
// 获得某个 key 的翻译,如果无法匹配,返回 key 本身
+h.i18n('key')
// 设定一个 key 的翻译,未指定语言,则作为默认值
+h.i18n('key', 'I am Key')
// 设定一个 key 的翻译,并指定了语言
+h.i18n('key', '我是 Key', 'zh_cn')
作用: 将一个 data 数据,用 JSON 的格式进行呈现。
参数: data, title=None, fields_to_remove=None
参数说明:
作用: 调用 show
(模板)目录下的某个模板文件,一般是在 Markdown 文档中直接调用 (尚未支持))。
参数: template_path, **kwargs
具体用例请参考 此处
作用: 将一个Paginator对象转为HTML结构的源码。
参数: <paginator=None, style="simple", pre_label='« Prev', next_label='Next »'>
paginator: 如果为None,默认提取当前页面的分页对象
style: simple/min/auto 中一种,默认为 simple
pre_label: 上一页的文字描述 (可为空,有默认值),针对 mini/auto 两种样式有效
next_label: 下一页的文字描述 (可为空,有默认值),针对 mini/auto 两种样式有效
Page 1 of 10
的信息,接受 False/True
, 默认为 False
表现形式: 会计算头尾两页,如果页码数过多,中间会进行自动的省略。
...
,表示到最后页面,超过 max_count 后需要进行省略,其表示的字符串
表现形式: 根据当前页码,推算前几个页码,但不特定去计算所有页面的头、尾。
实际上就是以下 HTML 源代码,以实现移动端的基本兼容
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
<meta content="yes" name="apple-mobile-web-app-capable"/>
<meta content="black" name="apple-mobile-web-app-status-bar-style"/>
<meta content="telephone=no" name="format-detection"/>
<meta name="renderer" content="webkit">
headers = h.mobile_metas + h.seo()
必要的keywords
& description
的描述,主要是针对 SEO 或者其它内容被抓取时用到到的信息。
可接受参数keywords, description
, 比如 h.seo(seo_keywords, seo_description)
。
如果keywords 未传入,则会按照优先级尝试去匹配 post.metadata.keywords 与 site.configs.keywords ;如果 description 未传入,则也会依次去匹配 post.metadata.description 与 site.configs.description。
1,在页面中,仅能调用一次 seo 这个函数,后续调用,会直接返回空字符;
2,也要注意代码的上下次序,如果 post 这个变量没有调用之前已经调用了 h.seo,那么 post 本身就不会影响到 h.seo 这个函数的结果了;
3,h.headers
会调用一次 h.seo()
,也要注意模板代码本身的次序。
作用: 在页面右下角增加返回到头部
的元素
参数: <label='△'>
作用: 传入一个文章的 dict 类型的数据对象,自动生成一个 TOC 的代码片段
注意:
toc
的自动对应,但前提是已经设定好对应的 css 样式,一般页面的结构不要过于复杂
top
这个参数可以不用传入,如果全局有一个 toc_offset_top
为名的 Javascript 的函数 (本身需返回一个整数值),可以起到动态的作用。
作用: 可以对一个指定的class=sidebar
的元素,进行 sidebar 式的布局。
参数: side='left', sidebar_name='sidebar', width=300, default_status="hide"
如果当前模板处于调整的过程中,建议在页面中调用 +h.debug()
,可以在模板源码同步到服务器上后,实现页面的自动刷新。
注意: 这个功能在一些正式的生产环境中,为了整个系统的稳定性,是不支持的。