1. 程式人生 > >dede二次開發織夢

dede二次開發織夢

DEDE 區分 PC / 手機端 js (手機端PC端對應跳轉)

<script type="text/javascript">
function mobile_device_detect(url)
{
  if(window.location.pathname != '/'){
    url += window.location.pathname;
  }
  if(window.location.search != ''){
    url += window.location.search;
  }
  var thisOS = navigator.platform;
  var device = new Array("iPhone","iPod","iPad","android","Nokia","SymbianOS","Symbian","Windows Phone","Phone","Linux armv71","MAUI","UNTRUSTED/1.0","Windows CE","BlackBerry","IEMobile");
  for(var i=0;i<device.length;i++)
  {
    if(thisOS.match(device[i]))
    {
      window.location=url;
    }
  }
  //因為相當部分的手機系統不知道資訊,這裡是做臨時性特殊辨認
  if(navigator.platform.indexOf('iPad') != -1)
  {
    window.location=url;
  }
  //做這一部分是因為Android手機的核心也是Linux
  //但是navigator.platform顯示資訊不盡相同情況繁多,因此從瀏覽器下手,即用navigator.appVersion資訊做判斷
  //------ 測試這部分導致不管pc還是手機都跳到手機端,所以先註釋不用,測試就通過了!  -------
  //var check = navigator.appVersion;
  //if( check.match(/linux/i) )
  //{
    //X11是UC瀏覽器的平臺 ,如果有其他特殊瀏覽器也可以附加上條件
  //  if(check.match(/mobile/i) || check.match(/X11/i))
  //  {
  //    window.location=url;
  //  }
  //}
  //類in_array函式
  Array.prototype.in_array = function(e)
  {
    for(i=0;i<this.length;i++)
    {
      if(this[i] == e)
      return true;
    }
    return false;
  }
  
}
mobile_device_detect("http://地址/m");
</script>

DEDE分頁js

/**
 * 分頁
 * thisPage 當前頁
 * allPage  總頁數
 * url 跳轉地址
 * idName   選擇器id名稱(放置分頁的位置)
 * showNum  展示幾個頁碼
 */
function getPageShow(thisPage,allPage,rdurl,idName,showNum){
	var str = '<ul>';
    if(rdurl){
    }
    //根據當前頁計算前後頁數
    var leftPage_num  = Math.floor( showNum / 2 );
    var rightPage_num = showNum - leftPage_num;

    //左邊顯示數為當前頁減左邊該顯示的數 例如總顯示7頁 當前頁是5  左邊最小為5-3  右邊為5+3
    var left  = thisPage - leftPage_num;
        left  = Math.max(left,1);       //左邊最小不能小於1
    var right = left + showNum - 1;     //左邊加顯示頁數減1就是右邊顯示數
        right = Math.min(right, allPage);       //右邊最大不能大於總頁數
        left  = Math.max(right - showNum + 1 , 1); //確定右邊再計算左邊,必須二次計算

    if (thisPage > 1) {
        str    += '<li><a href=" '+ rdurl + (Number(thisPage)-1) +'">上一頁</a></li>';
    }else{
        str    += '<li><a href="'+ rdurl + thisPage +'">上一頁</a></li>';
    }
    if(left > 1){
        str    += ' ..';
    }
    for (var i = left; i <= right; i++)
    {   
        if(thisPage == i){
            str    += '<li><a class="now_page" href="'+ rdurl + i +'">'+ i +'</a></li>';
        }
        else{
            str    += '<li><a href="'+ rdurl + i +'">'+ i +'</a></li>';
        }
    }
    if(right < allPage){
        str    += ' ..';
    }
    if (thisPage == allPage) {
        str    += '<li><a href="'+ rdurl + allPage +'">下一頁</a></li>';
    }else{
        str    += '<li><a href="'+ rdurl + (Number(thisPage)+1) +'">下一頁</a></li>';
    }
    str    += '</ul>';

    $("." + idName).html(str);
}


function getRequest() {
    var url = location.search; //獲取url中"?"符後的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for ( var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
        }
    }
    return theRequest;
}


