MWeb 1.4 新功能介绍二:静态博客功能增强
MWeb 比较有特色的是一键生成静态博客功能,然后从 MWeb 最开始规划要做静态博客生成功能时,我就希望 MWeb 的静态博客生成功能在易用的同时,还要有很强大的扩展性。
比如说能自己增加网站公告,这个公告可以随时更换和取消。再比如说能自己为网站增加广告,而且可以增加多个广告位,google 的或者自定的广告都可以。这些之前都可以通过修改模板解决,但是有些是解决不了的:比如说把文章列表做成像 theverge http://www.theverge.com/reviews 的页的效果,就是列表中有设定的特色图片,有自定的简介,有评分,有价格时会显示价格等。比如说设定 SEO 的一些信息,设定分享到 Facebook 的一些信息。又比如说播客类的网站,要生成 Apple 规格的 RSS。
1.4 版的静态博客增强就是解决这些问题的。我一直考虑如何介绍这个功能,然后因为之前比特新声的主播之一 郝海龙 随意问了一下是否支持生成 Podcast 的 RSS。所以我想来想去,还是介绍用 MWeb 自带的 greyshade 网站模板做一个可以写博客又可以做为播客的新模板好了。
这个新模板的 Demo 网址是:http://coderforart.com/bitvoice/,Podcast RSS 为:http://coderforart.com/bitvoice/podcast-atom.xml。 一般情况下只要到这个网址体验一下,并看一下《音乐《梁祝》及 MWeb 静态博客功能增强的使用体验》这篇文章即可,因为下边的内容是跟自定模板有关。
下面正式开始做这个新模板。
首先在 MWeb 中新增一个静态网站分类,名为比特新声。然后设置如下,我是想放在我的博客中做 Demo,所以网址为:http://coderforart.com/bitvoice/。评论和分类代码、GA 代码都跟 coderforart 一样。

点上图中最下边的 Advanced Settings 后会出来如下图的网站扩展设置。

一开始打开时,Site Setting 这个 Tab 是没有内容的,可以看到 MWeb 支持整个网站的字段扩展(Site Extension)和网站所属文档的字段扩展(Document Extension)。
如下图,我在 Site Extension 这个 Tab 根据 Apple Podcast RSS 自定了一些必要字段,然后切到 Site Setting 这个 Tab,就会看到按照自定的字段生成可以输入的文本框了。

如右边,我可以填入相关文案。然后如果有图片怎么办,简单的办法是打开比特新声分类内的一个文档,直接把图拖入编辑器中,从生成的 Markdown 语法中取其地址贴上就好。如上图右边的图中的 Fb Image 字段。
然后我也在 Document Extension 这个 Tab 也根据 Apple Podcast RSS 自定了一些必要字段,这些字段可以点软件右上角的设置按钮,并点第三个 Tab Extension 就能看到了按自定字段生成的可输入文本框了,如图。

这样的话,如果想新增新一期播客,就点开第三个 Extension Tab,填入一些这一期播客的相关信息即可。如果新增的文档只是普通文章,则可以不用管扩展的信息。
下图是关于 Base Tab 和 Media Tab 的情况。

