ECSHOP 商品,分类自定义URL

 

作者:konakona

 

转载请著名!

申明,这不是一篇教学文,我没有义务教会每一个人,但我有必要分享我的所懂得的给大家,所以能不能真正看懂,就在你各人的LAMP能力了.

 

因为我不善解释…

我只是提供一个改的思路,大家想改成什么样,只要够灵活都可以实现.

最近客户有一个需求,就是他可以在后台修改商品和分类的URL,大概是 http://www.xx.com/yourcatename.html 这样子.

但这样的结果是:要将请求提取出来后拿到数据哭中LIKE…牺牲的效率太大,不适合B2C网站.

所以我推荐客户一种易于SEO,同时能减轻服务器负担,又提升执行效率的URI.

分类 http://www.xx.com/c-[yourcatename]-id[-bid].html

商品 http://www.xx.com/s-[yourdefinedname]-id.html

 

很明显,我的c-和s-是一个标识符,用于表名他是一个category还是一个shop.

开始改代码.
存客户的URL,首先需要有一个字段.

ALTER TABLE `ecs_goods` ADD `goods_url` VARCHAR( 20 ) NOT NULL AFTER `goods_name`

ALTER TABLE `ecs_category` ADD `cat_url` VARCHAR( 20 ) NOT NULL AFTER `cat_name`

 

ECSHOP的URI重写FUNCTION在lib_common.php叫build_uri()

当条件为category时,我们在if ($rewrite) {后加入一段代码

//$uri = 'category-' . $cid; //切记先将原来的$uri注释掉
$tmp = $GLOBALS['db']->getRow("select * from ecs_category where cat_id = $cid");
$cat_url = empty($tmp['cat_url']) ? 'noname' : $tmp['cat_url'];
$uri = 'c-' . $cat_url . '-' . $cid;

 

再在条件为goods的else里的代码全部改成

 

$tmp = $GLOBALS['db']->getRow("select * from ecs_goods where goods_id = $gid");
$url = empty($tmp['goods_url']) ? 'noname' : $tmp['goods_url'];
$uri = $rewrite ? 's-' . $url . '-' . $gid : 'goods.php?id=' . $gid;

在后台清空缓存,大功告成.
你还没有?FUCK!自己去看后台设置.

然后继续下一步,打开跟目录的.htaccess

 

#RewriteRule ^goods-([0-9]+)(.*)\.html$ goods\.php\?id=$1 [QSA,L]
RewriteRule ^s-[a-z]+-([0-9]+)(.*)\.html$ goods\.php\?id=$1 [QSA,L]

#RewriteRule ^category-([0-9]+)(.*)\.html$                                                                         category\.php\?id=$1 [QSA,L]
RewriteRule ^c-[a-z]+-([0-9]+)(.*)\.html$                                                                          category\.php\?id=$1 [QSA,L]

 

完~!休息去咯~!

转载于:https://www.cnblogs.com/longailili/archive/2012/09/25/2701780.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值