在DEDEcms的/member和/plus資料夾下,有許多模板需要呼叫當前模板的頭部和尾部,

同時使用同一個變數<?php pasterTempletDiy("head.htm"); ?>會出現問題,plus能正常使用,而會員中心卻打不開,

其實解決辦法很簡單,就是單獨寫變數。方法如下:

會員部分開啟/member/config.php,在最下面新增如下程式碼

//引入arc.partview.class.php類處理  
require_once(DEDEINC."/arc.partview.class.php");  
function pasterTempletDiy($path)  
{  
	global $cfg_basedir,$cfg_templets_skin;  
	$tmpfile = $cfg_basedir.$cfg_templets_skin."/".$path;//模版檔案的路徑  
	$dtp = new PartView();  
	$dtp->SetTemplet($tmpfile);  
	$dtp->Display();  
} 


對應模板用:
<?php pasterTempletDiy("head.htm"); ?>
<?php pasterTempletDiy("footer.htm"); ?>

/plus檔案部分,把變數pasterTempletDiy換成變數pasterTempletDiy2即可:

//引入arc.partview.class.php類處理  
require_once(DEDEINC."/arc.partview.class.php");  
function pasterTempletDiy2($path)  
{  
	global $cfg_basedir,$cfg_templets_skin;  
	$tmpfile = $cfg_basedir.$cfg_templets_skin."/".$path;//模版檔案的路徑  
	$dtp = new PartView();  
	$dtp->SetTemplet($tmpfile);  
	$dtp->Display();  
} 

對應模板用:

<?php pasterTempletDiy2("head.htm"); ?>
<?php pasterTempletDiy2("footer.htm"); ?>

{dede:php}標籤迴圈巢狀方法:

{dede:php} 
$row = $dsql->Execute('me',"SELECT `id`,`typename`,`content` FROM dede_arctype WHERE `topid` = '上級id'"); //獲取一個欄目下的分類
while($arr = $dsql->GetArray('me'))
{
  preg_match_all('#src\s*=\s*["\']?([^\s"\']*)#i', $arr['content'], $match); //欄目下分類的縮圖 :在欄目內容裡設定一張圖片,利用正則獲取img下src的路徑
  foreach($match[1] AS $v)
  {
     echo '輸出樣式內容'; //$v是img下src的路徑
    $row1 = $dsql->Execute('me1',"SELECT `id`,`title`,`source`,`click` FROM dede_archives WHERE `typeid` =".$arr['id']); //根據獲取當前$arr['id']獲取文章

    while($arr1 = $dsql->GetArray('me1'))
    {
      echo '輸出樣式內容' ; //$arr1文章物件

    }
    }
}
{/dede:php}



DEDE內建標籤:

圖片集:

{dede:arclist  addfields='piclinks欄位名稱'  row='讀取幾行' typeid=上級id channelid='模型id'}
   <a href="#" target="_blank" class="course_[field:global.autoindex/]"><img src="[field:litpic/]"/></a>
{/dede:arclist}

標籤內判斷變數:

[field:pubdate runphp=yes]
if(){
  @me = field:pubdate; //@me 就是[field:pubdate runphp=yes]裡的field:pubdate
}
[/field:pubdate]
[field:array runphp=yes]
if( $GLOBALS['autoindex'] == 1){  //$GLOBALS['autoindex'] 自增1,2,3 ,用於css樣式
  @me = ''; //@me = 物件 :@me['title'] 文章標題 [email protected]['litpic'] 文章縮圖
}else{
  @me = '';
}
[/field:array]

文章迴圈 -- 根據樣式 $GLOBALS['autoindex']:

