看到论坛不少会员问这个问题,有人说是DedeCMS的Bug,其实这些东西都可以进行修改,今天天涯来教大家如何修改内容页的用户评论。
这里我们以DedeCMS V5.1 SP1做例子,并且这里使用的是默认的模板,也就是官方那套模板,下面我们开始修改。
先说下大概的原理,这里主要模仿的DedeCMS用户登陆的那个修改的,就是你登陆后,首页那个用户登陆框自动变成了已经登陆的状态,经过研究的朋友应该大概了解这个原理,主要通过使用了DedeCMS的Ajax的JS来进行切换的,涉及到的文件就是在member目录下的loginsta.php,大家可以同DW打开这个文件,大概也能看出一些名堂,其实等你登陆后,Js脚本就将这个文件生成的HTML替换那个没有登陆之前的那个登陆框,这里复杂的概念我们不涉及了。开始进行修改。
1.首先我们需要知道文章内容模板是哪个,/templets/default/article_article.htm,这个就是文章页的模板文件,我们用DW打开,可能比较乱,我们按照(图1)关联CSS样式文件,这样我们的DW中能够使得模板正常的显示出来;
2.进入member文件夹,将文件夹中的loginsta.php复制一份,重新起个文件名,这里我们起名叫userpost.php,我们用DW打开,可以看出来这个是登陆的那个框子,没关系我们先不管那么多;
3.我们在模板文件article_article.htm的<head></head>中的<script language="javascript">地方看到一个function Digg(divId,aid){...},这个是一个js函数,就是控制顶一下那个操作的,这里我们不管,我们在function前面加上这么一段代码:
Copy code
function CheckPost(){
var taget_obj = document.getElementById('_postform');
myajax = new DedeAjax(taget_obj,false,false,"","","");
myajax.SendGet2("{dede:global name="cfg_memberurl"/}/userpost.php");
DedeXHTTP = null;
}
这个是仿照首页那个function CheckLogin()写的一个js函数,很简单的修改,主要功能就是获取网页里面一个ID叫_postform的元素,然后将{dede:global name="cfg_memberurl"/}/userpost.php这个里面的内容替换这个_postform里面的东西,如果我们没有修改userpost.php,那就替换成那个登陆后的登陆框效果,所以我们还要修改这个php文件,成为我们想要的样子。
4.我们找到article_article.htm里面的<div class="userbox">....</div>,这个层就是那个会员发布评论的框子,我们在<div class="userbox">前面加上 <span id="_postform">,并且在</div></form>前面插入代码:
</span>
<script language="JavaScript">CheckPost();</script>,让这个<span>包含整个发布评论的层,具体可以看(图2)
5.到这里我们模板部分修改完成了,接下来就只剩下那个登陆框子的修改了。我们首先需要把那个<div class="userbox">...</div>也就是<span>包的部分复制下,然后修改下,这里我是这样修改的,可以看下面的代码:
Copy code
<div class="userbox">
<dl>
<dd>
<strong>用户名:</strong><input name="username" type="text" class="username" value="<?php echo $cfg_ml->M_UserName?>" maxlength="20" />
<strong>密码:</strong><input name="pwd" class="password" type="password" maxlength="20" disabled="disabled" />
</dd>
<dd></dd>
<dd class="mtop"><input name="notuser" type="checkbox" value="1" /> <strong>匿名?</strong></dd>
<dd><input name="sb" type="button" class="submit" value="发表评论"/>
</dd>
<dd class="mtop"><a href="{dede:field name='memberurl'/}/index_do.php?fmdo=user&dopost=regnew" target="_blank">注册</a></dd>
</dl>
</div>
这里<?php echo $cfg_ml->M_UserName?>这个就是显示那个用户登陆后的用户名,因为这里登陆后就不要输入用户名的密码了,所以我就把这个输入密码的框子禁止了,在这个后面加了个属性 disabled="disabled",这样就输入不了密码了,接下来我们来编辑下那个userpost.php文件,我们修改的也就是把<table width="212" border="0" cellspacing="0" cellpadding="0">整个表格的内容用我们那个层的内容替换掉,这样可以现象下,等到程序读取这个文件,在那个用户名的框子里面就显示了用户名,密码框被禁止了。
6.好了,我们的修改就完成了,更新下首页,登陆个用户看看,有啥效果(图3),完成了!