模板/语言编辑代号的命名规则

在JTBC中,每一个模板都是可以通过后台进行修改的,因此网站上的每一段HTML代码都可以在后台修改到,但因为代码量非常的大,因此在第一时间找到自己需要修改的模板代码是非常重要的,而此只需要判定其模板代号就可以了。

代号举例:

aboutus.tpl.module

aboutus是指aboutus文件夹,也叫aboutus模块,tpl是模板的意思,语言就是lng了,很容易理解,module的含义由前面的tpl决定,假如是tpl那么就是位于aboutus/common/template/module.jtbc这个文件,假如是lng, 那么就是aboutus/common/language/module.jtbc这个文件。

当模板不属于任何模块时,就是全局的或者是首页的模板,这时候就是类似这样的代号。

.tpl.module

其对应的是common/template/module.jtbc这个文件。

模板的存储具有一定的规律,比如前台模板一般都是*.*.module,文章就是article.tpl.module,产品就是product.tpl.module等等。

附:JTBC 常用语言代号

关于我们 about
aboutus.lng.module
aboutus.lng.data

文章 article
article.lng.module
article.lng.manage

下载 download
download.lng.config
download.lng.manage
download.lng.module
download.lng.sel_accredit
download.lng.sel_lng
download.lng.sel_runco
download.lng.sel_star

插件 expansion
expansion.lng.manage

论坛 forum
forum.lng.blacklist
forum.lng.config
forum.lng.manage
forum.lng.manage_dispose
forum.lng.manage_forum
forum.lng.module
forum.lng.sel_b
forum.lng.sel_color
forum.lng.sel_dispose
forum.lng.sel_dispose_update
forum.lng.sel_hidden
forum.lng.sel_mode
forum.lng.sel_mood
forum.lng.sel_topicmode
forum.lng.sel_topictype
forum.lng.sel_type
forum.lng.sel_vote_day
forum.lng.sel_vote_type
forum.lng.topic
forum.lng.vote

会员 passport
passport.lng.api
passport.lng.config
passport.lng.manage
passport.lng.member
passport.lng.member_menu
passport.lng.module
passport.lng.sel_group
passport.lng.validator

搜索 search
search.lng.module
search.lng.sel_field

商品 shop
shop.lng.config
shop.lng.manage
shop.lng.module

订单 shopcart
shopcart.lng.config
shopcart.lng.manage
shopcart.lng.member
shopcart.lng.module
shopcart.lng.sel_payment
shopcart.lng.sel_paystate
shopcart.lng.sel_state
shopcart.lng.sel_traffic
shopcart.lng.sel_traffic_fare

留言 support
support.lng.manage

投票 vote
support/vote.lng.manage
support/vote.lng.module
support/vote.lng.sel_vote_tpl
support/vote.lng.sel_vote_type

在线支付 payment
support/payment.lng.manage
support/payment.lng.module

 jtbc是严格的将程序与语言以及模板相分离开来了,整体非常整齐和简洁,模版只需要简单的文件夹复制就可以克隆了。学习JTBC的人必看。

其构架规律很好掌握(以下以php现有模块为列)

JTBC(CMS)

┣index.php

┃    ┏common(系统配置)

┃    ┣editor(编辑器)