Media Tab 会列出所有你引入到当前文档中的图片、附件等等。比如要增加一张某期的播客的封面图片,文章里用不到,但是 Extension Tab 里要填入,就可以先把图拖入编辑器内,然后删除,再点 Media Tab 就会看到所拖入的图了,点 Copy Path 然后贴到 Extension Tab 的某字段即可。
字段设置好了,下面要开始修改 greyshade 网站模板了。目前看来只需要为属于播客的文章增加一个播放器,让它可以播放 MP3。然后修改 RSS,让 RSS 按 Apple 播客的格式即可。
以下为修改模板的内容,建议先参考 自定网站或博客主题简单说明。
首先增加播放器,我随便找了一下,看到 http://www.schillmania.com/projects/soundmanager2/demo/bar-ui/ 这个播放器不错,所以就决定用这个了,首先复制 greyshade 模板,并重命名为:podcast-greyshade。把 soundmanager 的相关代码放到 asset/soundmanager 中。然后打开 header.html 文档,在上面增加 soundmanager2 播放器的代码,大概是这样:
<link href="asset/soundmanager/css/bar-ui.css" media="screen, projection" rel="stylesheet" type="text/css">
<script type="text/javascript" src="asset/soundmanager/soundmanager2-jsmin.js"></script>
<script type="text/javascript" src="asset/soundmanager/bar-ui.js"></script>
<script>
soundManager.setup({
preferFlash: false,
onready: function() {
}
});
</script>
因为我需要在文章列表和单篇文章都支持播放功能,所以为 category.html 和 post.html 增加播放支持。代码大概如下(我只选关键代码)。
{% if post.ext_enclosureURL.length %}
<div class="sm2-bar-ui compact full-width">
....
<div class="sm2-inline-duration">{{ post.ext_itunes_duration }}</div>
<div class="sm2-playlist-wrapper">
<ul class="sm2-playlist-bd">
<li><a href="{{ post.ext_enclosureURL }}"><b>{{ post.ext_itunes_author }}</b> - {{ post.ext_title }}</a></li>
</ul>
</div>
...
</div>
{% /if %}
下面解释一下上面这段代码。
MWeb 中 Site Setting 设置的所有值会传到所有模板页,比如说要输出上面设置的 SEO Des 的值,用 {{ext_seo_des}} 即可。可以看到,规则是: ext_ + variable Name 。然后用软件右上角第一个按钮设置的文档中的 Extension 的值,会传到所有 文档对象变量 中,如上面代码,文档对象变量为 post,访问规则为 post.ext_ + variable Name。 然后请注意 {% if post.ext_enclosureURL.length %} {% /if %} 这种写法,这是为了判断这文章是否有设置了播客的相关值,有设置,说明这文章为播客文章。
下面介绍一下如何增加输出 Apple 支持的播客的 RSS 格式。
MWeb 一般情况下只生成全站文章的 RSS,名字为 atom.xml。然后 MWeb 为了满足扩展需要,增加了另外的规则,为:如果网站模板中存在有 分类的 HTML File Name 的值 + -atom.xml 这样的模板文档,则会为这个分类用 分类的 HTML File Name 的值 + -atom.xml 这个模板生成名为 分类的 HTML File Name 的值 + -atom.xml 的 RSS。
如上面,我增加了两个子分类:文章和播客。然后我设置了播客子分类的 HTML File Name 为 podcast。然后我在网站模板中也增加了名为 podcast-atom.xml 的模板,下面是这个模板的内容。
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
<title><![CDATA[{{ siteName }}]]></title>
<link>{{ siteURL }}</link>
<language>zh-CN</language>
{% if ext_copyright.length %}
<copyright>{{ ext_copyright }}</copyright>
{% /if %}
{% if ext_itunes_subtitle.length %}
<itunes:subtitle>{{ ext_itunes_subtitle }}</itunes:subtitle>
{% /if %}
{% if ext_itunes_author.length %}
<itunes:author>{{ ext_itunes_author }}</itunes:author>
{% /if %}
{% if ext_itunes_summary.length %}
<itunes:summary>{{ ext_itunes_summary }}</itunes:summary>
{% /if %}
{% if ext_itunes_description.length %}
<description> {{ ext_itunes_description }} </description>
{% /if %}
<itunes:owner>
{% if ext_itunes_author.length %}<itunes:name>{{ ext_itunes_author }}</itunes:name>{% /if %}
{% if ext_itunes_email.length %}<itunes:email>{{ ext_itunes_email }}</itunes:email>{% /if %}
</itunes:owner>
{% if ext_itunes_image.length %}
<itunes:image href="{{ ext_itunes_image }}" />
{% /if %}
{% if ext_itunes_category.length %}
<itunes:category text="{{ ext_itunes_category }}"/>
{% /if %}
{% for p in posts %}
{% if p.ext_enclosureURL.length %}
<item>
<title>{{ p.ext_title }}</title>
<itunes:author> {{ p.ext_itunes_author }}</itunes:author>
<itunes:subtitle> {{ p.ext_itunes_subtitle }} </itunes:subtitle>
<itunes:summary><![CDATA[
{% if p.ext_itunes_summary.length %}
{{ p.ext_itunes_summary }}
{% else %}
{{ p.content }}
{% /if %} ]]>
</itunes:summary>
<itunes:image href="{{ p.ext_itunes_image }}" />
<enclosure url="{{ p.ext_enclosureURL }}" length="{{ p.ext_enclosure_length }}" type="{{ p.ext_enclosure_type }}" />
<guid>{{ p.ext_guid }}</guid>
<pubDate>{{ p.ext_pubDate }}</pubDate>
<itunes:duration>{{ p.ext_itunes_duration }}</itunes:duration>
</item>
{% /if %}
{% /for %}
</channel>
</rss>
至此,podcast-greyshade 这个新模板已经完成了,增加了播放器支持和把所有播客文章生成为 Apple 播客格式的 RSS。
podcast-greyshade 这个网站模板已传到 github:https://github.com/oulvhai/MWeb-Themes/tree/master/podcast-greyshade
使用 podcast-greyshade 这个网站模板的 Demo 的网址:http://coderforart.com/bitvoice/。我只增加了两篇播客文章。然后 Apple 规格的 RSS 输出网址为:http://coderforart.com/bitvoice/podcast-atom.xml
MWeb 1.4 新功能介绍二:静态博客功能增强的更多相关文章
- MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览
之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- Hexo搭建静态博客踩坑日记(二)
前言 Hexo搭建静态博客踩坑日记(一), 我们说到利用Hexo快速搭建静态博客. 这节我们就来说一下主题的问题与主题的基本修改操作. 起步 chrome github hexo git node.j ...
- 【一】Ubuntu14.04+Jekyll+Github Pages搭建静态博客
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- Github、Jekyll 搭建及优化静态博客方法指南
尝试自己写 Blog 的人,一般会经历三个阶段. 第一阶段,刚接触 Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉 ...
- 开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程
目录 基本原理 方法1 - 本机Windows下建站 (力荐) 下载安装node.js 用管理员权限打开命令行,安装hexo-cli和hexo 下载安装git 初始化hexo 使用hexo gener ...
- 如何利用腾讯云COS为静态博客添加动态相册
前言 本文首发于个人网站Jianger's Blog,欢迎访问订阅.个人博客小站刚建站不久,想着除了主题里的功能外再添加上相册模块,于是半搜索半摸索把相册模块搞出来了,最后采用了利用腾讯云对象存储作图 ...
- 使用vuepress搭建GitHub pages静态博客页面
vuepress官网 vuepress是尤大开发来写文档的静态页面.可以用Markdown 语法,并且也可以使用vue模块化的方式开发页面. vuepress-theme-reco 是另外的开发者开发 ...
- 在hexo静态博客中利用d3-cloud来展现标签云
效果: http://lucyhao.com/tags/ hexo自带的tag cloud的标签展现不太美观,想能够展现出“云”效果的标签.在网上找到了d3-cloud这个项目,github地址:ht ...
随机推荐
- 欲望 VS 抗拒
总有很多事情在心里酝酿许久,但真要做起来却又很抗拒. 是在害怕,还是在逃避? 从心,快乐,都是这么难.
- tangram2.6(XE2)\framework框架加载包异常 调试的地方
添加以下的项目到项目组中, \tangram2.6(XE2)\framework\Core\Tangram_Core.dpk 调试此包的SysModuleMgr.pas的函数,本人还没有测试 func ...
- 【转】ArrayList循环遍历并删除元素的常见陷阱
转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...
- [转]netty对http协议解析原理
本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...
- Compass的误解与新发现
最后个人感觉 Compass是 css世界的.NET 很久以前看到 Compass 误以为是css编译器,因为总是在看到如何安装Scss的文章里面看到的 知道最近不小心进入 Compass官网溜达,才 ...
- PHP mysql基础操作
mysql连接操作 //建立连接$con = mysql_connect('localhost', 'root', '123456');//判断是否连接成功if($con){ die('连接失败!'. ...
- HDU 4686 Arc of Dream(快速幂矩阵)
题目链接 再水一发,构造啊,初始化啊...wa很多次啊.. #include <cstring> #include <cstdio> #include <string&g ...
- /usr文件系统
/usr文件系统 /usr 文件系统经常很大,因为所有程序安装在这里. /usr 里的所有文件一般来自Linux distribution:本地安装的程序和其他东西在/usr/local 下.这样可 ...
- CSV格式数据如何导入SqlServer?
一.使用微软数据库IDE管理软件:Microsoft SQL Server Management Studio 1.标准的CSV文件格式如下: 2.建数据表 3.在需要导入的数据库右键点击“任务”,选 ...
- Eclipse中的文件导航插件StartExplorer
在Eclipse里面,想找到文件的位置是件麻烦的事,需要借助插件,我用的是StartExplorer插件. StartExplorer官方地址:http://startexplorer.sourcef ...