<!-- 文章列表 start -->
    {dede:channelartlist typeid=121 row=6}
    <div class="list tabs_news_{dede:global name='itemindex'/}">
      {dede:arclist titlelen='42' row='30' orderby='pubdate' orderway='desc'}
          [field:array runphp=yes]
            $sum = $GLOBALS['dsql']->GetOne("SELECT COUNT(id) as sum FROM dede_archives WHERE typeid ="[email protected]['typeid']);
            if($GLOBALS['autoindex']==$sum['sum'] && ($GLOBALS['autoindex'] -1) % 5 == 0){
              @me = '<div class="box">
                  <div class="img">
                  <a href="'[email protected]['arcurl'].'"> 
                    <div class="play"> 
                    <h6>'[email protected]['title'].'</h6> 
                    </div> 
                    <img src="'[email protected]['litpic'].'" alt="'[email protected]['title'].'" /> 
                  </a>
                  </div> 
                  <div class="newslist"> 
                  <ul></ul></div></div></div>';
            }else if($GLOBALS['autoindex']==$sum['sum'] && $GLOBALS['autoindex'] % 5 == 0){
               @me = '<li><strong> | </strong><a href="'[email protected]['arcurl'].'">'[email protected]['title'].'</a></li></ul></div></div></div>';
            }else if(($GLOBALS['autoindex'] -1) % 5 == 0){
              @me = '<div class="box">
                  <div class="img">
                  <a href="'[email protected]['arcurl'].'"> 
                    <div class="play"> 
                    <h6>'[email protected]['title'].'</h6> 
                    </div> 
                    <img src="'[email protected]['litpic'].'" alt="'[email protected]['title'].'" /> 
                  </a>
                  </div> 
                  <div class="newslist"> 
                  <ul>';
            }else if($GLOBALS['autoindex']%5 == 0){
              @me = '<li><strong> | </strong><a href="'[email protected]['arcurl'].'">'[email protected]['title'].'</a></li></ul></div></div>';
            }else{
              if($GLOBALS['autoindex'] == $sum['sum']){
                @me = '<li><strong> | </strong><a href="'[email protected]['arcurl'].'">'[email protected]['title'].'</a></li></ul></div></div></div>';
              }else{
                @me = '<li><strong> | </strong><a href="'[email protected]['arcurl'].'">'[email protected]['title'].'</a></li>';
              }
            }
          [/field:array]
      {/dede:arclist}
    {/dede:channelartlist}
    <!-- 文章列表 end -->

dede評論重寫

<?php
/**
 *
 * Ajax評論
 *
 * @version        $Id: feedback_ajax.php 1 15:38 2010年7月8日Z tianya $
 * @package        DedeCMS.Site
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */
require_once(dirname(__FILE__).'/../include/common.inc.php');
require_once(DEDEINC.'/channelunit.func.php');
AjaxHead();

if($cfg_feedback_forbid=='Y') exit('系統已經禁止評論功能!');

$aid = intval($aid);
if(empty($aid)) exit('沒指定評論文件的ID,不能進行操作!');

include_once(DEDEINC.'/memberlogin.class.php');
$cfg_ml = new MemberLogin();

if(empty($dopost)) $dopost = '';
$page = empty($page) || $page<1 ? 1 : intval($page);
$pagesize = 10;

