精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-14
最后修改:2010-12-14
由于很忙,主要是在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类,增加一个分支判断让其不要抛出异常
C、修改PageServlet类,增加一个判断,使得通过页面名字获取模板
D、修改WeblogPageCache类的generateKey方法,目的是使得roller能为新的页面模板生成唯一的key,以便缓存后能定位到。
通过这个过程就可以创建一个共享主题模板了。 另外由于WeblogPageRequest的构造函数代码的原因,连接最好是http://xxxx.com/zhangsan/aboutme/xx否则将抛出异常,因为roller要通过url来获取参数。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-15
没有人用roller的吗
|
|
返回顶楼 | |
发表时间:2010-12-21
我刚刚打算学roller,可以交流下吗
本人也在深圳 |
|
返回顶楼 | |
发表时间:2010-12-23
更正:
第4步增加一项 E、在WeblogRequestMapper类中增加判断: else if(context.equals("page") || context.equals("entry") || context.equals("date") || context.equals("category") || context.equals("tags") || context.equals("aboutme") { |
|
返回顶楼 | |
发表时间:2010-12-23
请教一个问题,
现在roller的url是通过title来生成,但是百度收录中文url有问题,有没有办法取消掉这个设置,改成别的生成方式? |
|
返回顶楼 | |
发表时间:2010-12-24
poster214 写道 请教一个问题,
现在roller的url是通过title来生成,但是百度收录中文url有问题,有没有办法取消掉这个设置,改成别的生成方式? 不是很了解百度收录中文url的东西。roller的title只是后来程序用到吧,前台都是velocity的,后台的页面需要被百度收录吗? |
|
返回顶楼 | |
发表时间:2010-12-25
devroller2 写道 poster214 写道 请教一个问题,
现在roller的url是通过title来生成,但是百度收录中文url有问题,有没有办法取消掉这个设置,改成别的生成方式? 不是很了解百度收录中文url的东西。roller的title只是后来程序用到吧,前台都是velocity的,后台的页面需要被百度收录吗? roller每個文章都有一個permalik吧,這個是根據title生成的,這是一篇文章的唯一url,估計作者爲了考慮到seo設計成這樣的,但是百度技術比較爛,對中文的url收錄很差,起了反作用,要是可以自己定制url就行了,似乎WordPress有這方面的設置,這個我還沒找到,難道要自己重寫一遍那個方法... |
|
返回顶楼 | |
发表时间:2010-12-25
你們公司的博客每篇文章的url你注意過他顯示的是什麽樣子的沒?如果是漢字的話在IE裡面就是一對亂碼,Firefox可以很好的顯示出漢字
|
|
返回顶楼 | |
发表时间:2010-12-25
poster214 写道 你們公司的博客每篇文章的url你注意過他顯示的是什麽樣子的沒?如果是漢字的話在IE裡面就是一對亂碼,Firefox可以很好的顯示出漢字
我很早就留意了,这个跟浏览器有关,跟roller没有关系。不过你说的显示博客文章用title我还是不太理解,我研究了2个月了,没有看出是用title啊。至于如何让搜索引擎收录还真没有研究过。不过,roller有个功能:“个性制定”“维护”,同步您的roller 网站页面缓存,“同步缓存(写入硬盘)”,重建搜索引擎。我看了源代码也没有看出道道来。知道的请指点一下,谢谢。 |
|
返回顶楼 | |
发表时间:2010-12-25
你用的是哪個版本的?我這測試的是4.0.1
Permalink – this read-only field is the permalink link to your weblog entry. It is set the first time that you save an entry, based on the title at the time you save – and it cannot be changed later. 如果你沒寫過博客估計就不知道我說的是什麽,例如我的博客文章標題是"闲侃圣诞树山寨sp2版_小绿树大生意" 那么這篇文章的url就是http://.../entry/闲侃圣诞树山寨sp2版_小绿树大生意 這個地址百度收錄不了,而Google則沒問題。如果你們的系統url不是按照這個規則生成,應該是改過規則了,或者或roller可以自己選擇規則 |
|
返回顶楼 | |