无忧岛

10 七, 2009

SDCMS二次开发指南一(评论表单篇)

Posted by: kinglife In: Web

编辑完发现代码高亮显示插件好像有点BUG,自动把一些编码给转了,可以下载我打包的文件 http://www.islandcn.com/wp-content/uploads/attachment/SDCMS留言评论功能二次开发指南.rar 有问题与我联系,也可以在群里面讨论,在我有时间的前提下我一定会解答的.

最初了解SDCMS还是在点石论坛上,好像那位朋友直接说生成静态/SEO等等那一套的我就不提了,但是描述的关键词是:企业站,前两天因公司要求,想做个企业站,于是才想起来,接触SDCMS,发现这款微型的CMS还是很不错的,很容易上手.程序结构也很清晰,但是代码缺少注释.另外这款CMS的扩展性不是很好,主数据表SD_Info自增字段后要在前台调用还是比较麻烦些的.自身的标签插件并不支持,得去修改内核:inc/power.asp,其实这里就是个类,你打开这个文件后里面有大量的系统标签.切入今天的正题:今天主要的目的是让大家了解这个系统的留言系统的结构,熟悉了结构才能有助于更好的打造属于你自己的人性化留言系统.
系统默认表单只有个用户名和内容,太单调,假如我们是在做企业站,需要增加”公司名称”"联系电话”"电子邮箱”等表单,做一个询价系统,那么如何实现呢??那么这就是今天的主题内容.

主要涉及文件:

inc/sdcms.js
plug/comment.asp

文件结构:
在任何可见留言的页面中,拿系统默认模板为例,打开源代码后我们都可以看到:


		<div class="sub_i_b01">
		  <div id="comment_list">
		  <script>load_comment(1)</script>
		  </div>
		  <div id="comment_post">
		  <script>load_comment_post(1)</script>
		  </div>
		</div>

代码:


<script>load_comment(1)</script>

功能:调用该内容已经发布的评论

代码


<script>load_comment_post(1)</script>

功能:调用评论提交表单

显然,这两段JS代码分别是调用了带有参数的函数 load_comment 和 load_comment_post ,那么找到它的主文件


<script src="/inc/sdcms.js"></script>

打开主文件我们可以看到上面的两个函数:


function load_comment(t0)
{
	var param;
	param=webdir+"plug/comment.asp";
	param += "?id=" + escape(t0);
	$("comment_list").innerHTML="<img src="+webdir+"editor/loading.gif>";
	SendRequest(param, param, "POST",
                function(responseText){
					var f	= responseText.substring(0,1);
					if (f == "1"){
						$("comment_list").innerHTML =responseText.substring(1);
						return false
					}

					else{
                      $("comment_list").innerHTML=responseText;
					}

                });
}
function load_comment_post(t0)
{
	var param;
	param=webdir+"plug/comment.asp";
	param += "?id=" + escape(t0);
	param += "&action=add";
	$("comment_post").innerHTML="<img src="+webdir+"editor/loading.gif>";

	SendRequest(param, param, "POST",
                function(responseText){
				var f	= responseText.substring(0,1);
					if (f != "1"){
						$("comment_post").innerHTML=responseText;
						return false
					}

					else{
                      $("comment_post").innerHTML="";
					}
                });
}

注意: 主函数我们不需要改动,改动的是里面的调用!函数中都有代码”param=webdir+”plug/comment.asp”;” 注意这里,留言本的核心文件comment.asp,我们现在打开comment.asp
小提示: asp的函数/过程都是用


sub subname
end sub

开始和结束的,这里可以看到三个过程:
sub save_comment
保存留言内容的过程

sub shows_comment(t0)
调用留言内容的过程

Sub add_comment(t0)
表单项

以上是主要涉及的文件和函数,那么下面开始操作:

一 数据库添加字段
我们今天的目的是增加几个表单项,并实现其留言功能,那么我们首先需要到数据库中的sd_info表 添加字段
1.公司名称 company
2.联系电话 phone
3.电子邮件 email
(如何添加字段就不在多说了,有问题可联系我)
如果是MSSQL数据库可以执行SQL语句:


alter table sd_comment add company nvarchar(50)
alter table sd_comment add phone nvarchar(50)
alter table sd_comment add email nvarchar(50)

注意,字段类型最好用字符型,长度别太小!
二 修改留言系统核心文件,plug/comment.asp 添加表单并实现新增字段的数据读写操作(因为机器上源文件都被我修改过了,所以就不说多少行了,直接查找代码了,请谅解)
3.1 表单的添加
首先 打开plub/comment.asp文件,然后找到最下面的一个过程add_comment
查找代码:


Sub add_comment(t0)

在合适的位置加上代码


	'KingLife Add Start
	echo "<li>公司名称:<input name=""company"" type=""text"">&nbsp;&nbsp; * 公司名称,如果是个人请输入您的姓名</li>"
	echo "<li>联系电话:<input name=""phone"" type=""text"">&nbsp;&nbsp; * 联系电话 格式:010-64034191</li>"
	echo "<li>电子邮件:<input name=""email"" type=""text""></li>"
	'KingLife Add End

记住,在源文件中增加任意代码请在顶部和底部添加注释,便于以后的维护也易区分原代码.
这就实现了表单得添加.这个时候刷新某个内容页应该可以看到留言表单已经多了三个文本框.

3.2 修改SQL语句
查找


	sql="select username,content,ip,infoid,ispass from sd_comment"

修改为


	sql="select username,content,ip,infoid,ispass,company,phone,email from sd_comment"

注意: 增加了三个字段的查询.分别为: company,phone,email

3.3 新增字段数据的保存
修改过程 sub save_comment
查找代码


sub save_comment

在代码


	username=trim(request("username"))
	content=trim(request("content"))

下面添加


	'KingLife Add Start
	company=trim(request("company"))
	phone=trim(request("phone"))
	email=trim(request("email"))
	'KingLife Add End

继续在这个过程中查找


username=sdcms_f.HTMLEncode(username)

下面添加


	'KingLife Add Start
	company=sdcms_f.HTMLEncode(company)
	phone=sdcms_f.HTMLEncode(phone)
	email=sdcms_f.HTMLEncode(email)
	'KingLife Add End

继续查找


rs(2)=sdcms_f.HTMLEncode(ip)
rs(3)=id

下面添加


'KingLife Add Start
rs(5)=company
rs(6)=phone
rs(7)=email
'KingLife Add End

到这里 核心文件修改的已经差不多了,那么剩下的就只剩JS函数了 inc/sdcms.js文件了.

四 JS文件修改,页面的表单值的获取
注意上面提到的两个函数不需要修改,主要修改函数 checkcomment
查找代码:


function checkcomment(theform)

这里的核心修改思路是: theform.xxxxx.value 这里是js的表单元素判断,js没学过但是能看懂,我不知道如何用专业术语解释,思路就是增加或者修改这里的 xxxx
这里的修改过程:
增加表单为空的提示:


//KingLife Add Start
if (trim(theform.company.value)=='')
{alert('公司名称不能为空');
theform.company.focus();
theform.company.value='';
return false
}
if (trim(theform.phone.value)=='')
{alert('联系电话不能为空');
theform.phone.focus();
theform.phone.value='';
return false
}
//KingLife Add End

这段代码我就不解释了,中文提示..

查找代码


param += "&content=" + escape(trim(theform.content.value));

下面添加


	//KingLife Add Start
	param += "&company=" + escape(trim(theform.company.value));
	param += "&phone=" + escape(trim(theform.phone.value));
	param += "&email=" + escape(trim(theform.email.value));
	//KingLife Add End

这段代码是获取表单的值,并传值给comment.asp处理

这个函数中,下面三处代码


$("username").value='';
$("content").value='';

在它下面分别加上


	//KingLife Add Start					$("company").value='';
	$("phone").value='';					$("email").value='';
	//KingLife Add End