/*----------------------
獲得指定頁的評論內容
function getlist(){ }
----------------------*/
if($dopost=='getlist')
{
    $res = GetList($page);
    $res['page'] = GetPageList($pagesize, $res['totalcount']);
    echo json_encode($res);
    exit();
}
/*----------------------
傳送評論
function send(){ }
----------------------*/
else if($dopost=='send')
{
    require_once(DEDEINC.'/charset.func.php');

    //檢查驗證碼
    if($cfg_feedback_ck=='Y')
    {
        $svali = strtolower(trim(GetCkVdValue()));
        if(strtolower($validate) != $svali || $svali=='')
        {
            ResetVdValue();
            ShowMsg('驗證碼錯誤,請點選驗證碼圖片更新驗證碼!','-1');
            exit();
        }
    }
    
    $arcRow = GetOneArchive($aid);
    if(empty($arcRow['aid']))
    {
        ShowMsg('無法檢視未知文件的評論!','-1');
        exit();
    }
    if(isset($arcRow['notpost']) && $arcRow['notpost']==1)
    {
        ShowMsg('這篇文件禁止評論!','-1');
        exit();
    }
    
    if( $cfg_soft_lang != 'utf8' )
    {
        $msg = UnicodeUrl2Gbk($msg);
        if(!empty($username)) $username = UnicodeUrl2Gbk($username);
    }
    //詞彙過濾檢查
    if( $cfg_notallowstr != '' )
    {
        if(preg_match("#".$cfg_notallowstr."#i", $msg))
        {
            ShowMsg("評論內容含有禁用詞彙!",'-1');
            exit();
        }
    }
    if( $cfg_replacestr != '' )
    {
        $msg = preg_replace("#".$cfg_replacestr."#i", '***', $msg);
    }
    if( empty($msg) )
    {
        ShowMsg ("評論內容可能不合法或為空!",'-1');
        exit();
    }
	if($cfg_feedback_guest == 'N' && $cfg_ml->M_ID < 1)
	{
        ShowMsg("管理員禁用了遊客評論!<a href='{$cfg_cmspath}/member/login.php'>點選登入</a></font>",'-1');
		exit();
	}
    //檢查使用者
    $username = empty($username) ? '遊客' : $username;
    if(empty($notuser)) $notuser = 0;
    if($notuser==1)
    {
        $username = $cfg_ml->M_ID > 0 ? '匿名' : '遊客';
    }
    else if($cfg_ml->M_ID > 0)
    {
        $username = $cfg_ml->M_UserName;
    }
    else if($username!='' && $pwd!='')
    {
        $rs = $cfg_ml->CheckUser($username, $pwd);
        if($rs==1)
        {
            $dsql->ExecuteNoneQuery("Update `#@__member` set logintime='".time()."',loginip='".GetIP()."' where mid='{$cfg_ml->M_ID}'; ");
        }
        $cfg_ml = new MemberLogin();
    }
    
    //檢查評論間隔時間
    $ip = GetIP();
    $dtime = time();
    if(!empty($cfg_feedback_time))
    {
        //檢查最後發表評論時間,如果未登陸判斷當前IP最後評論時間
        $where = ($cfg_ml->M_ID > 0 ? "WHERE `mid` = '$cfg_ml->M_ID' " : "WHERE `ip` = '$ip' ");
        $row = $dsql->GetOne("SELECT dtime FROM `#@__feedback` $where ORDER BY `id` DESC ");
        if(is_array($row) && $dtime - $row['dtime'] < $cfg_feedback_time)
        {
            ResetVdValue();
            ShowMsg("管理員設定了評論間隔時間,請稍等休息一下!",'-1');
            exit();
        }
    }
    $face = 1;
    extract($arcRow, EXTR_SKIP);
    $msg = cn_substrR(TrimMsg($msg), 500);
    $username = cn_substrR(HtmlReplace($username,2), 20);
    if(empty($feedbacktype) || ($feedbacktype!='good' && $feedbacktype!='bad'))
    {
        $feedbacktype = 'feedback';
    }
    //儲存評論內容
    if(!empty($fid))
    {
        $row = $dsql->GetOne("SELECT username,msg from `#@__feedback` WHERE id ='$fid' ");
        $qmsg = '{quote}{content}'.$row['msg'].'{/content}{title}'.$row['username'].' 的原帖:{/title}{/quote}';
        $msg = addslashes($qmsg).$msg;
    }
    $ischeck = ($cfg_feedbackcheck=='Y' ? 0 : 1);
    $arctitle = addslashes(RemoveXSS($title));
    $typeid = intval($typeid);
    $feedbacktype = preg_replace("#[^0-9a-z]#i", "", $feedbacktype);
    $inquery = "INSERT INTO `#@__feedback`(`aid`,`typeid`,`username`,`arctitle`,`ip`,`ischeck`,`dtime`, `mid`,`bad`,`good`,`ftype`,`face`,`msg`)
                   VALUES ('$aid','$typeid','$username','$arctitle','$ip','$ischeck','$dtime', '{$cfg_ml->M_ID}','0','0','$feedbacktype','$face','$msg'); ";
    $rs = $dsql->ExecuteNoneQuery($inquery);
    if( !$rs )
    {
        ShowMsg("發表評論出錯了!",'-1');
        //echo $dslq->GetError();
        exit();
    }
    $newid = $dsql->GetLastID();
    /*給文章評分
    if($feedbacktype=='bad')
    {
        $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET scores=scores-{cfg_feedback_sub},badpost=badpost+1,lastpost='$dtime' WHERE id='$aid' ");
    }
    else if($feedbacktype=='good')
    {
        $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET scores=scores+{$cfg_feedback_add},goodpost=goodpost+1,lastpost='$dtime' WHERE id='$aid' ");
    }
    else
    {
        $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET scores=scores+1,lastpost='$dtime' WHERE id='$aid' ");
    }*/
    //給使用者增加積分
    if($cfg_ml->M_ID > 0)
    {
        #api{{
        if(defined('UC_API') && @include_once DEDEROOT.'/api/uc.func.php')
        {
            //同步積分
            uc_credit_note($cfg_ml->M_LoginID, $cfg_sendfb_scores);
            
            //推送事件
            $arcRow = GetOneArchive($aid);
            $feed['icon'] = 'thread';
            $feed['title_template'] = '<b>{username} 在網站發表了評論</b>';
            $feed['title_data'] = array('username' => $cfg_ml->M_UserName);
            $feed['body_template'] = '<b>{subject}</b><br>{message}';
            $url = !strstr($arcRow['arcurl'],'http://') ? ($cfg_basehost.$arcRow['arcurl']) : $arcRow['arcurl'];        
            $feed['body_data'] = array('subject' => "<a href=\"".$url."\">$arcRow[arctitle]</a>", 'message' => cn_substr(strip_tags(preg_replace("/\[.+?\]/is", '', $msg)), 150));
            $feed['images'][] = array('url' => $cfg_basehost.'/images/scores.gif', 'link'=> $cfg_basehost);
            uc_feed_note($cfg_ml->M_LoginID,$feed); unset($arcRow);
        }
        #/aip}}
        $dsql->ExecuteNoneQuery("UPDATE `#@__member` set scores=scores+{$cfg_sendfb_scores} WHERE mid='{$cfg_ml->M_ID}' ");
        $row = $dsql->GetOne("SELECT COUNT(*) AS nums FROM `#@__feedback` WHERE `mid`='".$cfg_ml->M_ID."'");
        $dsql->ExecuteNoneQuery("UPDATE `#@__member_tj` SET `feedback`='$row[nums]' WHERE `mid`='".$cfg_ml->M_ID."'");
    }
    $_SESSION['sedtime'] = time();
    if($ischeck==0)
    {
        ShowMsg("成功發表評論,但需稽核後才會顯示你的評論!",'-1');
        exit();
    }
    else
    {
        $spaceurl = '#';
        if($cfg_ml->M_ID > 0) $spaceurl = "{$cfg_memberurl}/index.php?uid=".urlencode($cfg_ml->M_LoginID);
        $id = $newid;
        $msg = stripslashes($msg);
        $msg = str_replace('<', '<', $msg);
        $msg = str_replace('>', '>', $msg);
		helper('smiley');
        $msg = RemoveXSS(Quote_replace(parseSmileys($msg, $cfg_cmspath.'/images/smiley')));
        //$msg = RemoveXSS(Quote_replace($msg));
        if($feedbacktype=='bad') $bgimg = 'cmt-bad.gif';
        else if($feedbacktype=='good') $bgimg = 'cmt-good.gif';
        else $bgimg = 'cmt-neu.gif';
        global $dsql, $aid, $pagesize, $cfg_templeturl;
        if($cfg_ml->M_ID==""){
             $mface=$cfg_cmspath."/member/templets/images/dfboy.png";
        } else {
          $row = $dsql->GetOne("SELECT face,sex FROM `#@__member` WHERE mid={$cfg_ml->M_ID} ");
            if(empty($row['face']))
            {
              if($row['sex']=="女") $mface=$cfg_cmspath."/member/templets/images/dfgirl.png";
              else $mface=$cfg_cmspath."/member/templets/images/dfboy.png";
            }
        }
    }
    exit();
}

