ECShop后台商品属性按分组显示功能

录入商品属性的时候,如果碰到笔记本,手机等属性非常多的商品时。能按照分组显示属性可有效防止头晕。

修改后显示样式如下:

实现方法很简单,只需要修改两个函数就行。
打开文件: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 =&gt; $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) &gt; 1) { foreach ($attr as $value) { $attrs[$value['attr_group']][] = $value; } foreach ($attrs as $cid =&gt; $attr) { $html .= "
<tbody>
<tr>
<td class="label" style="color: #f00; padding-top: 20px;">".$attr_groups[$cid]."</td>
<td> </td>
</tr>
"; foreach ($attr AS $key =&gt; $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 =&gt; $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 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>