discuz学习笔记:以easyUI DataGrid为前台进行数据库增查删改操作
编辑和新增记录的过程,本来想从前台直接向discuz后台传送json格式表单数据,发现discuz的安全过滤十分严格,直接屏蔽了。所以只能以普通方式提交表单数据。
gtj_crud.php
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: bgtj.php cuibq $
*/
define("APPTYPEID", 101);
define("CURSCRIPT", "bgtj");
require "./source/class/class_core.php";
$discuz = C::app();
$discuz->reject_robot();
$modarray = array("bgtj", "bgtj_crud");
$mod = getgpc("mod");
$mod = (empty($mod) || !in_array($mod, $modarray)) ? "error" : $mod;
$discuz->init();
define("CURMODULE", $mod);
require DISCUZ_ROOT."./source/module/cat/bgtj_pub_crud.php";
//include_once template("cat/bgtj_publish");
?>sourceclass able able_bgtj.php
<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
* 工业产品表
* $Id: table_gycp.php
*/
if(!defined("IN_DISCUZ")) {
exit("Access Denied");
}
class table_bgtj extends discuz_table
{
public function __construct() {
$this->_table = "bgtj";
$this->_pk = "id";
parent::__construct();
}
public function fetch_all_by_displayorder() {
return DB::fetch_all("SELECT * FROM %t ORDER BY id ASC", array($this->_table), $this->_pk);
}
public function fetch_all_by_sql($start, $limit) {
return DB::fetch_all("SELECT * FROM %t ORDER BY id ASC".DB::limit($start, $limit), array($this->_table), $this->_pk);
}
//返回json格式数据
public function fetch_json_by_sql($start, $limit) {
$query = DB::query("SELECT * FROM %t ORDER BY id ASC".DB::limit($start, $limit), array($this->_table), $this->_pk);
$result = array();
// 记录数量
$row = DB::fetch_first("SELECT count(*) as cnt FROM %t ", array($this->_table), $this->_pk); //所有记录数量
$result["total"] = intval($row["cnt"]);
while($data = DB::fetch($query)){
$list[] = array(
"ID" => $data["ID"],
"XH" => $data["XH"],
"WT" => urlencode($data["WT"]),
"DA" => urlencode($data["DA"])
);
}
$result["rows"] = $list;
return urldecode(json_encode($result));
}
//public function fetch_by_id_username($id, $username, $adminid = 1) {
//return DB::fetch_first("SELECT * FROM %t WHERE id=%d", array($this->_table, $id, $adminid, $username));
//}
// 根据id删除一条记录
public function delete_by_id($id) {
$delcnt = DB::delete($this->_table, DB::field($this->_pk, $id)); // 返回删除记录数量,若为0表示删除失败
if ($delcnt == 0) {
$arr = array ("msg" => "wrong!", "success" => false);
}
else {
$arr = array ("msg" => "ok!", "success" => true);
}
return urldecode(json_encode($arr));
}
// 根据id 编辑一条数据
public function update_by_id($ID, $form_data) {
$ret = DB::update($this->_table, $form_data, "ID=$ID");
$logfile = fopen("log.txt", "w") or die("Unable to open file!");
fwrite($logfile, "ret:".$ret);
fclose($logfile);
if ($ret == 0) {
$arr = array ("msg" => "wrong!", "success" => false);
}
else {
$arr = array ("msg" => "ok!", "success" => true);
}
return urldecode(json_encode($arr));
}
// 插入一条数据
public function insert_data($form_data, $return_insert_id, $replace, $silent) {
$ret = DB::insert($this->_table, $form_data, $return_insert_id, $replace, $silent);
$logfile = fopen("log.txt", "w") or die("Unable to open file!");
fwrite($logfile, "ins result:".$ret);
fclose($logfile);
if ($ret == 0) {
$arr = array ("msg" => "wrong!", "success" => false);
}
else {
$arr = array ("msg" => "ok!", "success" => true);
}
return urldecode(json_encode($arr));
}
//public function delete_by_ids($ids, $adminid = 1) {
//if(($ids = dintval((array)$ids, true))) {
//DB::query("DELETE FROM %t WHERE id IN(%n)", array($this->_table, $ids), false, true);
//}
//}
//public function update_displayorder_by_id_username($id, $displayorder, $username, $adminid = 1) {
//if(($id = dintval((array)$id, true))) {
//DB::query("UPDATE %t SET displayorder=%d WHERE id IN(%n)", array($this->_table, $displayorder, $id, $adminid, $username), false, true);
//}
//}
//public function update_by_id_username($id, $data, $username, $adminid = 1) {
//if(($id = dintval($id, true)) && $data && is_array($data)) {
//$adminid = dintval($adminid);
//DB::update($this->_table, $data, DB::field($this->_pk, $id).")", true);
//}
//}
}
?>sourcemodulecatgtj_pub_crud.php
<?php
// mod文件只能被入口文件引用,不能直接访问
if(!defined("IN_DISCUZ")) {
exit("Access Denied");
}
require_once libfile("function/discuzcode");
// -------------------------------------------
// 分页
require_once libfile("function/home");
$perpage = empty($_GET["rows"])?0:intval($_GET["rows"]);//页码
$perpage = mob_perpage($perpage);
$page = empty($_GET["page"])?0:intval($_GET["page"]);//页码
if($page<1) $page = 1;
$start = ($page-1)*$perpage;//开始记录
//ckstart($start, $perpage);//分页判断
//$count = C::t("bgtj")->count();//所有记录数量
//$mpurl = "bgtj.php";
// ============================================
$action = $_GET["ac"];
$action = dhtmlspecialchars($action);
$ID = $_GET["ID"];
$ID = dhtmlspecialchars($ID);
//$querydata = C::t("bgtj")->fetch_all_by_sql($start, $perpage);
//$queryarr = array();
//foreach ($querydata as $rec) {
//$queryarr[] = $rec;
//}
//$multipage = multi($count, $perpage, $page, $mpurl);
//echo "aaa:".$action;
//exit;
//$get_json = C::t("bgtj")->fetch_json_by_sql($start, $perpage);
// 动作请求 ac=g
if ($action == "g"){
// 取得json格式数据
$get_json = C::t("bgtj")->fetch_json_by_sql($start, $perpage);
echo $get_json;
exit;
}
// 删除一条数据
elseif ($action == "d") {
echo C::t("bgtj")->delete_by_id($ID);
exit;
}
// 编辑一条数据
elseif ($action == "e") {
$XH = dhtmlspecialchars($_GET["XH"]);
$WT = dhtmlspecialchars($_GET["WT"]);
$DA = dhtmlspecialchars($_GET["DA"]);
$form_data = array();
$form_data["XH"] = $XH;
$form_data["WT"] = $WT;
$form_data["DA"] = $DA;
echo C::t("bgtj")->update_by_id($ID, $form_data);
exit;
}
// 插入一条数据
elseif ($action == "a") {
$XH = dhtmlspecialchars($_GET["XH"]);
$WT = dhtmlspecialchars($_GET["WT"]);
$DA = dhtmlspecialchars($_GET["DA"]);
$form_data = array();
$form_data["XH"] = $XH;
$form_data["WT"] = $WT;
$form_data["DA"] = $DA;
$return_insert_id = false;
$replace = false;
$silent = false;
echo C::t("bgtj")->insert_data($form_data, $return_insert_id, $replace, $silent);
exit;
}
else {
//显示发布表单
include_once template("cat/bgtj_crud");
}
?>emplatedefaultcatgtj_crud.htm
<!--//说明: 显示公共头部模板-->
<!--{template common/header_cat_edata}-->
<br>
<table id="dg" class="easyui-datagrid" style="width:1000px;height:400px"
toolbar="#toolbar" idField="ID"
data-options="
singleSelect:true,
collapsible:true,
url: "/upload/bgtj_crud.php?ac=g",
pagination:true,
method:"get",
"
title="公务员常识题库" iconCls="icon-save"
rownumbers="true" pagination="true">
<thead>
<tr>
<th field="ID" width="50">ID</th>
<th field="XH" width="50">序号</th>
<th field="WT" width="500" align="left">问题</th>
<th field="DA" width="400" align="left">答案</th>
</tr>
</thead>
</table>
<div id="toolbar">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newUser()">新增</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editUser()">编辑</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyUser()">删除</a>
</div>
<div id="dlg" class="easyui-dialog" style="width:400px"
closed="true" buttons="#dlg-buttons">
<form id="fm" method="post" novalidate style="margin:0;padding:20px 50px">
<div style="margin-bottom:20px;font-size:14px;border-bottom:1px solid #ccc">问题</div>
<div style="margin-bottom:10px">
<input name="ID" class="easyui-textbox" required="true" label="ID:" style="width:100%">
</div>
<div style="margin-bottom:10px">
<input name="XH" class="easyui-textbox" required="true" label="序号:" style="width:100%">
</div>
<div style="margin-bottom:10px">
<input name="WT" class="easyui-textbox" required="true" label="问题:" style="width:100%">
</div>
<div style="margin-bottom:10px">
<input name="DA" class="easyui-textbox" required="true" label="答案:" style="width:100%">
</div>
</form>
</div>
<div id="dlg-buttons">
<a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveUser()" style="width:90px">保存</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$("#dlg").dialog("close")" style="width:90px">取消</a>
</div>
<script type="text/javascript">
var url;
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || "");
} else {
o[this.name] = this.value || "";
}
});
return o;
};
function newUser(){
$("#dlg").dialog("open").dialog("center").dialog("setTitle","新增");
$("#fm").form("clear");
url = "/upload/bgtj_crud.php?ac=a";
}
function editUser(){
var row = $("#dg").datagrid("getSelected");
if (row){
$("#dlg").dialog("open").dialog("center").dialog("setTitle","编辑");
$("#fm").form("load",row);
url = "/upload/bgtj_crud.php?ac=e&ID="+row.ID;
}
}
function saveUser(){
$("#fm").form("submit",{
url: url,
onSubmit: function(){
return $(this).form("validate");
},
success: function(result){
var result = eval("("+result+")");
if (result.errorMsg){
$.messager.show({
title: "Error",
msg: result.errorMsg
});
} else {
$("#dlg").dialog("close"); // close the dialog
$("#dg").datagrid("reload"); // reload the user data
}
}
});
}
function destroyUser(){
var row = $("#dg").datagrid("getSelected");
if (row){
$.messager.confirm("请确认","您真的要删除这条记录吗?",function(r){
if (r){
$.post("/upload/bgtj_crud.php?ac=d",{ID:row.ID},function(result){
if (result.success){
$("#dg").datagrid("reload"); // reload the user data
} else {
$.messager.show({ // show error message
title: "出错啦",
msg: result.errorMsg
});
}
},"json");
}
});
}
}
</script>
<!--//说明: 显示公共尾部模板-->
<!--{template common/footer}-->emplatedefaultcommonheader_cat.htm
<!--{subtemplate common/header_common}-->
<meta name="application-name" content="$_G["setting"]["bbname"]" />
<meta name="msapplication-tooltip" content="$_G["setting"]["bbname"]" />
<!--{if $_G["setting"]["portalstatus"]}--><meta name="msapplication-task" content="name=$_G["setting"]["navs"][1]["navname"];action-uri={echo !empty($_G["setting"]["domain"]["app"]["portal"]) ? "http://".$_G["setting"]["domain"]["app"]["portal"] : $_G[siteurl]."portal.php"};icon-uri={$_G[siteurl]}{IMGDIR}/portal.ico" /><!--{/if}-->
<meta name="msapplication-task" content="name=$_G["setting"]["navs"][2]["navname"];action-uri={echo !empty($_G["setting"]["domain"]["app"]["forum"]) ? "http://".$_G["setting"]["domain"]["app"]["forum"] : $_G[siteurl]."forum.php"};icon-uri={$_G[siteurl]}{IMGDIR}/bbs.ico" />
<!--{if $_G["setting"]["groupstatus"]}--><meta name="msapplication-task" content="name=$_G["setting"]["navs"][3]["navname"];action-uri={echo !empty($_G["setting"]["domain"]["app"]["group"]) ? "http://".$_G["setting"]["domain"]["app"]["group"] : $_G[siteurl]."group.php"};icon-uri={$_G[siteurl]}{IMGDIR}/group.ico" /><!--{/if}-->
<!--{if helper_access::check_module("feed")}--><meta name="msapplication-task" content="name=$_G["setting"]["navs"][4]["navname"];action-uri={echo !empty($_G["setting"]["domain"]["app"]["home"]) ? "http://".$_G["setting"]["domain"]["app"]["home"] : $_G[siteurl]."home.php"};icon-uri={$_G[siteurl]}{IMGDIR}/home.ico" /><!--{/if}-->
<!--{if $_G["basescript"] == "forum" && $_G["setting"]["archiver"]}-->
<link rel="archives" title="$_G["setting"]["bbname"]" href="{$_G[siteurl]}archiver/" />
<!--{/if}-->
<!--{if !empty($rsshead)}-->$rsshead<!--{/if}-->
<!--{if widthauto()}-->
<link rel="stylesheet" id="css_widthauto" type="text/css" href="{$_G["setting"]["csspath"]}{STYLEID}_widthauto.css?{VERHASH}" />
<script type="text/javascript">HTMLNODE.className += " widthauto"</script>
<!--{/if}-->
<!--{if $_G["basescript"] == "forum" || $_G["basescript"] == "group"}-->
<script type="text/javascript" src="{$_G[setting][jspath]}forum.js?{VERHASH}"></script>
<!--{elseif $_G["basescript"] == "home" || $_G["basescript"] == "userapp"}-->
<script type="text/javascript" src="{$_G[setting][jspath]}home.js?{VERHASH}"></script>
<!--{elseif $_G["basescript"] == "portal"}-->
<script type="text/javascript" src="{$_G[setting][jspath]}portal.js?{VERHASH}"></script>
<!--{/if}-->
<!--{if $_G["basescript"] != "portal" && $_GET["diy"] == "yes" && check_diy_perm($topic)}-->
<script type="text/javascript" src="{$_G[setting][jspath]}portal.js?{VERHASH}"></script>
<!--{/if}-->
<!--{if $_GET["diy"] == "yes" && check_diy_perm($topic)}-->
<link rel="stylesheet" type="text/css" id="diy_common" href="{$_G["setting"]["csspath"]}{STYLEID}_css_diy.css?{VERHASH}" />
<!--{/if}-->
<!--cbq-->
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="./easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="./easyui/themes/icon.css">
<link rel="stylesheet" type="text/css" href="./easyui/themes/color.css">
<link rel="stylesheet" type="text/css" href="./easyui/demo/demo.css">
<script type="text/javascript" src="./easyui/jquery.min.js"></script>
<script type="text/javascript" src="./easyui/jquery.easyui.min.js"></script>
<!--/cbq-->
</head>
<body id="nv_{$_G[basescript]}" class="pg_{CURMODULE}{if $_G["basescript"] === "portal" && CURMODULE === "list" && !empty($cat)} {$cat["bodycss"]}{/if}" onkeydown="if(event.keyCode==27) return false;">
<div id="append_parent"></div><div id="ajaxwaitid"></div>
<!--{if $_GET["diy"] == "yes" && check_diy_perm($topic)}-->
<!--{template common/header_diy}-->
<!--{/if}-->
<!--{if check_diy_perm($topic)}-->
<!--{template common/header_diynav}-->
<!--{/if}-->
<!--{if CURMODULE == "topic" && $topic && empty($topic["useheader"]) && check_diy_perm($topic)}-->
$diynav
<!--{/if}-->
<!--{if empty($topic) || $topic["useheader"]}-->
<!--{if $_G["setting"]["mobile"]["allowmobile"] && (!$_G["setting"]["cacheindexlife"] && !$_G["setting"]["cachethreadon"] || $_G["uid"]) && ($_GET["diy"] != "yes" || !$_GET["inajax"]) && ($_G["mobile"] != "" && $_G["cookie"]["mobile"] == "" && $_GET["mobile"] != "no")}-->
<div class="xi1 bm bm_c">
{lang your_mobile_browser}<a href="{$_G["siteurl"]}forum.php?mobile=yes">{lang go_to_mobile}</a> <span class="xg1">|</span> <a href="$_G["setting"]["mobile"]["nomobileurl"]">{lang to_be_continue}</a>
</div>
<!--{/if}-->
<!--{if $_G["setting"]["shortcut"] && $_G["member"][credits] >= $_G["setting"]["shortcut"]}-->
<div id="shortcut">
<span><a href="javascript:;" id="shortcutcloseid" title="{lang close}">{lang close}</a></span>
{lang shortcut_notice}
<a href="javascript:;" id="shortcuttip">{lang shortcut_add}</a>
</div>
<script type="text/javascript">setTimeout(setShortcut, 2000);</script>
<!--{/if}-->
<div id="toptb" class="cl">
<!--{hook/global_cpnav_top}-->
<div class="wp">
<div class="z">
<!--{loop $_G["setting"]["topnavs"][0] $nav}-->
<!--{if $nav["available"] && (!$nav["level"] || ($nav["level"] == 1 && $_G["uid"]) || ($nav["level"] == 2 && $_G["adminid"] > 0) || ($nav["level"] == 3 && $_G["adminid"] == 1))}-->$nav[code]<!--{/if}-->
<!--{/loop}-->
<!--{hook/global_cpnav_extra1}-->
</div>
<div class="y">
<a id="switchblind" href="javascript:;" onclick="toggleBlind(this)" title="{lang switch_blind}" class="switchblind">{lang switch_blind}</a>
<!--{hook/global_cpnav_extra2}-->
<!--{loop $_G["setting"]["topnavs"][1] $nav}-->
<!--{if $nav["available"] && (!$nav["level"] || ($nav["level"] == 1 && $_G["uid"]) || ($nav["level"] == 2 && $_G["adminid"] > 0) || ($nav["level"] == 3 && $_G["adminid"] == 1))}-->$nav[code]<!--{/if}-->
<!--{/loop}-->
<!--{if empty($_G["disabledwidthauto"]) && $_G["setting"]["switchwidthauto"]}-->
<a href="javascript:;" id="switchwidth" onclick="widthauto(this)" title="{if widthauto()}{lang switch_narrow}{else}{lang switch_wide}{/if}" class="switchwidth"><!--{if widthauto()}-->{lang switch_narrow}<!--{else}-->{lang switch_wide}<!--{/if}--></a>
<!--{/if}-->
<!--{if $_G["uid"] && !empty($_G["style"]["extstyle"])}--><a id="sslct" href="javascript:;" onmouseover="delayShow(this, function() {showMenu({"ctrlid":"sslct","pos":"34!"})});">{lang changestyle}</a><!--{/if}-->
<!--{if check_diy_perm($topic)}-->
$diynav
<!--{/if}-->
</div>
</div>
</div>
<!--{if !IS_ROBOT}-->
<!--{if $_G["uid"]}-->
<ul id="myprompt_menu" class="p_pop" style="display: none;">
<li><a href="home.php?mod=space&do=pm" id="pm_ntc" style="background-repeat: no-repeat; background-position: 0 50%;"><em class="prompt_news{if empty($_G[member][newpm])}_0{/if}"></em>{lang pm_center}</a></li>
<li><a href="home.php?mod=follow&do=follower"><em class="prompt_follower{if empty($_G[member][newprompt_num][follower])}_0{/if}"></em><!--{lang notice_interactive_follower}-->{if $_G[member][newprompt_num][follower]}($_G[member][newprompt_num][follower]){/if}</a></li>
<!--{if $_G[member][newprompt] && $_G[member][newprompt_num][follow]}-->
<li><a href="home.php?mod=follow"><em class="prompt_concern"></em><!--{lang notice_interactive_follow}-->($_G[member][newprompt_num][follow])</a></li>
<!--{/if}-->
<!--{if $_G[member][newprompt]}-->
<!--{loop $_G["member"]["category_num"] $key $val}-->
<li><a href="home.php?mod=space&do=notice&view=$key"><em class="notice_$key"></em><!--{echo lang("template", "notice_".$key)}-->(<span class="rq">$val</span>)</a></li>
<!--{/loop}-->
<!--{/if}-->
<!--{if empty($_G["cookie"]["ignore_notice"])}-->
<li class="ignore_noticeli"><a href="javascript:;" onclick="setcookie("ignore_notice", 1);hideMenu("myprompt_menu")" title="{lang temporarily_to_remind}"><em class="ignore_notice"></em></a></li>
<!--{/if}-->
</ul>
<!--{/if}-->
<!--{if $_G["uid"] && !empty($_G["style"]["extstyle"])}-->
<div id="sslct_menu" class="cl p_pop" style="display: none;">
<!--{if !$_G[style][defaultextstyle]}--><span class="sslct_btn" onclick="extstyle("")" title="{lang default}"><i></i></span><!--{/if}-->
<!--{loop $_G["style"]["extstyle"] $extstyle}-->
<span class="sslct_btn" onclick="extstyle("$extstyle[0]")" title="$extstyle[1]"><i style="background:$extstyle[2]"></i></span>
<!--{/loop}-->
</div>
<!--{/if}-->
<!--{if $_G["uid"]}-->
<ul id="myitem_menu" class="p_pop" style="display: none;">
<li><a href="forum.php?mod=guide&view=my">{lang mypost}</a></li>
<li><a href="home.php?mod=space&do=favorite&view=me">{lang favorite}</a></li>
<li><a href="home.php?mod=space&do=friend">{lang friends}</a></li>
<!--{hook/global_myitem_extra}-->
</ul>
<!--{/if}-->
<!--{subtemplate common/header_qmenu}-->
<!--{/if}-->
<!--{ad/headerbanner/wp a_h}-->
<div id="hd">
<div class="wp">
<div class="hdc cl">
<!--{eval $mnid = getcurrentnav();}-->
<h2><!--{if !isset($_G["setting"]["navlogos"][$mnid])}--><a href="{if $_G["setting"]["domain"]["app"]["default"]}http://{$_G["setting"]["domain"]["app"]["default"]}/{else}./{/if}" title="$_G["setting"]["bbname"]">{$_G["style"]["boardlogo"]}</a><!--{else}-->$_G["setting"]["navlogos"][$mnid]<!--{/if}--></h2>
<!--{template common/header_userstatus}-->
</div>
<div id="nv">
<a href="javascript:;" id="qmenu" onmouseover="delayShow(this, function () {showMenu({"ctrlid":"qmenu","pos":"34!","ctrlclass":"a","duration":2});showForummenu($_G[fid]);})">{lang my_nav}</a>
<ul>
<!--{loop $_G["setting"]["navs"] $nav}-->
<!--{if $nav["available"] && (!$nav["level"] || ($nav["level"] == 1 && $_G["uid"]) || ($nav["level"] == 2 && $_G["adminid"] > 0) || ($nav["level"] == 3 && $_G["adminid"] == 1))}--><li {if $mnid == $nav[navid]}class="a" {/if}$nav[nav]></li><!--{/if}-->
<!--{/loop}-->
</ul>
<!--{hook/global_nav_extra}-->
</div>
<!--{if !empty($_G["setting"]["plugins"]["jsmenu"])}-->
<ul class="p_pop h_pop" id="plugin_menu" style="display: none">
<!--{loop $_G["setting"]["plugins"]["jsmenu"] $module}-->
<!--{if !$module["adminid"] || ($module["adminid"] && $_G["adminid"] > 0 && $module["adminid"] >= $_G["adminid"])}-->
<li>$module[url]</li>
<!--{/if}-->
<!--{/loop}-->
</ul>
<!--{/if}-->
$_G[setting][menunavs]
<div id="mu" class="cl">
<!--{if $_G["setting"]["subnavs"]}-->
<!--{loop $_G[setting][subnavs] $navid $subnav}-->
<!--{if $_G["setting"]["navsubhover"] || $mnid == $navid}-->
<ul class="cl {if $mnid == $navid}current{/if}" id="snav_$navid" style="display:{if $mnid != $navid}none{/if}">
$subnav
</ul>
<!--{/if}-->
<!--{/loop}-->
<!--{/if}-->
</div>
<!--{ad/subnavbanner/a_mu}-->
<!--{subtemplate common/pubsearchform}-->
</div>
</div>
<!--{hook/global_header}-->
<!--{/if}-->
<div id="wp" class="wp">
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
