演示站点: (也是作者博客)
JPress,一个wordpress的java代替版本,使用JFinal开发。支持类似wordpress的几乎所有功能,比如:模板,插件等。同时在模板上,JPress提出了“模板即模型”的概念,方便模板制作人灵活制作业务模型,移除了widget等繁杂功能,同时在模板和插件制作上比wordpress更加灵活简洁。
但是,JPress又不是wordpress的java版本,它天生融合了微信公众平台,整合了国内众多云平台、短信发送、邮件发送平台,独创的“模板即模型”概念是wordpress所不具备的,只有资深的wordpress玩家才能体会里面的微妙关系。同时后续会添加微信文章同步,QQ公众平台,今日头条,一点资讯等新媒体的文章同步功能,更加国产和本地化。
目前JPress托管在github和上,网址分别是:
可以通过以上网址查看JPress的更新情况。
目前下载可以进入以上两个网站直接通过浏览器下载ZIP压缩包,也可以通过以下git命令下载到本地。
微信配置
页面,填写正确的AppID和AppSecret,同时token随意填写,比如填写jpress
。
公众号设置
里找到服务器配置
。
URL(服务器地址):
Token(令牌):填写
jpress
,此处要保证和你JPress后台的token里填写的一模一样。
消息加解密方式:明文模式
开发一个全新的模板,主要有以下几个步骤:
1、 建立一个空的文件夹,用来存放模板文件,一般文件夹的名字用英文。
2、 在这个文件建立一个tpl_/test
的时候回调用这个文件渲染。
其中以tpl_开头的是模板的系统文件。
在任意地方显示谋篇文章内容。
文章列表标签,可以在任意页面使用此标签。此标签不带分页功能。
count="3"
表示内容列表的数量为3条内容。
- module :指定内容列表的模型
- style : 指定内容列表的样式。
- flag : 指定内容列表的flag标示。
- userId : 指定内容列表的用户,即哪个用户发布的内容。
- hasThumbnail :指定内容列表是否必须包含或不包含缩略图。
- tag : 指定哪个tag的内容列表。
- typeSlug :指定哪个分类下的内容列表。通过分类的slug来指定。
- typeId : 指定哪个分类下的内容列表。通过分类的id来指定。
- keyword : 指定哪个关键字的内容列表。
- orderby : 指定内容列表的排序方式。
- count : 指定内容列表的总数量。
用于读取某个分类信息。
网站菜单的标签。可以在任意页面使用,用于显示网站菜单导航。
这段代码表示当前页面是否属于该菜单下的内容,如果属于该菜单,则输出<span class="x-a-border"></span>
,不属于则不输出。常用来显示导航高亮。
该标签只能在内容详情页面使用,用来显示下一篇内容。
该标签只能在内容详情页面使用,用来显示上一篇内容。
以上是一个插件最简单的例子。 当该插件被安装,并启动的时候,该插件的onStart()
方法会被触发,当该插件被停止的时候,onStop()
会被触发,我们可以在onStart()
做插件的一些初始化操作,在onStop()
做些资源释放的操作。
可以通过@Hook(Hooks.PROCESS_CONTROLLER)注解,让我们的方法去注册到某个钩子
,当某逻辑执行的时候,会自动执行到该方法。
在二次开发中,不要修改JPress的任何代码,而是建立自己的一个maven module模块,通过pom依赖的方式把jpress相关代码导入到自己的module中。
这样,你的module就有了一个具体的web功能,你可以在里面添加自己的controller,model以及其他任何代码。此时,我们在运行我们的程序的时候,是运行我们自己新建的这个module,不再是jpress-web了,放到服务器运行的war包也是我们这个module,不再是jpress-web。
#####后台菜单的定义 JPress在初始化后台菜单的时候,会发送一个初始化菜单的消息,所以我们在操作(添加、修改、删除)后台菜单的时候,只需要编写一个监听器,监听后台菜单的初始化,并对其操作即可。
#####系统启动初始化 通过消息机制,JPress在启动的时候,会发送启动的消息,若在二次开发的过程中,需要在系统启动的时候做些自己业务逻辑相关的初始化工作,只需要如下代码即可:
关于jpress原始的数据库,jpress已经提供了 xxxQuery的类来操作了,如果不能满足你的需求,给我提交反馈即可。 若在jpress二次开发中新增了自己的表,可以通过jpress-model里的io.jpress.code.generator
来生成自己的代码。