首页 » lib |
水云间jtbc入门教程
|
前言: 水云间jtbc入门教程由水云间打造,供jtbc入门用户使用。转载请保留《水云间jtbc入门教程》字样。欢迎转载。
水云间jtbc入门教程1:初识jtbc jtbc是什么? 简单的说是一套cms系统,能够方便的建设网站,但是对于没有任何基础的人来说,简直比登山还难。 所幸,现在已经有很多的帮助文档,也已经有数以万计的用户。可以说,正是由于其无与伦比的性能,才日益展现其强大的生命力和不可估量的发展潜力。 更多的介绍详见其官方网站:http://www.jtbc.net.cn。 这里着重从初学者的角度来说一下学习jtbc的终南捷径。 1、熟悉html、css等最基础的知识 2、从需求出发,亲手用jtbc建设一个网站。不懂的先照抄照搬。 3、善用搜索从官方论坛得到帮助 4、在使用过程中找一本asp、php、asp.net或jsp中的任一门入门教程,把其中一套看懂 5、学会了其中一套程序,你就能得心应手的快速从一个版本切换到另一个版本
水云间jtbc入门教程2:从安装到运行 一、安装程序 1、安装 首先从官方下载相关程序,这里以asp为例说明操作过程: jtbc cms asp 版本下载地址:http://www.jtbc.cn/download/cms/asp/1.0/ASP_JTBC_CMS.exe 下载到本地之后,可直接安装,也可以用压缩软件解压到指定目录。 2、配置 可将下载的程序文件目录更名为jtbc,右键该目录,点击属性,选择web共享选项卡,共享该文件夹 然后在电脑开始--运行选择框输入inetmgr,对iis进行配置。设定首页默认文档格式为index.asp。 3、运行 在浏览器地址栏输入:http://localhost/jtbc 如果出现首页,那么恭喜你,jtbc已经正常运行了 后台的登录地址:http://localhost/jtbc/admin 用户名和密码均默认为admin
水云间jtbc入门教程3:认识jtbc的架构 在用jtbc之前,首先要了解jtbc的架构。这样才能深刻理解jtbc的优势和潜力。 jtbc采用程序、语言以及模板两两分离的技术,其模块化的概念能够让你很方便的增添或删除模块,从而快速开发各类网站。 其构架规律如下所示:
JTBC(CMS) ┣index.asp ┃ ┃ ┏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已为您考虑周全。jtbc就像一个框架,当随着您的需求越来越多,您也能利用它得心应手进一步开发自己所需的功能。
水云间jtbc入门教程4:解读首页文件index.asp 曾几何时,对于首页这个代码index.asp如何能呈现首页的效果,感到迷惑不解,现在回过头来看一眼。 index.asp代码: <% Dim myhtml: myhtml = jtbc_cms_module response.write myhtml Call jtbc_cms_close() %> 可见程序核心其实只是一个,即:要通过jtbc_cms_module这个函数来显示页面。 jtbc_cms_module定义在哪里呢?要看包含文件: <!--#include file="common/incfiles/web.asp"--> <!--#include file="common/incfiles/config.asp"--> <!--#include file="common/incfiles/module.asp"--> <!--#include file="common/incfiles/module_config.asp"--> 原来是定义在站点下的common/incfiles/module_config.asp里。 主要的是这句:tmpstr = ireplace("module.index", "tpl") 原来它通过ireplace这个函数,调用显示的是模块目录下前台模板common/template/module.jtbc这个文件中的index节点的内容。 找到index节点,就找到前台显示的html代码。 这样就知道如果改首页是改动哪里了。 在jtbc后台,系统管理--模板管理--首页模板可以方便地对首页这个index节点的内容进行管理。
水云间jtbc入门教程5:JTBC模板中常用函数之itake JTBC模板中常用函数之itake 首页当中使用到了ireplace函数,使用形式:ireplace("module.index", "tpl"),且看官方对ireplace函数的解释: ireplace的参数与itake的参数形式相同,返回处理时有所不同的是:itake只负责获取节点内容,对节点内容不做任何处理,而ireplace函数则会在获取节点内容的同时,转换掉内容中所有的预设函数值。类似({$=a})这样的。 我们再来看itake官方的解释 JTBC模板中常用函数说明 1.itake函数 itake可谓是JTBC网站内容管理系统中的灵魂函数,它可以调用出位于网站系统相应目录下的任意一个.jtbc中的任意一个节点的值,通常被用做调用模板或者调用语言。 现在举例说明一下itake函数的用法,用法非常简单。 例:{$=itake('global.lng_config.time','lng')} 第一个参数 global.lng_config.time,这个是路径字,依据这段字符串可以找到我们需要读取到的唯一节点内容,global代表全局,意思就是不属于任何一个模块,是系统全局的,因此它对应的路径为根目录下的common文件夹内,第二个参数 lng 代表的是语言的意思,常见的还有 tpl (模板) sel (选项),lng与sel都位于common/language文件夹内 tpl 位于common/template文件夹内,后面的lng_config代表的是lng_config.jtbc这个文件,因此我们可以了解到这个函数调用的是根目录下的common/language/lng_config.jtbc这个文件中的某个节点,最后一个 time 则正是这个节点的节点名。因此,此函数返回的是 common/language/lng_config.jtbc这个文件中的time节点值。 当位于模块中的文件使用itake函数时,如果是调用自身下的.jtbc文件内容,那么这时的情况就不会出现global了。 例:{$=itake('config.time','lng')} 这个函数将返回模块目录下的common/language/config.jtbc文件中的time节点的内容。 当位于模块中的文件想读取其他模块中的.jtbc文件内容时,这时候的参数就会显得比较复杂,通常情况下不经常使用。 例:{$=itake('global.product:config.price','lng')} 这个函数将返回product模块目录下的common/language/config.jtbc文件中的price节点的内容,以此类推。
水云间jtbc入门教程6:模板与语言代号的命名规则 模板与语言代号的命名规则 在JTBC中,每一个模板都是可以通过后台进行修改的,因此网站上的每一段HTML代码都可以在后台修改到,但因为代码量非常的大,因此在第一时间找到自己需要修改的模板代码是非常重要的,而此只需要判定其模板代号就可以了。 代号举例: about.tpl.module about是指about文件夹,也叫about模块,tpl是模板的意思,语言就是lng了,很容易理解,module的含义由前面的tpl决定,假如是tpl那么就是位于about/common/template/module.jtbc这个文件,假如是lng, 那么就是about/common/language/module.jtbc这个文件。 当模板不属于任何模块时,就是全局的或者是首页的模板,这时候就是类似这样的代号。 .tpl.module 其对应的是common/template/module.jtbc这个文件。 模板的存储具有一定的规律,比如前台模板一般都是*.*.module,新闻就是news.tpl.module,下载就是down.tpl.module等等。 通过上一节对itake函数的解释已经本节对模板与语言代号的命名规则,两者互为印证,这样在修改时不仅可以在后台直接通过路径字来修改模板或语言,也可以直接找到对应的文件来修改。 知道要修改哪里,使用起来才会得心应手。
水云间jtbc入门教程7:认识.jtbc的文件格式 打开jtbc文件,发现不少文件都是.jtbc的文件格式。在jtbc出现以前,世界上是没有这个文件格式的:),明显这是自定义的文件格式。 在jtbc站点\\common\\incfiles\\conn.asp中有这样一个定义: Const xmltype = ".jtbc" 这个文件格式就是这么来的。 实际上jtbc 文件就是 .xml 文件。它所有的模板或语言都是以xml格式存在的。这正是能够将模板、语言、程序两两分离的一个基础。 xml文件是什么,请自行百度一下。
水云间jtbc入门教程8:使用UE轻松修改.jtbc文件 通常情况的修改都可以在后台管理系统中予以完成,但对于大规模的修改模板文件可能就不方便了,这时完全可以使用UltraEdit来轻松的编辑.jtbc的模板文件,当然这需要有肉眼识别HTML代码的能力跟配置您的UE。 配置方法: 打开UltraEdit安装路径找到WORDFILE.TXT 搜索XML找到如下并修改之 /L6"XML" Noquote HTML_LANG Block Comment On = <!-- Block Comment Off = --> File Extensions = JTBC XML /Delimiters = ~@$%^&*()+=|{};"'<> , /Function String = "<name>*</name>" 因为.jtbc本身为XML文件并且具备规则,所以经过配置的UE可以在函数列表内列出所有的代码节点并可以很方便的跳转到该节点,避免了很多因为寻找节点而浪费的时间。 注:笔者使用的ue版本为v13
水云间jtbc入门教程9:认识JTBC的模板 [p]利用jtbc做网站我们要利用现成的代码来达到自己的修改要求。根据自己的建站意图,先定好栏目,搭好框架,然后一步步来修改。 我们从首页开始修改。在修改首页之前,我们先来认识一下jtbc中的模板。 下面是官方解释: 在JTBC中,所有的HTML代码均存储在common/template/*.jtbc 中,系统自用或者公用的存储在根目录下的 common/template,模块自用的则存储在 模块目录/common/template,比如文章 article/common/template(此存储方式为了具有目录形特点的模块化以及避免删除模块后文件的冗余),模板的命名也有一定的约定方式,比如前台的模板一般都命名为 module.jtbc 因此无论是 文章、下载、还是商品、留言等等的版块涉及到前台的HTML的样式一般情况都存储在自身目录下的 common/template/module.jtbc 后台的模板则是 manage.jtbc,因后台模板基本不常改动,因此主要说明一下 module.jtbc 中的XML结构。 .jtbc格式的模板以xml格式的方式存储,因此可能使用记事本打开会显凌乱。在后台的模板管理中可以直接管理到这些模板,也可以使用一些文件编辑器来整理出节点以方便编辑。 在前台的模板中,约定节点名 index 的为首页模板,list 为列表页模板,detail 为详细页模板。一些特别的模块比如 passport forum 等则不同,这些节点名都是前台处理程序文件 module_config.asp/module_config.inc.php(也是约定的格式,每个模块基本都一样,存储在 common/incfiles) 中以节点名为关键字进行调用并且处理的,也就是可以自定义这些节点名以便在需要用到这些HTML代码的地方调用到。在这些模板的HTML代码中,经常会看到型如{$=A}以及{$A}这样的特殊代码。{$=A}这样的表示调用在程序中的某个函数并将返回的结果显示出来,{$A}这样的则仅仅表示1个标签,这个标签仅等待处理程序的替换而不执行任何操作(注意两者仅相差一个等于号)。有了如{$=A}这样的功能,模板也可以调用程序中的函数甚至通过函数再调用模板。 在前台的模板中,还有一些比较特殊的模板,比如用于调用显示的模板,用于格式化.jtbc选项文件的模板等等,这些文件都可以在根目录下的 common/template 中找到。 附录: <?xml version="1.0" encoding="utf-8"?> <xml mode="jtbc" author="jetiben"> <configure> <node>item</node> <field>name,tpl_default</field> <base>item_list</base> </configure> <!--自此以上为.jtbc文件的配置,程序依此读取下面的数据--> <item_list> <!--这里开始是一个节点--> <item> <name><![CDATA[index]]></name> <!--Name是预设的节点名称,程序等按此名称调用--> <tpl_default><![CDATA[<h1>Hello JTBC!</h1>]]></tpl_default> <!--Tpl_default是此节点的内容,程序等按此名称调用后会得到此结果--> </item> <!--这里结束是一个节点--> </item_list> </xml>[/p]
水云间jtbc入门教程10:修改首页 由前面得知:修改首页所在的位置在站点下的common\\template\\module.jtbc这个文件在后台也可以通过系统管理--模板管理--首页模板来进行修改 jtbc asp版本1.0 Final采用了常用的三行式布局,即头部、尾部和中间主体部分(姑且这么理解)。 打开首页模板,可见页面顶部有{$=web_head(nhead)},尾部有{$=web_foot(nfoot)},分别是调用头部和尾部。 每个模板页面都引用了同样的头部和尾部,当然这些都是可以自定义的。 我们先撇开头部和尾部,只看中间主体部分的代码。 中间主体部分是包含在middle这个层内的,为了便于控制层内的布局,在middle层内加了一个层middleContent,从层的命名大致也可以看出层的用途。在middleContent层内又套了两个层:middleSide和middleMain,可以看出主体部分采用了两列的布局。 div+css的布局方式,假定你已经了解。如果不了解先去学习有关html和css方面的基础知识。 我们抛开html代码,看看jtbc模板内那些貌似深奥的调用。 {$=itake("global.passport:api.userlogin", "lng")} {$=ireplace("global.passport:api.jslogin", "tpl")} {$=itake("global.lng_menu.article", "lng")} {$=itransfer('top', '1', 'topx=10;tnum=30;genre=article')} {$=itake("global.lng_menu.product", "lng")} {$=itransfer('top', '1', 'topx=10;tnum=30;genre=product')} {$=itake("global.lng_menu.download", "lng")} {$=itransfer('top', '1', 'topx=10;tnum=30;genre=download')} {$=itake("global.lng_menu.shop", "lng")} {$=itransfer('top', '1', 'topx=10;tnum=30;genre=shop')} <form method="get" name="search" action="search"> {$=itake("global.lng_config.search", "lng")}{$=itake("global.lng_config.keyword", "lng")} <input type="text" name="keyword" size="15" class="text" /> <select name="genre" class="select">{$=sel_genre("article,product,download,shop", "")}</select> <select name="field" class="select">{$=show_xmlinfo_select("global.search:sel_field.all","","select")}</select> <input type="submit" value="{$=itake('global.lng_config.search','lng')}" class="button" /> </form> 前面曾讲过itake的用法,知道它可以通过路径字来调用位于jtbc文档中任意位置的语言和模板。它的第二个参数lng代表调用的是语言。 我们也已经知道jtbc是语言、模板、程序是两两分离的,itake被官方称之为灵魂函数,其实就是扮演了很重要的角色。正是它实现了两两分离的用途。 形似{$=itake("global.lng_menu.article", "lng")}这样的调用,其实就是调用一个语言标题,比如:文章中心。相同性质的标题被封装在某一个语言文件内,那么就可以在后台很方便的进行管理。比如在后台语言管理或模板管理处直接输入.lng.lng_menu,即可以方便地对这些菜单进行管理。 上述的那些代码,其中{$=ireplace("global.passport:api.jslogin", "tpl")}是调用会员登录的表单,最下面是调用搜索的表单,我们均放在以后来讲解。剩下的可见均是itransfer这个函数的应用,比如{$=itransfer('top', '1', 'topx=10;tnum=30;genre=article')}。
水云间jtbc入门教程11:itransfer函数初认识 itransfer函数也是jtbc当中一个很重要的函数,通过它可以增加多种调用样式,使你的页面呈现千姿百态的变化。 先来看官方解释 itransfer函数是一个调用函数,它的作用是调用出数据并显示出来,举个比较简单的例子。 例:{$=itransfer('top', '1', 'topx=10;tnum=30;genre=article')} 第一个参数代表调用的top类型,就是最近更新的数据,第二个参数 1 代表使用的是 1 这个模板,所有的调用模板在后台管理中的 系统管理 - 模板管理 - 调用模板 中管理到,对应的文件是 根目录下的common/template/tpl_transfer.jtbc,理论上用户可以增加任意多个调用模板以满足不同调用样式的需求。第三个参数是一个比较复杂的参数,其中包括多个子参数分别使用“;”相对常用的参数有如下几个: topx 调用前X条记录 tnum 调用的标题最大字节数 genre 调用的模块名(在模块中调用如果省略则表示自己本身) rnum 调用显示效果的列数(如果调用模板不是表格,则此参数实效) class 调用的类别编号 通过该调用函数与自己创建的调用模板相互配合,基本上可以调用出大部分的调用效果。 关于itransfer函数的参数解释: itransfer(type, tpl, vars) 参数: type, 类别,有top(按id排序),hot(按点击量排序),new(按添加时间排序),good(按推荐),up(上一篇),down(下一篇) tpl, 模板名称 vars, 复合参数,可以用的有 genre 模块名称,topx 调用的记录数, rnum 列数, tnum 标题数, cls 模糊类别编号, class 精确类别编号, html 是否允许 HTML, bid 参照ID(在类别up,down时使用到), osql 附加的SQL语句, baseurl 基地址等 作用: 可以按照模板所设置好的显示样式显示出调用数据,因此其可变性最强的还是在调用模板这一块,创建各种的调用模板可以调用出各种各类的调用显示模式。 关于调用模板设置,则完全根据自己的需求来设定。只有在用的过程中,对于其认识才会逐步加深。
水云间jtbc入门教程12:修改网页头部和尾部 打开首页模板,可见页面顶部有{$=web_head(nhead)},尾部有{$=web_foot(nfoot)},分别是调用头部和尾部。 首先在站点目录下common\\incfiles\\web.asp中找到调用头部函数的定义:{$=web_head(nhead)} 核心的语句就一句: ireplace("global.tpl_public." & head_key, "tpl") 根据ireplace函数的路径字即可以知道,头部的定义是在tpl_public.jtbc这个模板文件下,路径为:站点目录(以下均成为jtbc)下的common\\template\\tpl_public.jtbc。 其中head_key代表调用这个文件的节点:这里是nhead,nhead在哪里定义的呢,请看jtbc\\common\\incfiles\\config.asp 其中定义: nhead = default_head 这样就知道了头部文件调用的是 tpl_public.jtbc这个文件中的default_heda节点。 尾部文件与此同理。
水云间jtbc入门教程13:认识jtbc当中的模块 在第三节认识jtbc的架构中可以直观看出jtbc中的文档结构。类似article这样的目录即为一个模块。模块内包含了 1、模块首页文件jtbc\\article\\index.asp 2、当前模块配置文件jtbc\\article\\config.jtbc 当前模块后台菜单引导文件jtbc\\article\\guide.jtbc 3、jtbc\\article\\common\\template\\目录下的模板文件 4、jtbc\\article\\common\\language\\目录下的语言文件 5、jtbc\\article\\common\\incfiles\\目录下的程序文件 通过jtbc的模块结构,再一次对其模板、语言、程序两两分离的设计思想有了新的认识。 jtbc提供了模块安装和卸载的机制,通过后台管理--模块管理可以管理得到。 不仅如此,类似article这样的模块仅是一个象征的作用,您根据自己的需求,可以无限克隆和修改,以达到自己的建站需求。
水云间jtbc入门教程14:文章模块的用法 文章模块可以说是一个非常典型的模块,它是众多模块的抽象。为什么这么说呢? 其实想想,所有的网页内容也不外乎一个是文章列表,一个是文章内容。 你要做一个新闻资讯类的栏目,用文章模块稍微改动下就可以了。要做产品介绍之类的,无非是增加个图片展示的功能。要做其它的再相应增加其功能即可。 这里来看jtbc的文章栏目。 用UE打开文章模块前台模板文件:jtbc\\common\\template\\module.jtbc 你可以通过后台文章管理--文章模板来管理前台。 你还可以在后台模板管理处直接输入节点article.tpl.moudule来打开。 在后台可以清楚地看到文章目标有两个节点:list和detail。 前者对应文章列表页的模板。后者对应文章内容页的模板。你要修改文章模块前台的表现时,可以在这里进行修改。
水云间jtbc入门教程15:首页调用文章 当建立了许多类似文章模块这样的模块之后,您可能希望将部分文章调用至首页展示。 itransfer函数这时就排上了用场。前面已经讲过该函数的使用常识。再回顾一下如何首页调用文章。 {$=itransfer('top', '1', 'topx=10;tnum=30;genre=article')} 这样可以调用文章模块下最新的10篇文章。具体参数含义前面已有介绍。 该函数非常的灵活,配合调用模板的使用,你可以调用出你想要的任何样式。 当您在后台添加文章时,它有推荐等选项,用以自主筛选所需要的文章,这时只需要将top改为good即可调用推荐文章。 当你需要调用精确类别时,在复合参数内加上class="所在的类别id"即可。 当你需要调用多个类别,可以用osql参数,在复合参数内加上osql= and a_class in(1,2,3),其中,a_class是数据库的原始字段名,1,2,3代表调用的是类别id为1,2,3中的所有文章。 默认的调用模板只显示标题及其链接,如果想显示时间和点击数,直接在调用模板内,增加{$time}和{$count}。你可以直接在调用模板文件里增加对应节点来实现。调用模板对应管理节点代码:.tpl.tpl_transfer。具体实现请参照原有写法自行研究解决。
水云间jtbc入门教程16:认识文章数据表 作为动态网页,网站文章等数据记录是存放在数据库内的。所以有必要了解文章数据表的数据结构。 这里以access为例来说明: 相关数据库的通用连接文件请见jtbc\\common\\incfiles\\conn.asp。 打开对应的数据库。查看jtbc_article的数据结构如下: aid 自动编号 a_topic 标题 a_topic_b 标题加粗 a_topic_color 标题着色 a_content 内容 a_content_images_list 图片集 a_cttype 模式 a_cp_note 内容分页标志(是/否) a_cp_mode 内容分页模式(手动/自动) a_cp_type 内容分页类型(按字节/按段落) a_cp_num 内容分页的单页量 a_time 时间 a_cls 父类别序列 a_class 类别编号 a_hidden 隐藏 a_good 推荐 a_top 置顶 a_count 点击 a_update 更新 字段名称前一般都有“a_”这样的字段前缀。我们来看配置文件中有关数据库表的配置: <item varstr="ndatabase" strvalue="jtbc_article" /> <item varstr="nidfield" strvalue="aid" /> <item varstr="nfpre" strvalue="a_" /> 有关配置说明请自行研究,一般通过查看后台系统管理--配置管理,可以看出相关的配置及其说明。这些配置对于程序是否能正常运行都是必要的。
水云间jtbc入门教程17:模块的安装与复制 模块的安装方法: jtbc同样提供了可以将模块打包和安装的方法。后台的系统管理--模块管理可以方便而又完整地将不需要的模块卸载掉。同时也可以根据打包后的模块来安装。 模块打包软件下载地址:http://www.jtbc.cn/forum/common/upload/2010/03/01/225442vm.rar 模块的复制方法: 在JTBC中每一个栏目都可以被克隆,并且可以反复克隆,以将一个文章模块article克隆成一个新的新闻模板news为例。 第一步: 复制一个目录,比如article,新命名为news。 第二步: 配置news目录下的2个文件:config.jtbc与guide.jtbc config.jtbc中的如下是配置数据库表 <item varstr="ndatabase" strvalue="jtbc_news" /> <item varstr="nidfield" strvalue="nid" /> <item varstr="nfpre" strvalue="n_" /> 第三步: 复制数据库表jtbc_article,更名为jtbc_news,根据config.jtbc中的配置进行命名,这里的字段前缀为"n_",即把类似a_topic的字段均更名为n_topic。后台管理的菜单中将自动生成这样的一个管理模块,只需要更新缓存即可。 备注 简单的文件夹复制也可以完成一个栏目的克隆,但强烈推荐不同的栏目之间使用独立的数据库表以方便日后管理。
水云间jtbc入门教程18:添加自定义字段 jtbc提供了关于各模块最基础的数据框架,在使用的过程当中,可能需要自定义一些字段,以满足特定情况下的需求。 这里就以文章模块为例,添加文章简介功能的字段(如无特别说明,本教程均以access数据库为例)。 具体操作步骤如下: 【1】数据库操作 增加字段:a_intro 在后台系统管理--执行SQL输入框输入以下语句,然后执行 alter table jtbc_article add a_intro text; 若提示成功,则表明已经在jtbc_article数据表添加成功了a_intro字段。 【2】语言部分操作 增加文件:config.jtbc <?xml version="1.0" encoding="utf-8"?> <xml mode="jtbc" author="jetiben"> <configure> <node>item</node> <field>disinfo,chinese</field> <base>language_list</base> </configure> <language_list> <item> [p] <disinfo><![CDATA[intro]]></disinfo>[/p] [p] <chinese><![CDATA[文章介绍]]></chinese>[/p] </item> </language_list> </xml> 【3】模板部分操作 (a)后台模板修改: add节点 <tr> <td width="80" height="25">{$=itake('config.intro','lng')}</td> <td width="*"><textarea rows="3" name="intro" cols="40"></textarea></td> </tr> edit节点 <tr> <td width="80" height="25">{$=itake('config.topic','lng')}</td> <td width="*"><textarea rows="3" name="intro" cols="40">{$intro}</textarea></td> </tr> (b)前台模板 在需要放置简介的地方放置:{$intro} 【4】程序部分 (a)后台程序入库 adddisp增加: rs(cfname("intro")) = left_intercept(get_str(request.Form("intro")), 10000) editdisp增加: rs(cfname("intro")) = left_intercept(get_str(request.Form("intro")), 10000) (b)前台程序替换标签 list节点增加: tmptstr = Replace(tmptstr, "{$intro}", htmlencode(get_str(rs(cfname("intro"))))) 至此,增加自定义字段文章简介成功。
水云间jtbc入门教程19:自定义文章栏目首页 在JTBC中,很多栏目都没有默认的栏目首页,其首页就是列表页,当我们需要给一个栏目增加一个栏目首页时,只需要编辑栏目下的模板,增加一个新的 "index" 节点即可。例如给文章栏目加一个栏目首页,进入后台的 文章管理 - 文章模板 - 创建一个新的节点。 节点名: index 节点内容: {$=web_head(nhead)} <div id="middle"> <div id="middleContent">Hello JTBC.</div> </div> {$=web_foot(nfoot)} 提交之后进入 系统管理 - 缓存管理 内删除缓存之后点击你的文章栏目看看。 提示:建立栏目首页如果要调用文章的数据可使用itransfer函数配合调用模板来使用。
水云间jtbc入门教程20:产品模块之图片与图片集 相对于文章模块,产品模块增加了图片字段,使其在列表页能够显示产品的代表图片。 其中图片字段在数据库中对应的字段名称是d_image,字段类型为文本。 图片集字段:p_content_images_list。类型:备注。 图片保存的是相对于该篇文章的单张图片,图片集则保存的是相对于该篇文章的以“|”分隔的图片的集合。图片集默认在前台不显示,你可以随意来运用这些图片。比如调用图片集中图片到首页;在内容页只显示图片集部分图片;或者全部调出图片集所有图片。 所以图片集字段的存在是非常人性化的,可以说运用之妙,存乎你心。
水云间jtbc入门教程21:首页调用产品图片 一般可能希望将部分产品图片调用到首页,那么我们来提供一种调用图片到首页的方法。 调用图片到首页仍将使用itransfer函数。 打开后台调用模板,新建调用节点:img 节点内容: {$}<ul> {$$}<li><a href="{$=curl("{$baseurl}", iurl('detail', {$id}, {$urltype}, 'folder={$createfolder};filetype={$createfiletype};time={$time}'))}" target="_blank"><img src="{$=get_actual_route('product')}/{$=split("{$content_images_list}", "|")(0)} " width=160 height=120 /></a> </li>{$$} </ul>{$} 首页调用:{$=itransfer('top', 'img', 'topx=6;tnum=40;genre=product;osql= and p_content_images_list <> ##')} 备注:可以看到调用模板内大多有curl、iurl这样的函数,它放在链接a标签内,即使不懂,想来必是链接地址了,这里不用管它。 着重来看图片的路径:{$=split("{$content_images_list}", "|")(0)},用了split函数,意即取出图片集中的第一张图片地址。如果是调用图片,直接用{$image}代替。
水云间jtbc入门教程22:bcastr4幻灯首页展示产品图片 Bcastr最新的4.0beta版提供了图片轮换播放的解决方案。 其介绍详见:http://www.ruochi.com/main/2008/03/19/bcastr-40/ 下载相关文件,将其中的bcastr4.swf 文件放到 \\common\\images\\swf 目录下,swf文件夹需要手动新建。 以product 模块下的图片调用为实例,将之放至首页幻灯调用。 添加调用模板(模板管理-调用模板) 节点名称:bcastr 节点内容: <data> <channel>{$}{$$} <item> <link>{$=curl("{$baseurl}", iurl('detail', {$id}, {$urltype}, 'folder={$createfolder};filetype={$createfiletype};time={$time}'))}</link> <image>{$baseurl}{$=split('{$content_images_list}', '|')(0)}</image> <title>{$topic}</title> </item>{$$}{$} </channel> <config> <roundCorner>8</roundCorner> <isShowTitle>false</isShowTitle> <scaleMode>exactFil</scaleMode> <transform>blur</transform> <changImageMode>hover</changImageMode> <isHeightQuality>true</isHeightQuality> </config> </data> 在首页模板(模板管理-首页模板)添加: 节点名称 :bcastr4 节点内容: <object type="application/x-shockwave-flash" data="{$global.images}swf/bcastr4.swf?xml={$=get_lrstr(itransfer('top', 'bcastr', 'topx=6;tnum=40;genre=product;osql= and p_content_images_list <> ##'), '|', 'leftr')}" width="200" height="160" id="vcastr4"> <param name="movie" value="{$global.images}swf/bcastr4.swf?xml={$=get_lrstr(itransfer('top', 'bcastr', 'topx=6;tnum=40;genre=product;osql= and p_content_images_list <> ##'), '|', 'leftr')}" /> </object> 在首页模板index节点内容中所需位置放置:{$=ireplace('module.bcastr4', 'tpl')},即可成功调用。 备注: 1、上述调用方法采用了xml的调用方式,如果有些浏览器没有调用出来,测试是否是不兼容的缘故。 2、有关播放样式的设置及其说明请见:http://www.ruochi.com/main/2008/03/19/bcastr-40/
水云间jtbc入门教程23:jtbc类别解析 要搞清jtbc的类别恐怕也不是一会儿就能弄明白的。jtbc提供了isort函数,用以调用类别。跟itransfer函数有点儿类似,配合类别模板的使用,可以根据自己的需求输出多种类别样式。 我们先来看该函数的官方解释: isort(vars) 参数: vars, 复合参数,其中有 class 父类别,tpl 模板,genre 模块名称, rnum 显示列数等 作用: 调用类别并格式化输出内容,在调用类别的模板上做文章可以调用出不同的样式,比如只调用1级类别,只调用某个类别下面的子类别,循环调用1级2级类别,调用当前类别的子类别等等。 示例: {$=isort("tpl=1;rnum=1")} 调用当前类别的记录并按照调用分类模板中节点名为1的模板格式化显示出来 备注: 1、rnum参数仅限于table排版时有用 2、如果在首页或模块外调用类别,需加genre参数,指定模块名。 3、调用类别名称有专门函数: 调用类别名称方法:{$=get_sorttext(ngenre,nlng,{$classid})} 如果放于列表页要替换这个classid,如果在调用模板,把{$classid}换成{$class} 4、tpl=1为1这个类别模板,其内容见于tpl_sort.jtbc文件,即在html页面以如下格式显示。如果要更改其显示样式,即可新建节点或更改如下内容: <ul>{$}{$$} <li><a href="{$=curl("{$baseurl}", iurl('list', {$id}, {$urltype}, 'folder={$createfolder};filetype={$createfiletype}'))}" target="_self">{$sort}</a></li>{$$}{$} </ul>
水云间jtbc入门教程24:jtbc二级类别调用 isort 函数可以调用出类别,假如我们想在网站上调用出 一级分类下面显示二级分类的话,直接调用是无法实现的,但对调用类别的模板进行修改之后这种形式的调用完全可以实现。 思路: 采用递归调用,在调用类别的模板中也写入 isort 函数使其调用当前调用的类别所属的子类别,因此,我们同时需要2个调用类别的模板。 步骤: 首先,我们进入类别的模板管理界面(.tpl.tpl_sort)增加一个新的节点,节点名 1_1 <table>{$} <tr>{$$} <td> <table> <tr> <td><a href="{$=curl("{$baseurl}", iurl('list', {$id}, {$urltype}, 'folder={$createfolder};filetype={$createfiletype}'))}" target="_self">{$sort}</a></td> </tr> <tr> <td>{$=isort("tpl=1;rnum=2;class={$id}")}</td> </tr> </table> </td>{$$} </tr>{$} </table> 以及原来的节点 1 <table>{$} <tr>{$$} <td><a href="{$=curl("{$baseurl}", iurl('list', {$id}, {$urltype}, 'folder={$createfolder};filetype={$createfiletype}'))}" target="_self">{$sort}</a></td>{$$} </tr>{$} </table> 然后直接这样调用即可:{$=isort("tpl=1_1;rnum=1")} 备注 这种形式的调用不但可以调用 二级类别。三级,四级的类别也都可以以这样的形式调用出来。
水云间jtbc入门教程25:解读首页会员登陆调用 前面在讲首页模板调用时提到首页会员的调用: {$=ireplace("global.passport:api.jslogin", "tpl")} 如果已经对本函数及调用节点熟悉的话,可以看出它是调用jtbc\\passport\\common\\template\\api.jtbc这个模板文件中的jslogin节点。 节点内容看起来只有一句:<div id="jstdlogin"></div>。它是怎么调用出前台的内容呢? 这里的div有一个id,显然它是通过这个id值,采用js的方式来进行判断赋值。 简单地说,主要有两个节点: 分别是会员登录前后的显示方式。 登陆前节点:jslogin_login 登陆后节点:jslogin_logined 通过修改对应的节点,可以修改前台的显示方式。比如可能希望在首页顶部显示。知道修改的位置,那么修改起来相对就容易了。
水云间jtbc入门教程26:解读首页搜索调用 首页搜索的功能原已附带,大致如下: <form method="get" name="search" action="search"> <input type="text" name="keyword" size="15" class="text" /> <select name="genre" class="select">{$=sel_genre("article,product,download,shop", "")}</select> <select name="field" class="select">{$=show_xmlinfo_select("global.search:sel_field.all","","select")}</select> <input type="submit" value="{$=itake('global.lng_config.search','lng')}" class="button" /> </form> 需要修改的地方: 第一是需要搜索的模块,当修改或增添模块后就在对应位置加上。 第二是搜索域设置,默认是按标题搜索,可以增加按内容搜索功能,只需要在后台模板节点处输入search.lng.sel_field中增加节点:content,按内容即可。
编后记 水云间jtbc入门教程将自此告一段落,不知道各位jtbc初学有没有从中得之一二呢? 本来想打造一个更完善和更详备的教程,但因个人能力所限,这项光荣的任务就交给看帖的诸位了。 如果觉得这套入门教程还有待改进的地方,欢迎跟帖说明。
|
© 2011-2024 Danhand(CMS) DANHAND.Cn All Rights Reserved.