`
devroller2
  • 浏览: 34570 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何为roller增加新的主题?(重发,je编辑器太烂0!)

阅读更多

由于很忙,主要是在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来获取参数。

 

分享到:
评论
20 楼 devroller2 2010-12-30  
你这样是把about_us作为一个部件,不是一个完整的页面。参考
    <template action="permalink">
        <name>permalink</name>
        <description>permalink</description>
<link></link>
        <navbar>false</navbar>
        <hidden>true</hidden>
        <templateLanguage>velocity</templateLanguage>
        <contentType>text/html</contentType>
        <contentsFile>permalink.vm</contentsFile>
    </template>
19 楼 poster214 2010-12-30  
devroller2 写道
用google也不错

今天我尝试着加了一个about页面
方法是这样的:
新建一个About_us.vm
在theme.xml中注册:
<template action="custom">
        <name>about_us</name>
        <description>weblog about_us</description>
<link>about</link>
        <navbar>false</navbar>
        <hidden>false</hidden>
        <templateLanguage>velocity</templateLanguage>
        <contentType></contentType>
        <contentsFile>About_us.vm</contentsFile>
    </template>

<link>about</link>这一行必须有
然后重启tomcat,进入http://...roller/yourBlog/page/about
显示的就是about.vm的内容
18 楼 devroller2 2010-12-29  
用google也不错
17 楼 poster214 2010-12-29  
我在AJP/1.3和protocol="HTTP/1.1"两个地方都加上了,还是不行....
看来得用Google的搜索了
16 楼 devroller2 2010-12-27  
poster214 写道
devroller2 写道
呵呵,roller有专门的定时任务器,照着写一个任务器,让任务器来做不需要用人工填写。

可能我們說的不是同一個東西吧,我這邊的搜索無法使用中文,會出現亂碼,你那有沒有這個情況?

有啊,在tomcat里面的server.xml里改增加URIEncoding="UTF-8":
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"  URIEncoding="UTF-8" />

用那个端口就在那个端口上改。
15 楼 poster214 2010-12-27  
devroller2 写道
呵呵,roller有专门的定时任务器,照着写一个任务器,让任务器来做不需要用人工填写。

可能我們說的不是同一個東西吧,我這邊的搜索無法使用中文,會出現亂碼,你那有沒有這個情況?
14 楼 devroller2 2010-12-27  
呵呵,roller有专门的定时任务器,照着写一个任务器,让任务器来做不需要用人工填写。
13 楼 poster214 2010-12-27  
這樣啊,我也是在做個人網站,我們看來目標是一樣的,我現在的想法是在後臺增加一個欄位專門寫地址,人工填一個英文的,讓url有點意義
12 楼 devroller2 2010-12-27  
poster214 写道
devroller2 写道
呵呵,我理解错了。就像你说的那样,为什么不可以把title强制转换成utf8编码输出,当请求的时候在把title转成中文。对于这个想法可能需要对roller做一下修改。

請問你們公司是怎樣做的?應該已經做過修改吧

呵呵,我们公司没有用roller,是我自己在用roller做个网站,我还没没有做过这样的修改的。可以写过filter拦截/entry/xxx的请求
11 楼 poster214 2010-12-27  
devroller2 写道
呵呵,我理解错了。就像你说的那样,为什么不可以把title强制转换成utf8编码输出,当请求的时候在把title转成中文。对于这个想法可能需要对roller做一下修改。

請問你們公司是怎樣做的?應該已經做過修改吧
10 楼 devroller2 2010-12-25  
呵呵,我理解错了。就像你说的那样,为什么不可以把title强制转换成utf8编码输出,当请求的时候在把title转成中文。对于这个想法可能需要对roller做一下修改。
9 楼 poster214 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可以自己選擇規則
8 楼 devroller2 2010-12-25  
poster214 写道
你們公司的博客每篇文章的url你注意過他顯示的是什麽樣子的沒?如果是漢字的話在IE裡面就是一對亂碼,Firefox可以很好的顯示出漢字

我很早就留意了,这个跟浏览器有关,跟roller没有关系。不过你说的显示博客文章用title我还是不太理解,我研究了2个月了,没有看出是用title啊。至于如何让搜索引擎收录还真没有研究过。不过,roller有个功能:“个性制定”“维护”,同步您的roller 网站页面缓存,“同步缓存(写入硬盘)”,重建搜索引擎。我看了源代码也没有看出道道来。知道的请指点一下,谢谢。
7 楼 poster214 2010-12-25  
你們公司的博客每篇文章的url你注意過他顯示的是什麽樣子的沒?如果是漢字的話在IE裡面就是一對亂碼,Firefox可以很好的顯示出漢字
6 楼 poster214 2010-12-25  
devroller2 写道
poster214 写道
请教一个问题,
现在roller的url是通过title来生成,但是百度收录中文url有问题,有没有办法取消掉这个设置,改成别的生成方式?

不是很了解百度收录中文url的东西。roller的title只是后来程序用到吧,前台都是velocity的,后台的页面需要被百度收录吗?

roller每個文章都有一個permalik吧,這個是根據title生成的,這是一篇文章的唯一url,估計作者爲了考慮到seo設計成這樣的,但是百度技術比較爛,對中文的url收錄很差,起了反作用,要是可以自己定制url就行了,似乎WordPress有這方面的設置,這個我還沒找到,難道要自己重寫一遍那個方法...
5 楼 devroller2 2010-12-24  
poster214 写道
请教一个问题,
现在roller的url是通过title来生成,但是百度收录中文url有问题,有没有办法取消掉这个设置,改成别的生成方式?

不是很了解百度收录中文url的东西。roller的title只是后来程序用到吧,前台都是velocity的,后台的页面需要被百度收录吗?
4 楼 poster214 2010-12-23  
请教一个问题,
现在roller的url是通过title来生成,但是百度收录中文url有问题,有没有办法取消掉这个设置,改成别的生成方式?
3 楼 devroller2 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")
                    {
2 楼 poster214 2010-12-21  
我刚刚打算学roller,可以交流下吗
本人也在深圳
1 楼 devroller2 2010-12-15  
没有人用roller的吗

相关推荐

    3DMAX卷曲修改器Roller下载

    在3DMAX中,卷曲修改器是实现复杂动态效果的重要工具,而Roller正是这样一款专为卷曲效果设计的插件。这款插件能够帮助用户轻松创建出卷曲形状的模型,不仅限于静态的造型,还能生成逼真的卷曲和展开的动画效果。 ...

    roller

    标题中的"roller"很可能指的是Apache Roller,一个开源的博客服务器平台。这个平台允许用户创建、管理和发布多个博客,并且提供了丰富的API供开发者扩展其功能。接下来,我们将深入探讨与"roller"相关的技术知识点。...

    roller安装

    《roller安装指南——深入探索源码与工具应用》 在IT行业中,经常需要处理各种开源项目,以便定制、学习或优化。"roller"是一个颇受欢迎的开源博客引擎,它为开发者提供了一个强大的平台来创建、管理和发布个人或...

    Roller初体验

    6. **源码调试与开发**:对于开发者而言,可能会对博主如何使用IDE(如Eclipse或IntelliJ IDEA)进行源码调试,以及如何为Roller编写自定义插件或扩展感兴趣。这部分内容可以帮助开发者快速上手Roller的二次开发。 ...

    Apacheroller

    1. **创建数据库**: 为 Roller 创建一个新的数据库。 2. **检查 JDBC 驱动**: 确认已正确配置 JDBC 驱动。 3. **特殊考虑**: - **MySQL**: 确保表空间足够大,并且字符集设置正确。 - **Oracle**: 需要额外配置...

    开源Java博客Roller v5.0 for tomcat.zip

    Roller 是一个全功能的多用户博客平台,于2002年首发,采用Java语言开发,设计精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS ...

    roller5 for tomcat

    首先,Roller 5是一款开源的博客和内容管理系统,它提供了一整套完善的博客功能,包括文章撰写、评论管理、用户权限控制、主题定制等。而Tomcat作为Apache软件基金会的项目,是一个广泛使用的Java Servlet容器,支持...

    roller-user-guide.pdf

    ### Apache Roller Weblogger 使用指南知识点概述 #### 一、概览 **Apache Roller** 是一个开源的Java博客系统,提供了一套完整的博客解决方案。本文档《roller-user-guide.pdf》为用户提供了一个全面的操作指南,...

    Apache Roller

    Apache Roller是一个全功能,多用户和组博客服务器,适合大型和小型博客网站。它运行一个Java Web应用程序应该能够运行在任何Java EE服务器和关系数据库。目前,Apache Roller能很好的支持Tomcat和MySQL。 本人用...

    roller install、user、template guide

    在IT行业中,"roller"可能是指一个开源项目或者软件工具,但具体信息不足,我们只能根据常规的安装、用户和模板指南来理解这个主题。以下是对这些概念的详细解释: 一、roller install(roller安装指南) 在安装...

    roller-install-guide.pdf

    - **从 Roller 2.x 升级到 4.0**:为从旧版本升级到新版本的用户提供详细的指导。 - **备份**:强调了在升级前进行数据备份的重要性。 - **安装与启动**:指导用户如何安装和启动新的 Apache Roller 版本。 #### ...

    apache-roller-4.0.1

    - **插件系统**:Roller支持插件机制,允许开发者扩展其功能,如添加新的博客功能或集成第三方服务。 5. **安全与权限** - **身份验证与授权**:Roller内置了用户注册和登录功能,支持角色基

    Apache.Roller.4.0.Beginners.Guide.Dec.2009.pdf

    知识点:Apache Roller 4.0 Beginner's Guide 一、Apache Roller 4.0 简介 Apache Roller 是一个开源的博客平台,基于 Java 和 JavaServer Pages (JSP) 技术构建。它提供了一个全面的解决方案,用于创建、管理和...

    Roller Madness.zip

    本示例项目“Roller Madness.zip”提供了一个以过山车为主题的交互式体验,旨在帮助开发者学习和掌握Unity3D的基础知识和高级特性。 一、场景构建 “Roller Madness”项目中的主要场景可能包含一个精心设计的过山车...

    roller-part01

    apache-roller-srapaapache-roller-srcche-roller-srccapache-rolaapache-roller-srcpache-roller-srcler-srcapapache-roller-srcache-roller-srcapache-roller-src

    apache优秀Java开源项目源代码—— apache-roller!

    Apache Roller是一款功能强大的开源博客系统,它由Apache软件基金会维护,是Java开发者学习和研究的绝佳实例。通过深入分析Roller的源代码,我们可以了解到Java Web应用开发的多个关键知识点,包括但不限于以下方面...

Global site tag (gtag.js) - Google Analytics