wwwweaver 版主帮忙,实现“属性前台不显示但属性筛选可用”功能

2016-07-07 15:01 来源:www.chinab4c.com 作者:ecshop专家

不用修改数据库

在 includes/lib_goods.php 中 get_goods_properties函数中
  1. foreach ($res AS $row)
  2. {
复制代码
下面加一行
  1. if (preg_match("/\?/",$row['attr_name']) continue;
复制代码
这样,只要属性名中有 ? 号的都不会显示,我没有测试,这是思路,供您参考

回答:
我没有确认 get_goods_properties函数否被后台共享,如果是,这里还要加上 判断是否是管理员的判断语句。

估计没有被共享。

您好

我给的只是思路, 你还是要能够灵活运用才行,我确实没有全部理解你的需求。

但解决思路应当没有问题。

例如:你的情况只要把
  1. if (preg_match("/\?/",$row['attr_name']) continue;
复制代码
放到
includes/lib_goods.php 中 get_goods_properties函数中
  1. $arr['spe'][$row['attr_id']]['attr_type'] = $row['attr_type'];
复制代码
的上面应当可以解决 商品详细页 属性中不显示的需求。

  1. if (preg_match("/\?/",$row['attr_name']) $row['attr_name'] = preg_replace ("/\?/", "", $row['attr_name']);
复制代码
放到
  1. foreach ($res AS $row)
  2. {
复制代码
下可以解决,其他地方 属性显示出现 ? 号的问题。

每次修改,必须清除缓存才能测试。

我没有测试,我给出的PHP代码如果测试出错,相应调整一下即可,我觉得思路和解决逻辑上没有问题。


最后,还是要说,要记住“灵活运用”

看了下你的 截图, 如果我没有猜错的话,应该是误解了 goods.php 中 get_package_goods_list 的作用

你的需求,不应当修改这个函数

这个你肯定是要修改数据库。增加字段了.你可以设置 某个字段不显示...控制一个显示字段。. .用其他方法。都不大好。效率也不高.



今天认真看了看,includes\lib_goods.php里有两个函数,改哪个呢……?
function get_goods_properties($goods_id)
function get_goods_attr($goods_id)

还是要在goods.php里动动手脚?

到底要改哪个呢……???改到哪儿呢……???

按理说,属性值没有的话,ecs_goods_attr表中就不存在了,前台是不显示属性名及属性值的
这样的话,让程序判断属性值不存在也应该可行吧,

要么就是直接让程序判断ecs_attribute表中属性名不显示……???

晕死了,还有个:
function get_products_info($goods_id, $spec_goods_attr_id)

到底要改哪个呢……???改到哪儿呢……???
尝试ING……