Skip to main content

Serve filesystem content via repoze.bfg

Project description

================================
zcms : 基于文件系统的超轻CMS
================================
zcms是一个极简的基于文件系统CMS(类Jekyll),都是你熟悉的:

- 无需数据库, 每个页面是一个文本文件(rst/md)
- 扩展reStructuredText指令(.rst),轻松实现博客、导航、新闻等动态内容

示例站点:

- http://viewer.everydo.com
- http://developer.everydo.com
- http://everydo.com
- http://edodocs.com

运行自带的demo站点(8000端口访问):

docker run -d -p 8000:80 panjunyong/zcms

运行自己位于/home/panjy/sites的站点::

docker run -d -v /home/panjy/sites:/var/sites -p 8000:80 panjunyong/zcms

调试站点皮肤(即时刷新,但是运行速度较慢):

docker run -d -v /home/panjy/sites:/var/sites -p 8000:80 panjunyong/zcms debug

如有反馈,请微博联系: http://weibo.com/panjunyong

无阻力建站
============================
站点放在sites文件夹内容,每个站点包括内容(contents)和皮肤(themes)

设置栏目顺序和标题
-----------------------
每个文件夹下,可以放置一个 `_config.yaml` 的文件,在这里设置文件夹的属性:

title: 教程 # 标题
order: [index.rst, tour, blog, about.rst] # 显示顺序
exclude: [img] # 隐藏图片文件夹的显示


对于rst/md的页面文件, 可直接在文件头部指定这些信息:

---
title: 教程 # 标题
creator: 潘俊勇 # 创建人
created: 2010-12-12 9:12 # 创建时间,新闻根据这个时间排序
---

页面文件的属性,必须以三个短横开始和结束

设置左右列以及头部区域
--------------------------
对整个文件夹下的页面模版,可以定制左侧、右侧和头部的显示信息,分别加入: `_left.rst` , `_right.rst` , `_upper.rst`

如果具体某个页面,需要定制,也可以单独设置,通过命名来区分:

1. index.rst 页面的头部信息 `_upper_index.rst`
2. about.rst 页面的左侧信息 `_left_about.rst`

动态内容
-------------
可在reST中使用如下指令即可:

1. 最近新闻

.. news::
:size: 5
:path: blog

2. 博客页面

.. blogs::
:size: 20

3. 导航树

.. navtree::
:root_depth: 2

外观模版的设置
---------------------
在站点根文件夹下面的_config.yaml里面,定义了整个站点的皮肤

theme_base: http://localhost:6543/themes/bootstrap # 存放模版的基准位置,这里可能存放了多个模版
theme: default.html # 默认的模版

外观模版是通过一个网址来指定的,上面的完整外观模版地址是:

http://localhost:6543/themes/bootstrap/default.html

如果不想使用默认的外观模版,可文件夹或页面属性中,设置个性化的外观模版:

theme: home.html # 首页模版,可能没有左右列

这里会使用外观模版:

http://localhost:6543/themes/bootstrap/home.html

制作外观模版
-----------------
可看看themes文件夹里面的文件,其实就是一个python的String Template.

一个最基础的外观模版可以是:


<html>
<head>
<title>$title - $site_title</title>
<meta name="Description" content="$site_description"/>
</head>
<body>
<ul>$nav</ul>
<div>$upper</div>
<table>
<tr>
<td>$left</td>
<td>$content</td>
<td>$right</td>
</tr>
</table>
</body>
</html>

这个文件里面可以包括如下变量:

- `site_title` : 站点的标题
- `site_description` : 当前内容的描述信息
- `nav` : 站点的导航栏目
- `title` : 当前内容的标题
- `description` : 当前内容的描述信息
- `content` : 当前内容正文
- `left` : 左侧列显示的内容
- `right` : 右侧列显示的内容
- `upper` : 上方区域显示的内容
- `theme_base` : 外观模版的所在的位置

虚拟主机设置
-----------------
在站点根文件夹下面的_config.yaml里面,定义了整个站点的虚拟主机设置:

domain_name: domain.com, www.domain.com # 域名

这表示,可以通过上述 `domain_name` 直接访问站点,url路径上可省略 `site_name`

更新缓存
===================
默认系统会自动对theme进行缓存,最近更新等内容是每天刷新一次。

可调用如下地址,手动进行即时刷新:

1. 更新皮肤: `http://server.com/clear_theme_cache`
2. 更新内容: `http://server.com/clear_content_cache`

开发调试代码
===================
使用本地代码(/home/panjy/git/zcms):

docker run -t -i -v /home/panjy/git/zcms:/opt/zcms/ -p 8000:80 panjunyong/zcms shell
bin/buildout
bin/pserve development.ini

Jekyll参考
===================

- http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html
- http://yanping.me/cn/blog/2012/03/18/github-pages-step-by-step/
- http://www.soimort.org/posts/101/

TODO
================
1. 优化默认的bootstrap风格皮肤
2. 简化虚拟主机的配置:

- 合并nginx和zcms这2个docker
- 各个站点部署方面的配置转到站点的 `_config.py` 中
- 自动生成nginx的配置文件

3. production模式下,应该大量缓存加速,减少io
4. 提供webdav api
5. 提供RSS输出


CHANGES

v1.2 - 2014.2.27

- 默认生成html5风格的html
- 支持docker方式的运行
- 简化VHM的配置,只需要在nginx上设置即可,无需调整配置文件

v1.0 - 2013.1.1

- 借鉴Jekyll,简化配置
- 大量简化从前的历史代码

v0.5 - 2012.12.30

- 去除wsgi Theme Filter, 简化
- 去除对themes文件夹的依赖,在站点metadata.json中可设置theme_url里面是皮肤的url地址,默认是自带的bootstrap风格皮肤
- 支持markdown

v0.1 - 2012.12.14

- 调整.json的位置,去除多余的文件夹
- 调整.json的内容,简化

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zcms-0.6.4.tar.gz (18.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page