http://blog.csdn.net/quqi99/article/details/1624223

——————————————————————————————————————————————————————————

                                                                       JetNuke笔记 ( by quqi99 )


作者:张华 发表于:2007-05-24  ( http://blog.csdn.net/quqi99 )

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。

JetNuke

示范网站
:

http://www.kuayue.com.cn/

网址:
http://gforge.osdn.net.cn/projects/jetnuke/

下载地址:
http://sourceforge.net/project/downloading.php?groupname=jetnuke&filename=Jetnuke1.2.zip&use_mirror=nchc

JetNuke

最大的优势就是集成了众多应用。
JetNuke
提供了:
Jforum
论坛、新闻发布和管理、内容分类、私人消息、链接管理、下载管理、调查、统计、站点搜索、
FAQ
、内容反馈、广告管理、管理控制台等等功能。用它来做一个普通网站的应用,应该差不多了。

JetNuke
在内容显示方面主要采用的技术是
Velocity
模版技术

有些遗憾的是,
JetNuke
目前不支持最新的
JAVA

内容管理规范
JSR-170

JetNuke
页面的架构被分成
Modules


Blocks


Modules

定义了页面的主要内容,而
Blocks

则定义了显示在页面左右列的块。
Blocks

在页面上的位置是可自定义的。
Blocks

可以通过控制台在左、右、上、下等方向进行位置调整。

下面说一下
JetNuke

的内容扩展机制。静态的
Blocks

很容易通过
web

界面或编辑配置文件来创建。动态的
Blocks

的创建可以通过继承一个
Block

接口创建一个
JAVA

后台程序并在
xml

配置文件里注册这个
Block

。这个过程对于开发者来说是非常简单的。

同样的,对于
Modules

也有类似的接口和配置来创建自定义模块。
Blocks


Modules

的显示都是基于
Jakarta Velocity Template Language

这使得自定义和扩展
JetNuke

变得很容易。(我看来一下
Velocity

的语法,不是很难,有点编程基础的都很容易看懂。)

如何开发
Modules


Blocks

请参考相关的文档
Module developing guide
.


Block Developing guide
.

从上面的分析可以知道,如果你想通过研究
JetNuke

来学习新技术,那你还不如选择
Magnolia

。如果你想利用
JetNuke

来开发网站,那倒是个不错的选择。不过,目前
JetNuke

还没有汉化,要用它需要你自己汉化。工作量不小亚。:(

一、汉化:

jetnuke

里默认的语言是英文。为了让用户在页面的下拉框里选择
"chinese"

就可以看到中文界面,我们还需要修改
D:Tomcat5newwebappsjetnukeWEB-INFclassesblocksLanguagesblock.vm

文件。在该文件里的第
16

行插入
<option value="zh_CN" #if($_locale.toString()=='zh') selected #end>Chinese</option>

。注意,
value="zh_CN"

,而不是
"zh"

。如果是
"zh"

,那么相对应的资源文件就应该写出
resources_zh.properties

另外,为了保证汉化完整,还需要在第
56

行插入
<a
href="${contextPath}/do?module=your_account&amp;op=chg_session_lang&
amp;amp;locale=zh"><img
src="${contextPath}/images/language/flag-chinese.png" border="0"
alt="Chinese" title="Chinese" hspace="3" vspace="3"></a>

经过多次失败后,终于找到了终于找到汉化
JetNuke
的办法。;)

汉化的关键:在
/WEB-INF/classes
目录下,有
blocks

modules
两个目录。这两个目录下都有多个子目录。以
blocks
下的
Admin
目录为例,
Admin
目录下有一个
resources.txt

languages
子目录。
resources.txt
文件里包含了英文的信息。为了汉化,你需要把
resources.txt
文件拷贝到
languages
子目录里,然后把
resources.txt
改名成
resources_zh_CN.txt
。最后,你就可以在
resources_zh_CN.txt
做汉化了。

我数了一下,大概有
48

resources_zh_CN.txt
文件需要翻译。工作量不小。:(

等我把
AtLeap
项目的安装文档翻译完了,我再开始做
JetNuke
的汉化吧。

二、安装

1

、创建一个空库(
mysql


: create database jetnuke default character set utf8;

2

、将
jetnuke1


2

的包丢到
tomcat


webapp

目录下。

3

、运行
http://localhost:8080/jetnuke

三、构建开发环境

1

、安装
Tomcat

插件。

2

、将
jetnuke

解压到
tomcat


webapp

下,然后从
eclipse

中直接将
jetnuke

工程导入进去就行。在导入的过程中出问题,是缺少
mail.jar

包。

3

,有问题:

java.sql.SQLException

: Base table or view not found message from server: "Table 'jetnuke.stories' doesn't exist"
,将相应的
sql
语句改正弄进去即可。

4
、管理端:
http://localhost:8080/jetnuke/do?/module=admin

四、预安装的模块。

1

、新闻

2

、管理。管理员以图形化方式来管理整个系统

3

、百科全书

4


FAQ

:对一个问答的集合

5

、反馈:回馈信息

6

、论坛:用
JFORUM

实现的。

7

、用户列表。显示所有注册的用户,从
JRORUM

直接过来的功能

8

、消消话

9

、查找,搜索。

10

、节

11

、统计:
IE


OS

,查看的用户信息

12

、故事集:对新闻的集中回顾。

13

、新闻提交。

14

、调查。

15


TOP10

。最活跃的
10

个元素。可以是文章,也可以是用户。

16

、主题。

17


web

连接

18

你的帐户。

五、预安装的版块。

1

、管理

2

、广告

3

、今日最火

4

、分类

5

、内容。显示了所有可用页的标题

6

、百科全书

7

、论坛

8


google

广告

9

、语言

10

、最新的
10

篇文章

11

,最新的
http

引用

12

、登陆

13

、模块

14

在线

15

回复

16

搜索

17

调查

18

下载
TOP10

19

连接
TOP10

20

站点点击数

21

不清待验内容

六、创建一个版块
(

版块相当于
ASOP

中的组件
)

6.1

创建一个版块


WEB-INFblocks

目录下。有
3

部分:

n

Config.xml

包括了版块的描述和它的描述。

n

Bloak.vm

被调用的
html

版块内容。

n


resources.txt

中指定版块的标题。

例:

Config.xml:

<?xml version="1.0"?>

<block-config>

<name>quqiBlock</name>

<description>

曲奇
</description>

<block-class>quqi.HelloWorldDyn</block-class>

</block-config>

package quqi;

import java.util.Random;

import javax.servlet.http.HttpServletRequest;

import org.apache.velocity.VelocityContext;

import org.jetnuke.common.IAdminInfo;

import org.jetnuke.common.IBlock;

import org.jetnuke.common.IBlockInfo;

import org.jetnuke.common.IUserInfo;

public class HelloWorldDyn implements IBlock {

public void serviceBlock(HttpServletRequest req, VelocityContext vc,

IBlockInfo blockInfo, IUserInfo userInfo, IAdminInfo adminInfo)

throws Exception {

vc.put("hello_world_key",new Integer(new Random().nextInt()));

}

}

七、创建一个模块(相应于一个用组件组装的应用)

模块是和特定的内容一起填充每一页的中间列的。每一个模块就是一些
”action:”

的集合。

例:

Config.xml

<?xml version="1.0"?>

<module-config>

<name>hello world module</name>

<description>hello world</description>

<defaction class="quqi.Act" page="helloWorldMod.vm"/>

<action name="act1" class="quqi.Act2" page="act2.vm"/>

<forward name="fwd" page="forward.vm"/>

</module-config>

上面可以看出,
defaction

(默认的)只能有一个,它是预定义的没有名字。若不需要
action,

可直接
faword.

package quqi;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.VelocityContext;

import org.jetnuke.common.ActionForward;

import org.jetnuke.common.IAction;

import org.jetnuke.common.IAdminInfo;

import org.jetnuke.common.IModuleInfo;

import org.jetnuke.common.IUserInfo;

public class Act implements IAction {

public ActionForward exec(HttpServletRequest request,

HttpServletResponse response, VelocityContext vc, IModuleInfo info,

String op, IUserInfo ui, IAdminInfo ai) throws Exception {

vc.put("time",new Object());

//op


config.xml

中所对应的这个
action

的名字。

//

通常
URL

是这样的:
do?module=download&op=viewdownload&cid=1

return new ActionForward(op,info);

}

}

helloWorldMod.vm
文件是:

hello world

now is

#medium_date($time)


velocity

<ul>

#foreach( $product in $allProducts )

<li>$product</li>

#end

</ul>

#include

脚本元素允许模板设计者引入一个本地文件:

#include( "one.txt" )

#parse

脚本元素允许模板设计者引入一个
VTL

的本地文件。
Velocity

会编译
VTL

然后

调用制定的模板。

#parse( "me.vm" )

#macro( row )

<tr><td>$nbsp;</td></tr>

#end

然后你就可以在一个模板文件里使用这个宏了。

#row()

通常情况下,
JetNuke

把系统中能用到的宏全部包含在一个宏库文件中

(WEB-INF/classes/VM_global_library.vm)

这样一来,这些宏对全部的模板都可用了。

九、样式

查看
WEB-INF/style/NukeNews/

文件夹
;

一共有
4

个文件
:

- template.vm

- sidebox.vm

- opentable.vm

- closetable.vm

另外,图片和
CSS

文件放在这个目录:
jetnukestyleNukeNews

JetNuke笔记 ( by quqi99 )的更多相关文章

  1. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  7. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  8. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. 常见的 HTTP 状态代码及原因

    代码 说明 备注 200 确定 IIS 7.0.IIS 7.5 和 IIS 8.0 成功处理了请求. 304 未修改 客户端浏览器请求已处于缓存中的文档,并且自从该文档被缓存后,未修改此文档.客户端浏 ...

  2. 不仅仅是浏览器 走近Chrome开发人员工具

    Chrome浏览器以其简单.快速.安全.稳定.扩展丰富等特性受到了不少人的喜爱,除了这些特性,Chrome浏览器还提供了非常简单方便的开发人员工具,可以为开发提高效率,加上Chrome浏览器对HTML ...

  3. TELNET终端类型选项

    转:http://www.cnpaf.net/Class/Telnet/200408/5.html 1. 命令名称及编号TERMINAL-TYPE242.命令含义IACWILLTERMINAL-TYP ...

  4. htc支持CSS3

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  5. OpenGL实现多层绘制(Layered Rendering) [转]

    http://blog.csdn.net/u010462297/article/details/50589991 引言 在某些情况下会需要用到多层绘制.FBO下有多个颜色挂接点(Color Attac ...

  6. Qt Creator 乱码问题

    当 把linux下的 ,QTproject文件移植到 Windows下时. 出现上图的 乱码现象.  为了,避免因为Windows下和Linux下编码不同,而产生的中文字符乱码的问题,需统一将代码中的 ...

  7. 在Docker中从头部署自己的Spark集群

    由于自己的电脑配置普普通通,在VM虚拟机中搭建的集群规模也就是6个节点左右,再多就会卡的不行 碰巧接触了Docker这种轻量级的容器虚拟化技术,理论上在普通PC机上搭建的集群规模可以达到很高(具体能有 ...

  8. tomcat进阶操作

      1.使用war包部署web站点 [root@tomcat webapps]# pwd /application/tomcat/webapps [root@tomcat webapps]# rz   ...

  9. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识

    前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP.MySQL[语法基础].项目github地址:https://github.com/66Web/php_book_stor ...

  10. 在FASTBuild中使用Caching

    上一篇:初识FASTBuild 在FASTBuild中使用缓存只需要注意三个环节: 一.设置编译选项 对于GCC\SNC\Clang编译器,没有特殊的要求 对于MSVC编译器,必须设置/Z7调试模式. ...