使用過(guò)程中,發(fā)現(xiàn)級(jí)別只能單選,有時(shí)會(huì)出現(xiàn)一條信息可以是新品,也可以是推薦或熱門等…
當(dāng)前位置:網(wǎng)站首頁(yè) > 幫助中心 > 正文
DESTOON程序很不錯(cuò),使用過(guò)程中,發(fā)現(xiàn)級(jí)別只能單選,有時(shí)會(huì)出現(xiàn)一條信息可以是新品,也可以是推薦或熱門等,或者需要實(shí)現(xiàn)一條數(shù)據(jù)在多處調(diào)用。
碰巧這次有機(jī)會(huì),我就二開這個(gè)功能,讓級(jí)別選項(xiàng)可以多選,且修改后,tag模板標(biāo)簽level條件使用不用做任何更改,還是和之前一樣1到9。
第一步,把相應(yīng)數(shù)據(jù)表中的level列類型修改為SMALLINT;
第二步,修改edit.tpl.php,在標(biāo)題欄的下方增加代碼:
<tr> <td class="tl">級(jí)別</td> <td><?php echo level_checkbox('post[level][]', $level);?></td> </tr>
第三步,修改index.tpl.php,把原來(lái)顯示級(jí)別的代碼替換下方代碼:
<?php echo level_icon($v['level']); ?>第四步,修改相應(yīng)功能模塊的類文件(*.class.php),我用module/buy/buy.class.php示例,在set方法中增加代碼:
unset($post['content']); // 找到這行,在下方添加 $post['level'] = level_post(empty($post['level']) ? 0 : $post['level']);
第五步,修改get_list方法:
global $MOD, $pages, $page, $pagesize, $offset, $items, $sum; // 找到上面那行,在下方添加 $condition = level_to_pow_sql($condition);第六步,修改level方法,這個(gè)方法代碼較少,我全部復(fù)制過(guò)來(lái)了:
$itemids = is_array($itemid) ? implode(',', $itemid) : $itemid; $level = level_pow($level); DB::query("UPDATE {$this->table} SET level=$level WHERE itemid IN ($itemids)");
第七步,把上面使用的函數(shù)加到global.func.php文件中去,函數(shù)代碼如下:
/** * 級(jí)別-多選 * * @param $name * @param int $level * @return string */ function level_checkbox($name, $level = 0) { global $MOD, $L; $names = isset($MOD['level']) && $MOD['level'] ? $MOD['level'] : ''; $names = $names ? explode('|', trim($names)) : array(); $select = ''; for($i = 1; $i < 10; $i++) { $val = level_pow($i); $n = isset($names[$i-1]) ? ' '.$names[$i-1] : ''; $select .= '<label><input type="checkbox" name="'.$name.'" value="'.$val.'" '.(($level & $val) ? ' checked' : '').'>'.$i.' '.$L['level'].$n.' </label>'; } return $select; } /** * 普通級(jí)別轉(zhuǎn)位運(yùn)算 * * @param int $level * @return float|int */ function level_pow($level = 0) { if (!$level) { return 0; } return pow(2, $level - 1); } /** * 級(jí)別表單提交 * @param $level * @return float|int */ function level_post($level) { if (empty($level)) { return 0; } if (is_array($level)) { return array_sum($level); } return $level; } /** * SQL中級(jí)別條件轉(zhuǎn)換為位運(yùn)算 * * @param string $condition * @return string|string[] */ function level_to_pow_sql($condition = '') { $is_level = preg_match("/level(?:\s?=\s?)([1-9])/i", $condition, $matches); if ($is_level && !empty($matches[1])) { $condition = str_replace($matches[0], '`level`&'.level_pow($matches[1]).'>0', $condition); } return $condition; } /** * 顯示級(jí)別ICON * @param $levels * @param int $num 顯示數(shù)量 * @return string */ function level_icon($levels, $num = 0) { $icon = ''; if (!$levels) { return $icon; } for($i = 1; $i < 10; $i++) { $val = level_pow($i); if ($levels & $val) { $icon .= "<a href=\"javascript:;\" onclick=\"Dq('level',{$i});\"><img src=\"admin/image/level_{$i}.gif\" title=\"{$i}級(jí)\" alt=\"{$i}級(jí)\"/></a>"; if ($num >= $i) { break; } } } return $icon; }
至此,刷新網(wǎng)站后臺(tái),應(yīng)該能看到如下圖的效果了!
添加或編輯效果圖
列表效果圖
客服
熱線
133 9152 9507
7*24小時(shí)客服服務(wù)熱線