Destoon 後台可建立自定義字段,前台需開發對應搜索功能。本文提供基於 global.fun.php 擴展函數 + 模板調用的完整實現方案。
include/global.fun.php)// 過濾空白字符
function loseSpace($pcon) {
$pcon = preg_replace("/ /", "", $pcon);
$pcon = preg_replace("/ /", "", $pcon);
$pcon = preg_replace("/\r\n/", "", $pcon);
$pcon = str_replace(chr(13), "", $pcon);
$pcon = str_replace(chr(10), "", $pcon);
$pcon = str_replace(chr(9), "", $pcon);
return $pcon;
}
// 生成下拉搜索框
function select_search($name, $tb, $fid) {
global $db;
$title = '<select name="' . $name . '"><option value="">所有</option>';
$r = $db->get_one("SELECT option_value FROM {$db->pre}fields WHERE name='$name' and tb='$tb'");
$option_value = loseSpace($r["option_value"]);
$ps = explode("*", $option_value); // * 分隔選項組
foreach ($ps as $s) {
if (!$s) continue;
list($num, $word) = explode("|", $s); // | 分隔值與標籤
$result[$num] = $word;
}
foreach ($result as $n => $v) {
$selected = ($n == $fid) ? ' selected' : '';
$title .= "<option value=\"$n\"$selected>$v</option>";
}
$title .= "</select>";
return $title;
}
module/sell/search.inc.php)// 接收參數
$chengse = isset($chengse) ? intval($chengse) : 0;
// 構建查詢條件
if ($chengse) $condition .= " AND chengse=$chengse";
{select_search(chengse,sell,$chengse)}
chengse:字段名(對應 fields 表 name)sell:模型標識(對應 tb)$chengse:當前選中值(保持狀態)fields 表存儲字段配置,option_value 格式:1|紅色*2|藍色*3|綠色loseSpace() 清理存儲時的空白干擾select_search() 解析配置生成 <select>,自動標記 selected$_GET['chengse'] 追加 SQL 條件同理可實現多字段組合搜索、範圍搜索(價格區間)、關鍵詞模糊搜索,核心均為「函數生成表單 + 控制器構建條件」。