┣common┣images(系统所用图标/整站css/站点js等

┃    ┣incfiles(系统主函数/数据库配置)

┃    ┣language(系统公用文字词汇)

┃    ┗template(首页模板/调用模板/功能性模板)

┃   ┏cache(缓存管理)

┃   ┣common(admin模块函数/模板/语言)

┣admin ┣configure(配制管理模块)

┃   ┣files(文件管理)

┃   ┣module(模块管理/添加删除模块)

┃   ┣sort(类别管理)

┃   ┣sql(sql管理)

┃   ┣upload(上传管理)

┃   ┣user(用户管理)

┃   ┣userlog(用户登陆纪录)

┃   ┗xml(xml文件管理/即模板/语言等xml文件的在线编辑)

┃    ┏common(会员管理函数/模板/语言)

┣passport┣friend(站内会员好友)

┃    ┗message(站内短信)

┃        

┃    ┏common(公共管理/模板/语言)

┃    ┣gbook(留言管理)

┣support ┣linkimages(图片连接管理)

┃    ┣linktext(文字连接管理)

┃    ┣review(评论管理)

┃    ┗vote(投票管理)

┃     ┏common(插件管理/模板/语言)

┃     ┣count(文章点击管理)

┣expansion ┣cthtm(html生成管理)

┃     ┗js(js插件管理)

┃        ┏config.jtbc(模块配置)

┣article━common ┣guide.jtbc(后台管理连接)

┃(文章模块)    ┃

┃        ┃   ┏config.inc.php(模块变量)

┃        ┣infiles┣manage_config.inc.php(后台管理过程)

┃        ┃(模块独┣module.inc.php(前台叶面函数)

┃        ┃享函数)┗module_config.inc.php(前台调用过程)

┃        ┃

┃        ┣language┏manage.jtbc(后台语言)

┃        ┃模块语言 ┗module.jtbc(前台语言)

┃        ┃

┃        ┗template┏manage.jtbc(后台模板)

┃         模块模板 ┗module.jtbc(前台模板)

┣about━特色模块/单页面模块.数据以xml形式存在language下data.jtbc

┃    默认在后台无管理连接,可自行修改添加.该模块不支持html.

┣download(下载模块)      以下6个模块结构与文章模块相似

┣abouts(单页面模块)即无分类的文章模块

┣forum(论坛模块)

┣shop(产品模块)

┣shopcart(商品模块/订单)  

┗search(搜索模块)

各模块中的common均为文章模块式的文件功能分布

文章/下载/商品/产品 均可轻松克垄

一、JTBC概述

JTBC网站内容管理系统是一套可对现有模块进行扩充与克隆的网站系统核心,采用UTF-8编码,采取 语言-代码-程序两两分离的技术模式,全面使用了模板包与语言包结构,为用户的修改提供方便,网站内容的每一个角落都可以在后台予以管理,是一套非常适合用做系统建站或者进行二次开发的程序核心。官网:http://www.jtbc.net.cn/

后台界面:

JTBC

二、JTBC优点

  1. 多语言性。JTBC具备了整体的语言包特性,采用XML的格式存储,并且都存储在同一结构状态的目录下,因此使用JTBC可以非常方便的改变语言或者制作出多语言的网站。
  2. 脱程序性。JTBC中的程序与HTML代码完成了全部脱离,因此基于这点就可以非常容易的修改网站的布局与风格。
  3. 免费、开源。最重要的,我觉得是它的开源特性和整齐的代码结构,每一个模块的结构都是一样的,非常方便了解整个网站的代码函数,方便开发人员进行修改。
  4. 功能定制,后台简洁。不像其他的CMS,后台乱七八糟的,生怕知道它的功能少了。JTBC功能齐全,而且后台可以方便的修改和定制。让管理者看着也清爽。
  5. 其他的比如插件呀,页面静态化,rss生成等等,JTBC都是支持的。
  6. 版本齐全。目前有JSP,ASP,.NET,PHP版本,貌似都是一个人写的,很强大。。
  7. .NET版本还是类似OS的界面,貌似作者没啥事干练技术,寂寞高人啊。。

三、JTBC缺点

  1. 非拿来主义性。因为它定制性太强了,所以JTBC不同于其他系统,不能拿来就用,比如链接,投票,调用等都需要自己在后台修改模板之后才能完成,因此它区别于整站系统。
  2. 官方没有合适的教程。官方自己的帮助文件太简单了,而且论坛相关教程也不多,很难上手。比如改版后的asp版本,论坛里面都是以前的版本,对于新手来说难呀。
  3. 数据调用太复杂,也是JTBC为了追求扩展性和定制性带来的缺点吧。

四、JTBC适用对象

  1. JTBC的适用人群。对网站的概念已经比较清楚并且比较熟悉HTML代码的人
  2. JTBC的适用范围。企业/公司/单位网站,政府网站,B2C网店,中小型论坛,个人网站,学校网站,地方

五、Hector的建议

  1. 建议那些一般建站的人不要用,这对于他们来说可能太麻烦了点,直接找个傻瓜式的更直接。
  2. 建议那些写代码的人可以研究一下,对以后他们写网站可能节省很多时间。

 

 

一、基本配置原则:

  • 1、需要引入Heritrix的系列jar包。
  • 2、需要引入相应的执行源文件。
  • 3、需要配置Heritrix的执行参数。

二、配置方法

  • 1.新建一个工程后,将工程目录下的src包删掉。将源代码包(即heritrix-1.14.3-src.zip,可到官网去下载)中的src和lib文件夹复制到工程目录中,则此时工程目录下有bin、src、lib三个文件夹还有.classpath和.project两种工程配置文件(工程建立时生成的)。
  • 2.将 项目名称/src/conf 文件夹中modules、profiles、selftest三个文件夹以及heritrix.properties、jndi.properties剪切到上一层文件夹,即 项目名称/src 中,将原来的conf文件夹删除掉。
  • 3.将 项目名称/src/java 文件夹中的com、org、st、meta-INF四个文件夹剪切到上一层文件夹中,即 项目名称/src 中,将原来的java文件夹删除掉。
  • 4.通过Build Path将 项目名称/lib 中的jar包引用到工程项目中。
  • 5.找到heritrix.properties,然后在heritrix.cmdline.admin = admin:admin中随便设置个密码,设置方式是 用户名:密码;将heritrix.version改成1.14.3
  • 6.在MyEclipse中,刷新你的工程,在src\org.archive.crawler中找到Heritrix.java类,点右键找到启动配置(Run As–>Open Run Dialog),在VM arguments添加-Dheritrix.development,在Program arguments添加–admin=admin:admin,然后选择Heritrix类启动程序。
  • 7.运行Heritrix类,如果没有错误提示,在浏览器中输入http://127.0.0.1:8080,出现用户名登陆界面则表示成功了。

三、相关说明

  • 1.如果你用的MyEclipse版本不同,可能Eclipse自带的JDK版本太低或者太高,在浏览器输入地址后会出现HTTP ERROR: 500 Bad+version+number+in+%2Eclass+file的提示。此时需要修改MyEclipse的jdk版本。
  • 2、如果有 Failed to start: SocketListener@127.0.0.1:8080这样的提示说明你的端口8080被占用,你可以到heritrix.properties中修改端口。
  • 3、如果有not find webapps floder错误提示,说明是配置路径有问题,或者没有将新建工程里面最初的一个src文件夹没有删掉。
  • 4、VM arguments参数(-Dheritrix.development)是用来区别开发模式和非开发模式的。
  • 5、如果有弹出来的Can not find the main class. Program will exit.说明是JDK版本和EClipse版本不兼容或者没有正确引入jdk。

 给数据库字段建立索引的方法和给文件建立索引的方法类似。(可见这篇文章:) [Lucene3.0学习笔记1(建立索引)]

只是需要将待索引的源换为从数据库里面读取的字段值就可以了。

代码中用到的数据库操作类在这里:[java通用数据库操作类]

请对照 [Lucene3.0学习笔记1(建立索引)]加以理解。

代码如下:

[CODE=java]
package com.hector.firstlucene;

import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;

/**********************
*
* @author Hector
* 建立数据库索引 lucene3.0+
*/

public class DataBaseIndexer{
public static void main(String[] args) throws IOException,SQLException{
String indexDir = “d:\\lucene\\index”;
DBConn conn = new DBConn();
conn.OpenConnection();
ResultSet rs = conn.ExecuteQuery(“select * from Article”);
// 为表字段建立索引
Directory dir = new SimpleFSDirectory(new File(indexDir));
IndexWriter indexWriter = new IndexWriter(dir,
new StandardAnalyzer(Version.LUCENE_30), true,
IndexWriter.MaxFieldLength.UNLIMITED);
while (rs.next()) {
System.out.println(rs.getString(“Article_Title”));
Document doc = new Document();
doc.add(new Field(“Article_Title”, rs.getString(“Article_Title”),Field.Store.YES, Field.Index.ANALYZED));
doc.add(new Field(“Article_Content”, rs.getString(“Article_Content”),Field.Store.YES, Field.Index.ANALYZED));
doc.add(new Field(“indexDate”,DateTools.dateToString(new Date(), DateTools.Resolution.DAY),Field.Store.YES,Field.Index.NOT_ANALYZED));
indexWriter.addDocument(doc);
}
System.out.println(“numDocs”+indexWriter.numDocs());
indexWriter.close();
}
}
[/CODE]

  当使用JDBC 通过 Microsoft SQL Server 2000/2005 Driver for JDBC 检索 ResultSet 对象可能会报如下错误:
Java.sql.SQLException: [Microsoft] [SQL Server 2000 JDBC Driver] ResultSet can not re-read row data for column 1

这是Microsoft数据库驱动包的一个Bug,这里有介绍:http://support.microsoft.com/kb/824106

包含 BLOB 列 (例如对于 文本、 ntext 或 图像 数据类型) 的 结果集 对象,将发生此错误。驱动程序不能返回 BLOB 列的顺序,因为它不缓存的大小限制由于 BLOB 数据类型的所有内容。结果集 集中的任何行的从左到右,可以阅读任何列,并应只一次读取每一列。如果您尝试将阅读顺序,列,或者从 结果集 中重新读取列您可能会收到"症状"部分描述的错误消息。

就是说我们在执行select * from table这样的语句是可能会有此提示消息。我们可以改为select 具体的列 from table这样的语句出错可能性就小了。

最好的方法是用非官方提供的驱动包,比如jTDS驱动包替代Microsoft的原有驱动包。具体链接语句如下:

private String driver= "net.sourceforge.jtds.jdbc.Driver";
private String url="jdbc:jtds:sqlserver://localhost:1433/kalman03";

官方和JTDS驱动下载:SQL2000Driverforjdbc(jtds支持Microsoft SQL Server (6.5, 7.0, 2000 and 2005) 和Sybase)

 

JTDS介绍:

 

  JTDS是一个开放源代码的100%纯Java的,用于JDBC 3.0驱动Microsoft SQL Server (6.5 ,7 ,2000和2005版本)和Sybase(10 ,11 ,12 ,15 版本)的驱动程序 。 JTDS是基于freetds的,并且是目前最快的生产准备JDBC驱动程序为SQL Server和Sybase 。 JTDS完全与JDBC 3.0兼容,支持只向前的,和可滚动/可更新的结果集(ResultSets)中并行(完全独立)语句,并且可实施所有databasemetadata和resultsetmetadata方法。注意低版本的JTDS(比如jtds-0.9.jar)对中文编码支持不是很好,建议采用较新的版本比如jtds-1.2.5.jar。

 在Java语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁,即Java语言通过JDBC技术访问数据库。

JDBC是一种“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接。

java链接各类不同数据库也因此需要相应的数据驱动包。具体的驱动包可以搜索一下进行下载。可能有官方的和非官方驱动。在使用下面的类时,请下载相应的驱动包,不然是连接不了数据库的。

先提供两个数据库驱动包:

MySQL:mysql-connector-java-3.1.11-bin.jar

SQL2000:SQL2000Driverforjdbc(微软官方提供的驱动有bug,附带了一个非官方的jar包。)

此类是网上搜集整理而来,使用不同数据库时请释放此数据库链接语句的注释,并改为你的数据库用户信息。

代码:DBConn.txt

 

可能要用的两个软件是MSSQLToMySQL和db2mysql

 

MSSQLToMySQL:

 

可以把MSSQL中的表结构复制到MYSQL中,用法很简单,安装后填入相应的MSSQL和MYSQL数据库密码即可。需要注意的是这个软件对中文支持不好,建议转换好之后查看和修改一下其中的乱码。

下载地址:MSSQLToMySQL

 

db2mysql:

 

DB2MYSQL是一个可以自动将ACCESS数据库文件转化为对应的SQL代码的软件。可广泛应用于ACCESS数据库转换为MYSQL或其他类型的SQL数据库的软件。使用方法非常简单,运行之后选择表之后,再选择列(如果一次插入很多列,可以用shift键进行多选),然后生成SQL语句。此软件有两个缺点:1、是生成的SQL文件格式不能选择,插入到数据库里面可能与数据库编码不一样而乱码。可以使用一个文本工具,如本notepad++转换格式(常见utf-8),然后再进行插入工作。2、如果是bit类型或者bool类型的数据生成的是false或者true,导致执行语句的时候报此字段空间不够,建议把数据的相应字段改成字符型,语句成功执行后用update语句更新此字段,并改回原来的字段值类型。
 

下载地址:DB2MYSQL

剩下的就很简单了,如果是access转MySQL,可以现在MySQL中建立相应数据库和表(简单可以手动建立,复杂的可以将access数据库转成MSSQL,然后运用MSSQLtoMYSQL这个工具),然后运用DB2mysql工具生成SQL文件,在可以执行的一些mysql管理工具中执行SQL语句即可。

如果是MSSQL转MYSQL,可以先用MSSQLtoMYSQL这个工具生成mysql的表结构,然后将MSSQL转为access之后,运行DB2mysql工具生成SQL文件,在可以执行的一些mysql管理工具中执行SQL语句即可。