ecshop增加商品分类批量添加功能教程

2025-10-31 09:54:40

1、ECShop商品分类上传,如果分类较多的话,ECShop默认的上传方式让我们觉得很繁琐。以下这个功能非常不错,简化了我们的上传方式,一次性导入更多的分类,分类之间使用半角逗号分隔。本功能基于2.7.3,其他版本的用户请参考代码研究。

2、首先,我们导入一级分类,也就是顶级分类:

ecshop增加商品分类批量添加功能教程

3、然后对二级分类进行导入,注意:多个分类之间的逗号是英文符号。本功能基于2.7.3,其他版本的用户请参考代码研究。

ecshop增加商品分类批量添加功能教程

4、修改方法:

第一步:编辑/admin/templates/category_info.htm

<p style="text-indent: 2em;"><span style="font-family: 微软雅黑, 'Microsoft YaHei'; font-size: 14px;">查找:<br></span>

<p style="text-indent: 2em;"><span style="font-family: 微软雅黑, 'Microsoft YaHei'; font-size: 14px;">{$lang.cat_name}:  *<br></span>

修改为:

<p style="text-indent: 2em;"><span style="font-family: 微软雅黑, 'Microsoft YaHei'; font-size: 14px;">                      {$lang.cat_name}:                                           {$cat_info.cat_name|escape:html}   *                      {$lang.notice_cat_name}<br></span>

5、第二步:编辑/admin/category.php

查找:

/*------------------------------------------------------ */

//-- 商品分类添加时的处理

/*------------------------------------------------------ */

if ($_REQUEST['act'] == 'insert')

{

    /* 权限检查 */

    admin_priv('cat_manage');

    /* 初始化变量 */

    $cat['cat_id']       = !empty($_POST['cat_id'])       ? intval($_POST['cat_id'])     : 0;

    $cat['parent_id']    = !empty($_POST['parent_id'])    ? intval($_POST['parent_id'])  : 0;

    $cat['sort_order']   = !empty($_POST['sort_order'])   ? intval($_POST['sort_order']) : 0;

    $cat['keywords']     = !empty($_POST['keywords'])     ? trim($_POST['keywords'])     : '';

    $cat['cat_desc']     = !empty($_POST['cat_desc'])     ? $_POST['cat_desc']           : '';

    $cat['measure_unit'] = !empty($_POST['measure_unit']) ? trim($_POST['measure_unit']) : '';

    $cat['cat_name']     = !empty($_POST['cat_name'])     ? trim($_POST['cat_name'])     : '';

    $cat['show_in_nav']  = !empty($_POST['show_in_nav'])  ? intval($_POST['show_in_nav']): 0;

    $cat['style']        = !empty($_POST['style'])        ? trim($_POST['style'])        : '';

    $cat['is_show']      = !empty($_POST['is_show'])      ? intval($_POST['is_show'])    : 0;

    $cat['grade']        = !empty($_POST['grade'])        ? intval($_POST['grade'])      : 0;

    $cat['filter_attr']  = !empty($_POST['filter_attr'])  ? implode(',', array_unique(array_diff($_POST['filter_attr'],array(0)))) : 0;

    $cat['cat_recommend']  = !empty($_POST['cat_recommend'])  ? $_POST['cat_recommend'] : array();

    if (cat_exists($cat['cat_name'], $cat['parent_id']))

    {

        /* 同级别下不能有重复的分类名称 */

       $link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');

       sys_msg($_LANG['catname_exist'], 0, $link);

    }

    if($cat['grade'] > 10 || $cat['grade'] < 0)

    {

        /* 价格区间数超过范围 */

       $link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');

       sys_msg($_LANG['grade_error'], 0, $link);

    }

    /* 入库的操作 */

    if ($db->autoExecute($ecs->table('category'), $cat) !== false)

    {

        $cat_id = $db->insert_id();

        if($cat['show_in_nav'] == 1)

        {

            $vieworder = $db->getOne("SELECT max(vieworder) FROM ". $ecs->table('nav') . " WHERE type = 'middle'");

            $vieworder += 2;

            //显示在自定义导航栏中

            $sql = "INSERT INTO " . $ecs->table('nav') .

                " (name,ctype,cid,ifshow,vieworder,opennew,url,type)".

                " VALUES('" . $cat['cat_name'] . "', 'c', '".$db->insert_id()."','1','$vieworder','0', '" . build_uri('category', array('cid'=> $cat_id), $cat['cat_name']) . "','middle')";

            $db->query($sql);

        }

        insert_cat_recommend($cat['cat_recommend'], $cat_id);

        admin_log($_POST['cat_name'], 'add', 'category');   // 记录管理员操作

        clear_cache_files();    // 清除缓存

        /*添加链接*/

        $link[0]['text'] = $_LANG['continue_add'];

        $link[0]['href'] = 'category.php?act=add';

        $link[1]['text'] = $_LANG['back_list'];

        $link[1]['href'] = 'category.php?act=list';

        sys_msg($_LANG['catadd_succed'], 0, $link);

    }

}

