录入商品属性的时候,如果碰到笔记本,手机等属性非常多的商品时。能按照分组显示属性可有效防止头晕。
实现方法很简单,只需要修改两个函数就行。
打开文件:admin\includes\lib_goods.php
找到以下代码:
function get_attr_list($cat_id, $goods_id = 0)
{
if (empty($cat_id))
{
return array();
}
// 查询属性值及商品的属性值
$sql = "SELECT a.attr_id, a.attr_name, a.attr_input_type, a.attr_type, a.attr_values, v.attr_value, v.attr_price ".
"FROM " .$GLOBALS['ecs']->table('attribute'). " AS a ".
"LEFT JOIN " .$GLOBALS['ecs']->table('goods_attr'). " AS v ".
"ON v.attr_id = a.attr_id AND v.goods_id = '$goods_id' ".
"WHERE a.cat_id = " . intval($cat_id) ." OR a.cat_id = 0 ".
"ORDER BY a.sort_order, a.attr_type, a.attr_id, v.attr_price, v.goods_attr_id";
$row = $GLOBALS['db']->GetAll($sql);
return $row;
}
替换为:
function get_attr_list($cat_id, $goods_id = 0)
{
if (empty($cat_id))
{
return array();
}
// 查询属性值及商品的属性值
$sql = "SELECT a.attr_id, a.attr_name, a.attr_input_type, a.attr_type, a.attr_values, v.attr_value, v.attr_price, a.attr_group ".
"FROM " .$GLOBALS['ecs']->table('attribute'). " AS a ".
"LEFT JOIN " .$GLOBALS['ecs']->table('goods_attr'). " AS v ".
"ON v.attr_id = a.attr_id AND v.goods_id = '$goods_id' ".
"WHERE a.cat_id = " . intval($cat_id) ." OR a.cat_id = 0 ".
"ORDER BY a.sort_order, a.attr_type, a.attr_id, v.attr_price, v.goods_attr_id";
$row = $GLOBALS['db']->GetAll($sql);
return $row;
}
查找以下代码:
function build_attr_html($cat_id, $goods_id = 0)
{
$attr = get_attr_list($cat_id, $goods_id);
$html = '</pre>
<table id="attrTable" width="100%">'; $spec = 0; foreach ($attr AS $key => $val) { $html .= "
<tbody>
<tr>
<td class="label">"; if ($val['attr_type'] == 1 || $val['attr_type'] == 2) { $html .= ($spec != $val['attr_id']) ? "<a onclick="addSpec(this)" href="javascript:;">[+]</a>" : "<a onclick="removeSpec(this)" href="javascript:;">[-]</a>"; $spec = $val['attr_id']; } $html .= "$val[attr_name]</td>
<td><input type="hidden" name="attr_id_list[]" value="$val[attr_id]" />"; if ($val['attr_input_type'] == 0) { $html .= '<input type="text" name="attr_value_list[]" value="' .htmlspecialchars($val['attr_value']). '" size="40" /> '; } elseif ($val['attr_input_type'] == 2) { $html .= '<textarea name="attr_value_list[]" rows="3" cols="40">' .htmlspecialchars($val['attr_value']). '</textarea>'; } else { $html .= '
<select name="attr_value_list[]">'; $html .= '<option value="">' .$GLOBALS['_LANG']['select_please']. '</option>'; $attr_values = explode("\n", $val['attr_values']); foreach ($attr_values AS $opt) { $opt = trim(htmlspecialchars($opt)); $html .= ($val['attr_value'] != $opt) ? '<option value="' . $opt . '">' . $opt . '</option>' : '<option selected="selected" value="' . $opt . '">' . $opt . '</option>'; } $html .= '</select>'; } $html .= ($val['attr_type'] == 1 || $val['attr_type'] == 2) ? $GLOBALS['_LANG']['spec_price'].' <input type="text" name="attr_price_list[]" value="' . $val['attr_price'] . '" size="5" maxlength="10" />' : ' <input type="hidden" name="attr_price_list[]" value="0" />'; $html .= '</td>
</tr>
'; } $html .= '</tbody>
</table>
'; return $html;
}
替换为:
function build_attr_html($cat_id, $goods_id = 0)
{
$attr = get_attr_list($cat_id, $goods_id);
$html = '</pre>
<table id="attrTable" width="100%">'; $spec = 0; $attr_groups = get_attr_groups($cat_id); if (count($attr_groups) > 1) { foreach ($attr as $value) { $attrs[$value['attr_group']][] = $value; } foreach ($attrs as $cid => $attr) { $html .= "
<tbody>
<tr>
<td class="label" style="color: #f00; padding-top: 20px;">".$attr_groups[$cid]."</td>
<td> </td>
</tr>
"; foreach ($attr AS $key => $val) { $html .= "
<tr>
<td class="label">"; if ($val['attr_type'] == 1 || $val['attr_type'] == 2) { $html .= ($spec != $val['attr_id']) ? "<a onclick="addSpec(this)" href="javascript:;">[+]</a>" : "<a onclick="removeSpec(this)" href="javascript:;">[-]</a>"; $spec = $val['attr_id']; } $html .= "$val[attr_name]</td>
<td><input type="hidden" name="attr_id_list[]" value="$val[attr_id]" />"; if ($val['attr_input_type'] == 0) { $html .= '<input type="text" name="attr_value_list[]" value="' .htmlspecialchars($val['attr_value']). '" size="40" /> '; } elseif ($val['attr_input_type'] == 2) { $html .= '<textarea name="attr_value_list[]" rows="3" cols="40">' .htmlspecialchars($val['attr_value']). '</textarea>'; } else { $html .= '
<select name="attr_value_list[]">'; $html .= '<option value="">' .$GLOBALS['_LANG']['select_please']. '</option>'; $attr_values = explode("\n", $val['attr_values']); foreach ($attr_values AS $opt) { $opt = trim(htmlspecialchars($opt)); $html .= ($val['attr_value'] != $opt) ? '<option value="' . $opt . '">' . $opt . '</option>' : '<option selected="selected" value="' . $opt . '">' . $opt . '</option>'; } $html .= '</select>'; } $html .= ($val['attr_type'] == 1 || $val['attr_type'] == 2) ? $GLOBALS['_LANG']['spec_price'].' <input type="text" name="attr_price_list[]" value="' . $val['attr_price'] . '" size="5" maxlength="10" />' : ' <input type="hidden" name="attr_price_list[]" value="0" />'; $html .= '</td>
'; } } } else { foreach ($attr AS $key => $val) { $html .= "
<td class="label">"; if ($val['attr_type'] == 1 || $val['attr_type'] == 2) { $html .= ($spec != $val['attr_id']) ? "<a onclick="addSpec(this)" href="javascript:;">[+]</a>" : "<a onclick="removeSpec(this)" href="javascript:;">[-]</a>"; $spec = $val['attr_id']; } $html .= "$val[attr_name]</td>
<td><input type="hidden" name="attr_id_list[]" value="$val[attr_id]" />"; if ($val['attr_input_type'] == 0) { $html .= '<input type="text" name="attr_value_list[]" value="' .htmlspecialchars($val['attr_value']). '" size="40" /> '; } elseif ($val['attr_input_type'] == 2) { $html .= '<textarea name="attr_value_list[]" rows="3" cols="40">' .htmlspecialchars($val['attr_value']). '</textarea>'; } else { $html .= '
<select name="attr_value_list[]">'; $html .= '<option value="">' .$GLOBALS['_LANG']['select_please']. '</option>'; $attr_values = explode("\n", $val['attr_values']); foreach ($attr_values AS $opt) { $opt = trim(htmlspecialchars($opt)); $html .= ($val['attr_value'] != $opt) ? '<option value="' . $opt . '">' . $opt . '</option>' : '<option selected="selected" value="' . $opt . '">' . $opt . '</option>'; } $html .= '</select>'; } $html .= ($val['attr_type'] == 1 || $val['attr_type'] == 2) ? $GLOBALS['_LANG']['spec_price'].' <input type="text" name="attr_price_list[]" value="' . $val['attr_price'] . '" size="5" maxlength="10" />' : ' <input type="hidden" name="attr_price_list[]" value="0" />'; $html .= '</td>
'; } } $html .= '</tr>
</tbody>
</table>
'; return $html;
}

1 条评论。