这段代码是不合法提交的时候清空表单.
修改后记得保存,在这个时候我们就可以完成表单数据的增加工作了.那么如何实现调用呢?

五,新增字段的数据调用
因为我做的是企业站涉及到联系人资料保密,所以在这里没做前台调用修改,主要讲下调用的方法:
新增字段的前台数据调用依然是核心文件 pulg/comment.asp中进行修改,过程shows_comment,查找代码


sub shows_comment(t0)

在过程中我们看到SQL语句


sql="select adddate,username,content from sd_comment where infoid="&id&" and ispass=1 order by id desc"

可以在username,content后面继续添加你想要调用的字段.然后
查找代码


echo "<div id=""comment_content"">"&rs(2)&"</div>"

在下面增加HTML的输出就可以了.

六 后台管理的相关调用
SDCMS的文件结构十分简洁,后台文件均在 admin下,评论管理文件sdcms_comment.asp,打开它
查找代码


sql=sql&",ip,adddate,content,ispass,infoid from "&sd_table&" "&tj&" order by ispass,id desc"

在这里添加相关字段就可以了,譬如我们添加个company的字段,变成


sql=sql&",ip,adddate,content,ispass,infoid,company from "&sd_table&" "&tj&" order by ispass,id desc"

然后在84行左右,代码


echo ""&rs1(2)&"</a>

在这里输出即可,譬如可以直接在后面跟上公司的信息


echo ""&rs1(2)&"</a> 公司:"&rs(8)&"<br>"

可以打开后台看下效果.

昨天在SDCMS的官方群有朋友提出做成独立的留言系统,那么如果在熟悉了留言系统的结构后已经觉得很容易修改了
主要思路

1.为了不破坏原有文件结构,可以把 plug/comment.asp 和 inc/sdcms.js admin/sdcms_comment.asp 重新复制一份,另外注意需要复制一个 sd_commnet的数据表, 并给新复制的表和文件 全部重命名一下

2.修改表调用,核心修改文件是 comment.asp,将其中的原SQL语句 “from sd_comment” 改成你自己的新表.

3.JS文件的函数名,这里比较重要load_comment 和 load_comment_post 别和以前的一样,并且里面的文件调用


param=webdir+"plug/comment.asp";

这里得文件调用也需要改,改成你自己的新复制的文件名.

4. 新复制的admin/sdcms_comment.asp 文件同样修改表名, 将原SQL查询 from sd_comment 修改成 from 你的新复制的数据表,然后在后台系统合适的位置加上这个留言系统的管理地址就可以了.

版权所有,转载时必须以链接形式注明作者和原始出处及本声明:KingLife@无忧岛

本文链接: http://www.islandcn.com/post/653.html



7 Responses to "SDCMS二次开发指南一(评论表单篇)"

1 | zhiqin

七月 12th, 2009 at 22:45

Avatar

你好博主 申请友情链接
http://z.xiao3.org
您的链接我已经添加

2 | kinglife

七月 14th, 2009 at 11:11

Avatar

等贵站收录良好了吧 目前贵站谷歌没有收录,百度收了一篇

3 | zhiqin

七月 14th, 2009 at 21:19

Avatar

你说错了 我还有一个米 也有收录的~~~

4 | kinglife

七月 15th, 2009 at 14:29

Avatar

可以告诉我 什么米 呵呵

5 | HKGXIN

七月 27th, 2009 at 09:51

Avatar

谢谢博主分享,很不错。。

6 | 免费签名设计

八月 7th, 2009 at 00:05

Avatar

http://www.qianmingshejiwang.net.cn/

我这个网站用的就是SDCMS系统
现在问题是内容页中的内链接太多,有办法修改一下吗?

7 | 上海男科

十一月 22nd, 2010 at 11:12

Avatar

看到文章,学到了好多东西。值得学习!

Comment Form

Categories

Flickr PhotoStream

    flickrRSS probably needs to be setup

About

Name:KingLife
Email:lifewz#163.com