/**
 *  讀取列表內容
 *
 * @param     int  $page  頁碼
 * @return    string
 */
function GetList($page=1)
{
    global $dsql, $aid, $pagesize, $cfg_templeturl,$cfg_cmspath;
    $querystring = "SELECT fb.*,mb.userid,mb.face as mface,mb.spacesta,mb.scores,mb.sex FROM `#@__feedback` fb
                 LEFT JOIN `#@__member` mb on mb.mid = fb.mid WHERE fb.aid='$aid' AND fb.ischeck='1' ORDER BY fb.id DESC";

    $row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__feedback` WHERE aid='$aid' AND ischeck='1' ");
    $totalcount = (empty($row['dd']) ? 0 : $row['dd']);
    $startNum = $pagesize * ($page-1);
    if($startNum > $totalcount)
    {
        echo "引數錯誤!";
        return $totalcount;
    }
    $str = '';
    $dsql->Execute('fb', $querystring." LIMIT $startNum, $pagesize ");
    while($fields = $dsql->GetArray('fb')){
        $str .= '<li> 
        <div class="clearfix">
         <span class="section_reply_photo"><img src="'.$fields['mface'].'" /></span> 
         <p class="f_col_DarkGray"><strong>'.$fields['username'].'</strong><span>'.date('Y-m-d H:i',$fields['dtime']).'</span></p> 
         <p class=" song "><span class="reply_time">'.$fields['msg'].'</span> </p> 
        </div> 
        </li>';
       
    }
    $res['totalcount'] = $totalcount;
    $res['msg'] = $str;
    return $res;       
}

/**
 *  獲取分頁列表
 *
 * @param     int  $pagesize  顯示條數
 * @param     int  $totalcount  總數
 * @return    string
 */
function GetPageList($pagesize, $totalcount,$showNum='5')
{
    global $page;
    $curpage = empty($page) ? 1 : intval($page);
    $allpage = ceil($totalcount / $pagesize);
    $pagestr = '';

    if($totalcount <= 0) 
    {
        return '';
    }
    $pagestr .= '<ul>';
   
    //根據當前頁計算前後頁數
    $leftPage_num  = ceil( $showNum / 2 );
    $rightPage_num = $showNum - $leftPage_num;

    //左邊顯示數為當前頁減左邊該顯示的數 例如總顯示7頁 當前頁是5  左邊最小為5-3  右邊為5+3
    $left  = $page - $leftPage_num;
    $left  = $left <= 0 ? 1 : $left;    //左邊最小不能小於1
    $right = $left + $showNum - 1;      //左邊加顯示頁數減1就是右邊顯示數
    $right = $right <= $allpage ? $right : $allpage;  //右邊最大不能大於總頁數
    $left  = $right - $showNum + 1 <= 0 ? 1 : $left;       //確定右邊再計算左邊,必須二次計算

    if ($page > 1) {
        $pagestr .= "<a href='#' onclick='LoadCommets(".($curpage-1).");'>上一頁</a>";
    }else{
        $pagestr .= "<a href='#' onclick='LoadCommets(".$curpage.");'>上一頁</a>";
    }

    for ($i = $left; $i <= $right; $i++)
    {   
        if($page == $i){
            $pagestr .= "<li><a href='#' class='now_page' onclick='LoadCommets(".$i.");'>".$i."</a></li>";
        }else{
            $pagestr .= "<li><a href='#' onclick='LoadCommets(".$i.");'>".$i."</a></li>";
        }
    }

    if ($page == $allPage) {
        $pagestr .= "<a href='#' onclick='LoadCommets(".$allPage.");'>下一頁</a>";
    }else{
        $pagestr .= "<a href='#' onclick='LoadCommets(".($curpage+1).");'>上一頁</a>";
    }
    
    $pagestr .= '</ul>';

    return $pagestr;

}
html:
<script type="text/javascript">
	$(function () {
		$pageno = "1";
		LoadCommets($pageno);
	});

	//獲取評論列表內容
	function LoadCommets(pageno) {
		aid = "{dede:field.id/}";
		$.post('/plus/feedback_ajax.php',{dopost:'getlist',aid:aid,page:pageno},function (res) {
			res = JSON.parse(res); 
			$('.clink_pager').html(res.page);
			$('.section_reply').html(res.msg);
		});
	}

	function changeAuthCode() {
	  var num =   new Date().getTime();
	  var rand = Math.round(Math.random() * 10000);
	  num = num + rand;
	  $('#ver_code').css('visibility','visible');
	  if ($("#vdimgck")[0]) {
	    $("#vdimgck")[0].src = "../include/vdimgck.php?tag=" + num;
	  }
	  return false; 
	}

	//提交前檢驗
	function vaildSend() {
		if($('textarea').val().length > 200){
			alert("你的評論是不是太長了?請填寫200字以內的評論。");
			return false;
		}
		if($('textarea').val() == ''){
			alert("評論內容不能為空!");
			return false;
		}
		if($("input[name='validate']").val() == ''){
			alert("請填寫驗證碼!");
			return false;
		}
	}
</script>	

<div class="comm"> 
<!-- 發表評論 /s -->
 <div class="comm_pub clearfix"> 
  <form action="/plus/feedback_ajax.php" method="post"  onsubmit="return vaildSend()"> 
    <input type="hidden" name="dopost" value="send" /> 
    <input type="hidden" name="comtype" value="comments" /> 
    <input type="hidden" name="aid" value="{dede:field.id/}"> 
    <input type="hidden" name="fid" id="feedbackfid" value="0" />
    <h4>評論(500):</h4> 
    <textarea name="msg" rows="4"></textarea>
    <p class="fr">
    	<img src="{dede:global.cfg_cmspath/}/include/vdimgck.php" id="validateimg" onclick="this.src=this.src+'?'" style="cursor: pointer;" alt="看不清?點選更換"/>
    	驗證碼: <input type="text" name="validate" size="4" style="text-transform:uppercase;border:solid 2px #ddd;border-radius: 3px;width: 60px;" /> 
    	<button >發表評論</button>
    </p>
  </form>
 </div>
 <!-- 發表評論 /e --> 
 
 <div class="comm_list clearfix ">
  <ul class="section_reply">
  	<!-- 評論內容 -->
  </ul>
  <div class="clink_pager" data-allpage="1">
  	<!-- 分頁 -->
  </div>
 </div>
 
</div> 
</div>

相關推薦

dede開發

DEDE 區分 PC / 手機端 js (手機端PC端對應跳轉) <script type="text/javascript"> function mobile_device_detect(url) { if(window.location.pathnam

dede系統開發筆記

func 頭條 mem ima lac keywords 引號 系統 日期 (dede)織夢系統二次開發記錄 --soulsjie 一、模板常用文件說明 模板文件都在文件夾templets下,我們以默認模板(default)為例,對模板文件結構進行分析: 首頁模板文件目錄

DedeCMS的開發之數據庫類操作

高亮顯示 delete from 進行 往裏面 參考 如何 tps .com 1.創建數據表 為了讓講解更加的貼合實際,天涯版主創建了一個名為"dede_test"的表,裏面就2個字段,1個id,作為唯一標識,另一個name作為名稱。然後往裏面添加測試數據,這個操作類似於A

(轉)DedeCMS開發聯動篩選功能的實現(含多選功能)

原文:http://www.dedejs.com/html/article-571-1.html點選開啟連結織夢預設的列表頁沒有篩選功能,但有時候我們做產品列表頁的時候,產品的欄位比較多,很多人都需要用到篩選功能,這樣可以讓使用者更方便的找到自己所需要的東西,實現這個聯動篩選

dede模版引擎開發(增加修改顯示)

add.php <?php require_once ("../include/common.inc.php");  //這個兩行就是連線資料成功了  $dsql.方法(執行SQL語句完畢); require_once DEDEINC."/arc.partview.

dedecms開發:dedetemplate.class.php 動態模板類

filename 外部 運行 mpi public esc val net color dedecms二次開發目錄點這個:dedecms二次開發教程目錄 核心類文件 include/dedetemplate.class.php 用途:用於非核心模塊的動態頁面或列表頁的模板解

VB.Net實現下CATIA開發方法

ror 點擊 doc struct cat inf 定義 then ports 源自網絡。 在visual studio(vb,c#,c++)下使用CATIA進行二次開發有如下特點: -->需要引用CATIA的對象庫 -->需要對象聲明(visua

呼叫中心系統OA開發

清單 二次開發 工作 註意 分辨率 傳真 新增 歷史 有效 1. 既有修改 分辨率顯示自適應調整 工作流數據調整 2. 呼叫中心 語音電話 l 新建任務 字段:任務主題、語音主題、提

(6)微信開發 之 微信文本消息接口實現

微信 odin link 消息處理 nal puts 算法 帳號 接口實現 p.p1 { margin: 13.0px 0.0px 13.0px 0.0px; text-align: justify; font: 16.0px SimSun } p.p2 { margin:

學習 MeteoInfo開發教程(一)

mat 沒有 組件 資源管理 img 教程 layer 添加 bbs 來自氣象家園:http://bbs.06climate.com/forum.php?mod=viewthread&tid=6631 按照教程,沒有太大問題,有些是對c#操作不熟悉導致。 1.添加d

學習 MeteoInfo開發教程(三)

開發教程 cnblogs false raw class .dll dll inf legend 1.breakList的問題 ((PolygonBreak) aLS.breakList[0]).DrawFill=false; 新的類庫將LegendScheme的brea

學習 MeteoInfo開發教程(四)

手動添加 map dem itl 數控 nas 字號 south title 教程四的問題不大。 1.private void AddMapFrame_ChinaSouthSea()、private void AddTitle()兩個函數和public Form1()函數並

Revit開發--Hello World

man dem users att try encoding cli 引用 類庫 部署完開發環境,就要進行每次學習新的技能,必寫的Hello World。 1、打開VS開發環境,新建一個項目類庫RevitDemo。 2、修改Class1名稱為Command。 3、在引

GTS-800開發基本流程總結

win highlight line names 關閉 參數 ble 名稱 速度 1、打開控制器         GT_Open 2、啟動伺服使能        GT_ClrSts 3、軸規劃位置清零       GT_SetPrfPos 4、軸運動模式        

AE開發,解決子窗體使用父窗體的AxControl控件

控件 con pri apc sha item object new end 在子窗體寫構造函數,然後再在父窗體按鈕點擊事件下寫 public frmIDW(AxMapControl axMapControl1) { Initia

學習MeteoInfo開發教程(十

odi 資源 level 無法訪問 .cn oid pub images bsp 1.添加新的Form窗體: 在解決方案資源管理器中,右鍵MeteoInfoDemo,“添加”,“Windows 窗體” 2.新窗體中添加好layersLegend1和Layout之後,要把la

一個星期實現開發,解決很多用戶無法解決的問題

解決方案 版本號 臨時性 開發 用戶 最近,收到一個用戶的體驗分享,他用一個星期完成對H3的從陌生到基本熟悉,再從基本屬性到基本二次自定義開發,對於他對我我們H3的支持,我們表示感謝~~以下是對該用戶的實例分享整理。-------------------------------------

java代碼生成器 快速開發平臺 開發 外包項目利器 springmvc SSM後臺框架源碼

java 下拉聯動 頭像裁剪 圖片裁剪 springmvc A 調用攝像頭拍照,自定義裁剪編輯頭像,頭像圖片色度調節 B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構建器 freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶

QGIS(PYTHON3.5、QT5.7.1、QGIS3)系列開發環境

qgis c++ python 二次開發 QGIS(PYTHON3.5、QT5.7.1、QGIS3系列二次開發環境,所有環境以虛擬機方式提供,以便研究或直接使用。 具體包括:獨立應用二次開發環境(WINDOWS,LINUX);android二次開發;獨立應用PYTHON二次開發環境(WI

AE開發中幾個功能速成歸納(符號設計器、創建要素、圖形編輯、屬性表編輯、緩沖區分析)

文件夾路徑 及其 基本框架 option 開啟 rgs database ets remove /* * 實習課上講進階功能所用文檔,因為趕時間從網上抄抄改改,湊合能用,記錄一下以備個人後用。 * * --------------------------------