Salad UN

To Taste The Salad Of Life.

« DedeCMS抓取本机图片修改办法DedeCMS按Tag取得相关文章 »

DedeCMS用户登陆后评论自动记录用户名修改

[ At 2008-12-16 By Ash   1 comments ]

看到论坛不少会员问这个问题,有人说是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),完成了!

 
 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense

Copyright 2008 www.s-un.cn. Some Rights Reserved.