我做的网站实际案例:Game For You,实况足球初始号(苹果IOS专用)
代码修改的不多,在网站后台,角色或武器是一个栏目,账号又是一个栏目。账号栏目里添加文章,可以看到下方出现角色或武器里的文章选项,即快速选择角色或武器。
如图:
图1 : 游戏栏目页面。
图2 : 账号栏目下文章修改页面。
操作如下:
1,模型添加,栏目添加,字段添加
添加新的模型,识别id:ch17,附加表:dede_addon17,频道名称:自定义账号模型。
栏目的添加形式为:某某游戏为父栏目,游戏角色,游戏武器为子栏目,这些栏目的模型为普通文章,再添加模型为“自定义账号模型”的子栏目“账号”。如图1,实况足球初始号为“自定义账号模型”。
“自定义账号模型”添加新的字段,数据字段名:plno,数据类型:多行文本。
2,archives_edit.htm里添加代码
路径:/dede/templets/archives_edit.htm
修改:在<?php PrintAutoFieldsEdit($cInfos['fieldset'],$addRow); ?> 代码下添加
注意:需要添加jquery.js,需要jquery环境
代码:
<tr> <td> <?php PrintAutoFieldsEdit($cInfos['fieldset'],$addRow); ?> </td> </tr> <tr> <td> <?php global $dsql; $cars = array(); $typenames = array(); $index = 0; $typeid = $arcRow['typeid']; $article_id = $arcRow["id"]; $sql = " SELECT plno From `dede_addon17` WHERE aid='$article_id' "; $result = $dsql->GetOne($sql); $plno = $result['plno']; $hasfieldss = preg_split("/[s,]+/",$plno); $sql = " SELECT reid From `dede_arctype` WHERE id='$typeid' "; $result = $dsql->GetOne($sql); $sql = "SELECT * From `dede_arctype` WHERE reid = ".$result["reid"]." AND id != '$typeid' "; $dsql->SetQuery($sql); $dsql->Execute(); while($arr = $dsql->GetArray()) { $cars[$index] = "SELECT * FROM `dede_archives` WHERE typeid =".$arr['id']." AND arcrank = 0 ;"; $typenames[$index] = $arr['typename']; $index++; } for($i=0;$i<=count($cars);$i++){ $myformItem = ""; $dsql->SetQuery($cars[$i]); $dsql->Execute(); while($arr = $dsql->GetArray()) { if(checkMyfieldsFun($hasfieldss,$arr["title"])){ $myformItem .= '<input type="checkbox" name="plnos" class="np" value="'.$arr["title"].'" checked="checked">'.$arr["title"].' '; }else{ $myformItem .= '<input type="checkbox" name="plnos" class="np" value="'.$arr["title"].'">'.$arr["title"].' '; } } $str .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"center\" width=\"120\">".$typenames[$i]."</td> <td width=\"1000\">".$myformItem."</td></tr></table>\r\n"; } echo $str; ?>
//添加jquery <script src="/template/default/js/jquery-1.4.2.min.js" type="text/javascript" charset="utf-8"></script> <script> $(function(){ $("input[name='plnos']").change(function(){ var value = ","; $("input[name='plnos']:checked").each(function(){ value += $(this).attr("value")+","; }) $("#plno").val(value); }) }) </script> </td> </tr>
3,archives_add.htm里添加代码,同上
路径:/dede/templets/archives_add.htm
修改:在<?php PrintAutoFieldsAdd($cInfos['fieldset']); ?>代码下添加
注意:需要添加jquery.js,需要jquery环境
代码:
<tr> <td><?php PrintAutoFieldsAdd($cInfos['fieldset']); ?></td> </tr> <tr> <td> <?php global $dsql; $cars = array(); $typenames = array(); $index = 0; $typeid = $cid; $sql = " SELECT reid From `dede_arctype` WHERE id='$typeid' "; $result = $dsql->GetOne($sql); $sql = "SELECT * From `dede_arctype` WHERE reid = ".$result["reid"]." AND id != '$typeid' "; $dsql->SetQuery($sql); $dsql->Execute(); while($arr = $dsql->GetArray()) { $cars[$index] = "SELECT * FROM `dede_archives` WHERE typeid =".$arr['id']." AND arcrank = 0 ;"; $typenames[$index] = $arr['typename']; $index++; } for($i=0;$i<=count($cars);$i++){ $myformItem = ""; $dsql->SetQuery($cars[$i]); $dsql->Execute(); while($arr = $dsql->GetArray()) { $myformItem .= '<input type="checkbox" name="plnos" class="np" value="'.$arr["title"].'">'.$arr["title"].' '; } $str .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"center\" width=\"120\">".$typenames[$i]."</td> <td width=\"1000\">".$myformItem."</td></tr></table>\r\n"; } echo $str; ?> //添加jquery <script src="/template/default/js/jquery-1.4.2.min.js" type="text/javascript" charset="utf-8"></script> <script> $(function(){ $("input[name='plnos']").change(function(){ var value = ","; $("input[name='plnos']:checked").each(function(){ value += $(this).attr("value")+","; }) $("#plno").val(value); }) }) </script> </td> </tr>
4,在extend.func.php里添加代码
路径:/include/extend.func.php
作用:步骤2里有需要的代码在此添加,判断是否是已选数据,缺失会报错。
修改:直接在代码最下方添加。
代码:
function checkMyfieldsFun($hasvalue,$title){ $myflag = false; for($j=0;$j<=count($hasvalue);$j++){ if($hasvalue[$j] == $title){ $myflag = true; } } return $myflag; }
5,修改arc.searchview.class.php文件代码
路径:/include/arc.searchview.class.php
作用:通过sql语句查找文章,和search.htm模板一起用于搜索功能。
修改:查找$query,替换掉$query的sql语句。
代码:
$str = ""; $arr = preg_split("/[\s,]+/", $this->Keyword); foreach ($arr as $value) { if($value!=""){ $str .= "AND plno LIKE '%,".$value.",%'"; } } $query = "SELECT * FROM `dede_addon17` AS a2 , `dede_archives` AS a1 WHERE a1.id = a2.aid ".$str;
6,在search.htm模板里面,在list标签里修改代码
路径:核心模板/default/search.htm
作用:用于直接利用存储的数据直接找到角色或武器。
参考代码:
{dede:list pagesize='999'} <tr align="center"> <td align="center" style="width:60px;">[field:title/]</td> <td align="left"> [field:plno runphp=yes] global $dsql; $plno = @me; $arr = preg_split("/[\s,]+/", $plno); $str = ""; foreach ($arr as $value) { if($value != "" && !empty($value)){ $sql = "SELECT litpic FROM `dede_archives` WHERE title = '".$value."' AND arcrank = 0;"; $result = $dsql->GetOne($sql); $litpic = $result['litpic']; if(empty($litpic) || $litpic==""){$litpic="/images/defaultpic.gif";} $str .= '<img src="'.$litpic.'" width=/"94/" height=/"110/" />'; } } @me = $str; [/field:plno] <br> </td> </tr> {/dede:list}
7,页面上通过jquery勾选,填入input[name='keyword']里
作用:通过点击快速选择,将角色填入value里。
参考代码:
<div data-v-c2d8f402="" class="item_show_in" onclick="thisImg(this)" date-title="男主"> <div class="ico_check"> <img src="/templets/default/images/ico_check.png"> </div> <div data-v-c2d8f402="" class="item_pic"><img data-v-c2d8f402="" src="/templets/default/images/1641866197482.jpg"></div> <div data-v-c2d8f402="" class="item_pic_des">男主</div> </div> <input type="hidden" name="keyword" id="keyword" value=""> <script type="text/javascript"> //获取点击查询的图片 function thisImg(obj) { $(obj).toggleClass("active"); var characters = ""; $("#panel-wrapper-hmp .item_show_in.active").each(function(){ characters += $(this).attr("date-title")+","; }) $("#keyword").attr("value",characters); } </script>
input[name='keyword']中的value内容用逗号隔开,例如:
<input type="hidden" name="keyword" id="keyword" value="男主,优菈,刻晴,尘世之锁,">