ecshop设置一个子类对应多个父类并指定跳转url的修改方法

简介:

 这是一篇记录在日记里面的技术文档,其实是对ecshop的二次开发。主要作用是将一个子类对应多个父类,并指定条跳转url的功能。ecshop是一款在线购物网站,感兴趣的可以下载源码看看。我们看看具体是怎么修改的。

  1、数据库表“表前缀_category”添加如下字段

alter  TABLE `ga_category` add `assign_child` varchar(255) default NULL;
alter  TABLE `ga_category` add `jump_url` varchar(255) default NULL;

  2、includes/lib_goods.php

  get_categories_tree、get_child_tree函数中的

$cat_arr[$row['cat_id']]['url'] = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);

  改为

if(isset($row['jump_url']) != NULL && trim($row['jump_url']) != ''){
                    $cat_arr[$row['cat_id']]['url'] = $row['jump_url'];
                }else{
                    $cat_arr[$row['cat_id']]['url'] = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);
                }

  将

$three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);

  改为

if(isset($row['assign_child']) != NULL && trim($row['assign_child']) != ''){
                        $three_arr[$row['cat_id']]['cat_id'] = get_assign_child_tree($row['assign_child']);
                    }else{
                           $three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);
                    }

  将将获取子类的sql

        $sql = 'SELECT cat_id,cat_name ,parent_id,is_show ' .

                'FROM ' . $GLOBALS['ecs']->table('category') .

                "WHERE parent_id = '$parent_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

  改为(添加assign_child, jump_url两个字段用于查询用)

        $sql = 'SELECT cat_id,cat_name ,parent_id,is_show, template_file, assign_child, jump_url ' .

                'FROM ' . $GLOBALS['ecs']->table('category') .

                "WHERE parent_id = '$parent_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

  并添加函数

复制代码
function get_assign_child_tree($tree_id = '')

{

    $three_arr = array();
    if($tree_id == '') return $three_arr;

    $child_sql = 'SELECT cat_id, cat_name, parent_id, is_show, assign_child, jump_url ' .

            'FROM ' . $GLOBALS['ecs']->table('category') .

            "WHERE cat_id in( $tree_id ) AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

    $res = $GLOBALS['db']->getAll($child_sql);

    foreach ($res AS $row)

    {

        if ($row['is_show'])



           $three_arr[$row['cat_id']]['id']   = $row['cat_id'];

           $three_arr[$row['cat_id']]['name'] = $row['cat_name'];

            if(isset($row['jump_url']) != NULL && trim($row['jump_url']) != ''){
                $three_arr[$row['cat_id']]['url'] = $row['jump_url'];
            }else{
                   $three_arr[$row['cat_id']]['url']  = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);
            }

           if (isset($row['cat_id']) != NULL)

               {
                    if(isset($row['assign_child']) != NULL && trim($row['assign_child']) != ''){
                        $three_arr[$row['cat_id']]['cat_id'] = get_assign_child_tree($row['assign_child']);
                    }else{
                           $three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);
                    }
        }

    }
    return $three_arr;

}
复制代码

  3、admin/category.php中作如下修改

  在($_REQUEST['act'] == 'insert')、if ($_REQUEST['act'] == 'update')的条件中的

$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['jump_url']     = !empty($_POST['jump_url'])     ? trim($_POST['jump_url'])      : '';

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

  4、在admin/templates/category_info.htm的

复制代码
      <tr id="assign_child">

        <td class="label">{$lang.assign_child}:</td>

        <td>

          <input type="text" name='assign_child' value='{$cat_info.assign_child}' size="32" />

        </td>

      </tr>
复制代码

  中添加

复制代码
      <tr id="jump_url">

        <td class="label">{$lang.jump_url}:</td>

        <td>

          <input type="text" name='jump_url' value='{$cat_info.jump_url}' size="32" />

        </td>

      </tr>
复制代码

  5、languages/zh-cn/admin/category.php中添加如下语言描述

  $_LANG['jump_url']='跳转url(指定跳转至的url)';

  $_LANG['assign_child']='指定子类(将其id填写在输入框中即可,多个是用应为的“,”号隔开)';






本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/4617932.html,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
JavaScript
vue封装一个查询URL参数方法
通过以上步骤,我们在Vue.js项目中封装了一个查询URL参数的方法 `getQueryParam`,并在Vue组件中成功应用。这种封装方式不仅提高了代码的复用性,还使得代码更加清晰和易于维护。
17 1
|
1月前
|
JavaScript
vue封装一个查询URL参数方法
通过以上步骤,我们在Vue.js项目中封装了一个查询URL参数的方法 `getQueryParam`,并在Vue组件中成功应用。这种封装方式不仅提高了代码的复用性,还使得代码更加清晰和易于维护。
16 1
|
1月前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
|
3月前
|
安全 Java API
Java根据URL获取文件内容的实现方法
此示例展示了如何安全、有效地根据URL获取文件内容。它不仅展现了处理网络资源的基本技巧,还体现了良好的异常处理实践。在实际开发中,根据项目需求,你可能还需要添加额外的功能,如设置连接超时、处理HTTP响应码等。
365 4
|
3月前
|
安全 PHP 开发者
Web安全-URL跳转与钓鱼
Web安全-URL跳转与钓鱼
61 8
|
4月前
|
网络协议
【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
|
4月前
|
API
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错
|
4月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
5月前
|
UED
返回按钮——没有上一页的URL时,跳转到首页(document.referrer的妙用)
返回按钮——没有上一页的URL时,跳转到首页(document.referrer的妙用)
53 0
|
5月前
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
537 0