由于很忙,主要是在roller上做二次开发,一直没有时间总结一下心得。有很多内容想记录下来,但感觉太多,太乱,没有很好的组织,一直就放着。今天简单说一下吧,希望对别人有点帮助。
如果你用roller做个博客网站,那么原来的主题模板肯定是不够用的,而且给你的业务没有关系,用起来那是相当的别扭。那么,如何为roller增加新的主题呢?下面就step-by-step吧。
这里说的是增加roller的共享主题,其他的就不说了。
1、 在拷贝已有的主题上修改。
不知道别人是怎么用roller的,我是放到ide里开发的,自己做了一些目录结构上的变更。在roller源代码rar包里apache-roller-src-4.0.1\apps\weblogger\web\themes目录下,拷贝一个子目录重命名(保证部署后war里面有这个命名后的目录)。比如我们拷贝sotto目录,重名为abc
在abc目录先把文件名带有sotto的改为abc,文件内容也是。这样就可以增加一个共享主题啦。但跟原来的sotto是一样的,有什么意义呢?你需要做的工作还是很多。比如修改样式、换个图片等等,这些都是比较简单的工作。比较难一点的请看第二步。
2、 增加一个新的展现页面
你的博客业务本来跟roller就不一样,如果一样就不需要继续看了。那么有什么不同呢?比如你的博客需要加一个关于博主介绍的页面,就是加个aboutme的连接。这个页面内容、展现方式和其他页面都不一样,这时你需要一个单独的网页模板来展现。
在abc目录下拷贝permalink.vm重命名为aboutme.vm,其中permalink.vm是展现一篇日志的页面模板。你认为aboutme有什么内容和展现方式就自己修改aboutme.vm吧。
仅有模板是不够的,还要让roller理解你这个http://xxxx.com/zhangsan/aboutme/这个连接,它才能根据你的指示来展现aboutme.vm.。那么怎么做呢?
3、修改theme.xml文件
拷贝permalink节点修改
<template action="aboutme">
<name> aboutme </name>
<description> aboutme </description>
<link></link>
<navbar>false</navbar>
<hidden>true</hidden>
<templateLanguage>velocity</templateLanguage>
<contentType>text/html</contentType>
<contentsFile> aboutme.vm</contentsFile>
</template>
4、 修改java文件
修改那些文件我会列出来,但为什么修改就不做解释了。自己去看源代码,或者看我之前写的博客,o(∩_∩)o…。
A、修改ThemeTemplate接口,增加一个页面名字action常量。
public static final String ACTION_MEMBERS = "aboutme";
public static final String[] ACTIONS = {
ACTION_WEBLOG,
ACTION_PERMALINK,
ACTION_SEARCH,
ACTION_TAGSINDEX,
ACTION_ABOUTME
};
B、修改WeblogPageRequest类,增加一个分支判断让其不要抛出异常
} else if ("aboutme".equals(this.context)) {
/** 增加一个页面 */
} else {
throw new InvalidRequestException("context "+this.context+
"not supported, "+request.getRequestURL());
}
C、修改PageServlet类,增加一个判断,使得通过页面名字获取模板
} else if (pageRequest.getWeblogAnchor() != null) {
try {
page = weblog.getTheme().getTemplateByAction(ThemeTemplate.ACTION_PERMALINK);
} catch (Exception e) {
log.error("Error getting weblog page for action 'permalink'", e);
}
/** 增加一个页面 */
else if ("aboutme".equals(pageRequest.getContext())) {
try {
page = weblog.getTheme().getTemplateByAction(ThemeTemplate.ACTION_ABOUTME);
} catch (Exception e) {
log.error("Error getting weblog page for action 'permalink'", e);
}
}
D、修改WeblogPageCache类的generateKey方法,目的是使得roller能为新的页面模板生成唯一的key,以便缓存后能定位到。
/** 增加一个页面 */
if("aboutme".equals(pageRequest.getContext())) {
key.append("/aboutme/");
}
通过这个过程就可以创建一个共享主题模板了。
另外由于WeblogPageRequest的构造函数代码的原因,连接最好是http://xxxx.com/zhangsan/aboutme/xx否则将抛出异常,因为roller要通过url来获取参数。
分享到:
相关推荐
Roller 是一个全功能的多用户博客平台,于2002年首发,采用Java语言开发,设计精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS ...
NULL 博文链接:https://moving200x.iteye.com/blog/1749902
Apache Roller是一个全功能,多用户和组博客服务器,适合大型和小型博客网站。它运行一个Java Web应用程序应该能够运行在任何Java EE服务器和关系数据库。目前,Apache Roller能很好的支持Tomcat和MySQL。 本人用...
Safety evaluation of table liner for vertical roller mill by modified fatigue limit
apache-roller-srapaapache-roller-srcche-roller-srccapache-rolaapache-roller-srcpache-roller-srcler-srcapapache-roller-srcache-roller-srcapache-roller-src
apache-rollapachapache-roller-srce-roller-srcer-srcapache-rolleapacapache-roller-srche-roller-srcr-srcapache-roapache-roller-srcller-srcapache-roller-src
Roller 是一个全功能的多用户博客平台,于2002年首发,采用Java语言开发,设计精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS ...
apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src apache-roller-src
Roller4.0的另外一套cas简单解决方案. 最近在使用roller4.0和cas的单点登录集成.中间碰到了很多很多的问题.也许我碰到的问题都是属于自己的技术不成熟,能力不够引起的.但是我想应该还是有很多人和我是差不多的吧.我...
NULL 博文链接:https://jarorwar.iteye.com/blog/554942
apache roller安装指南电子书 翻译官方roller安装帮助文档
roller install guide roller user guide roller template guide
weblogging 设计比较精巧,是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。 最主要是其开源
install the roller 讲述怎样使用roller