替换为:

/*------------------------------------------------------ */

//-- 商品分类添加时的处理

/*------------------------------------------------------ */

if ($_REQUEST['act'] == 'insert')

{

    /* 权限检查 */

    admin_priv('cat_manage');

  

 /* 初始化变量 */

 $cat['cat_id']       = !empty($_POST['cat_id'])       ? intval($_POST['cat_id'])     : 0;

 $cat['parent_id']    = !empty($_POST['parent_id'])    ? intval($_POST['parent_id'])  : 0;

 $cat['sort_order']   = !empty($_POST['sort_order'])   ? intval($_POST['sort_order']) : 0;

 $cat['keywords']     = !empty($_POST['keywords'])     ? trim($_POST['keywords'])     : '';

 $cat['cat_desc']     = !empty($_POST['cat_desc'])     ? $_POST['cat_desc']           : '';

 $cat['measure_unit'] = !empty($_POST['measure_unit']) ? trim($_POST['measure_unit']) : '';

 $cat['show_in_nav']  = !empty($_POST['show_in_nav'])  ? intval($_POST['show_in_nav']): 0;

 $cat['style']        = !empty($_POST['style'])        ? trim($_POST['style'])        : '';

 $cat['is_show']      = !empty($_POST['is_show'])      ? intval($_POST['is_show'])    : 0;

 $cat['grade']        = !empty($_POST['grade'])        ? intval($_POST['grade'])      : 0;

 $cat['cat_recommend']  = !empty($_POST['cat_recommend'])  ? $_POST['cat_recommend'] : array();$cat['filter_attr']  = !empty($_POST['filter_attr'])  ? implode(',', array_unique(array_diff($_POST['filter_attr'],array(0)))) : 0;

  

 $cat['cat_name']     = !empty($_POST['cat_name'])     ? trim($_POST['cat_name'])     : '';

 $arrCatName = explode("," ,$cat['cat_name']);

  

 foreach($arrCatName as $arrCatNameValue)

 {

  $cat['cat_name'] = $arrCatNameValue;

  if (cat_exists($cat['cat_name'], $cat['parent_id']))

  {

   /* 同级别下不能有重复的分类名称 */

     $link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');

     sys_msg($_LANG['catname_exist'], 0, $link);

  }

  if($cat['grade'] > 10 || $cat['grade'] < 0)

  {

   /* 价格区间数超过范围 */

     $link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');

     sys_msg($_LANG['grade_error'], 0, $link);

  }

  /* 入库的操作 */

  if ($db->autoExecute($ecs->table('category'), $cat) !== false)

  {

   $cat_id = $db->insert_id();

   if($cat['show_in_nav'] == 1)

   {

    $vieworder = $db->getOne("SELECT max(vieworder) FROM ". $ecs->table('nav') . " WHERE type = 'middle'");

    $vieworder += 2;

    //显示在自定义导航栏中

    $sql = "INSERT INTO " . $ecs->table('nav') .

     " (name,ctype,cid,ifshow,vieworder,opennew,url,type)".

     " VALUES('" . $cat['cat_name'] . "', 'c', '".$db->insert_id()."','1','$vieworder','0', '" . build_uri('category', array('cid'=> $cat_id), $cat['cat_name']) . "','middle')";

    $db->query($sql);

   }

   insert_cat_recommend($cat['cat_recommend'], $cat_id);

  }

 }

  

 admin_log($_POST['cat_name'], 'add', 'category');   // 记录管理员操作

 clear_cache_files();    // 清除缓存

 /*添加链接*/

 $link[0]['text'] = $_LANG['continue_add'];

 $link[0]['href'] = 'category.php?act=add';

 $link[1]['text'] = $_LANG['back_list'];

 $link[1]['href'] = 'category.php?act=list';

 sys_msg($_LANG['catadd_succed'], 0, $link);

}

6、第三步:编辑/languages/zh_cn/admin/category.php

任意位置添加以下代码

<p style="text-indent: 2em;"><span style="font-family: 微软雅黑, 'Microsoft YaHei'; font-size: 14px;">$_LANG['notice_cat_name']   = '如果您需要添加多个分类,请在分类之间使用半角逗号分隔。';<br></span>

后台清楚缓存即可

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