世界末日估计真的要来了,不然怎么会有这么诡异的问题。
C同学将原来用于测试的zencart商品分类进行了一系列的移动,将原来属于商品分类ID为6下面的子分类分别移动到商品分类ID为3和9的下面,于是诡异的问题出现了。
被移走的分类居然个个那么的不忘本,访问的地址居然会带着原来旧目录的ID,伪静态的地址里统一的加了c-6,于是属于分类3下的子分类地址是c-6_3,属于分类9下的子分类地址成了c-6_9。
这个问题本来大家都没发现,今天C同学突然说某个分类的归属出错了,表现出来的是面包屑导航出错了,路径前面多了一个没有关系的分类归属,于是我研究了一下,发现了上述问题,只要当时从分类id为6下的子分类移出去的全部都有类似问题,自动在面包屑导航前面加上了个已经没有关系的id为6的分类名。
于是我去掉了伪静态,发现问题一样,动态地址同样会自己扯上旧的分类ID;于是我删除了网站缓存,没有用;于是去删除了伪静态的缓存,发现问题任然没有解决;我又试了后台重新修改分类再保存,没有解决问题;我到数据库分类表格里去找,表格里ID归属正常,找不到问题;搜索数据库也无果……我郁闷了!
而且更诡异的是,在分类ID为3或9下的那些从6移过来的子分类的地址里,删除了6_,也就是手动将地址改为c-3或者c-9,居然能正常访问,面包屑导航出错的问题也得到解决……
不写入数据库,和缓存没关系,我的zencart是最新的1.5.1版本的,这到底是怎么回事呢?哪个大侠给指点指点啊!
Update 2012-12-21
因为备份的目录错误,鬼使神差的,原来C同学自己通过网络教程将侧边的分类展开了,修改了includes/classes/category_tree.php
里面的代码:
<span>if</span> (zen_not_null($cPath)) <span>{</span>
改为 <span>if</span> (zen_not_null($cPath) or 1) <span>{</span>
并且在下面两行代码之间
reset($cPath_array); while (list($key, $value) = each($cPath_array)) {
插入了<span>$</span>cPath_array = array(#,#);
其中#是表示需要展开的分类的ID,最后在<span>while</span> (list($key, $value) = each($cPath_array)) <span>{</span>
之前加入了代码:<span>$</span>new_path = ''<span>;</span>
,最终使得让zencart默认不展开的侧边分类显示了子分类,但没想到的是居然导致子分类链接出错。
今天看到一解决方法,在includes/modules/category_row.php
文件中类似以下代码的前面:
$list_box_contents[$row][$col] = array('params' => 'class="categoryListBoxContents"' . ' ' . 'style="width:' . $col_width . '%;"', 'text' => '<a href="' . zen_href_link(FILENAME_DEFAULT, $cPath_new). '">' . zen_image(DIR_WS_IMAGES . $categories->fields['categories_image'], $categories->fields['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT) . '<br />' . $categories->fields['categories_name'] . '</a>');
加入以下代码:
$str= zen_href_link(FILENAME_DEFAULT, $cPath_new); $arrs=explode('-',$str); $html_str=$arrs[sizeof($arrs)-1]; //echo '<hr>'.$html_str.'<hr>'; unset($arrs[sizeof($arrs)-1]); $html_str_arr=explode('_',$html_str); if(sizeof($html_str_arr)>=2){ $html_str_arr_tmp=$current_category_id.'_'.$html_str_arr[sizeof($html_str_arr)-1]; $return=implode('-',$arrs).'-'.$html_str_arr_tmp; $str= $return; }
并将前面代码中的zen_href_link(FILENAME_DEFAULT, $cPath_new)
改成 <span>$</span>str
可是貌似问题仍然无法解决。
我也出现了这样的问题,不知道你找到解决方法了不?zencart版本1.39,
没解决,最好找了个advantage category的插件,可是这个插件不支持伪静态。