shopnc系统默认专题模块是没有伪静态的,这确实不知道是为什么。不过想让它支持伪静态,实现起来也很简单。

打开shopnc的路由功能类文件,/core/framework/core/route.php。找到_shopPathInfo方法。里面是对符合规则的伪静态地址进行正则替换,我们在它的$reg_match_from数组里加一个元素:

'/^special_detail-(\d+)$/',

同样的,在下面的$reg_match_to同样的位置加个元素:

'special-special_detail-special_id-\\1',

这样, 系统就会自动识别格式如/special_detail-3.html 这种的地址,并正常解析到/shop/index.php?act=special&op=special_detail&special_id=3这个地址。

当然如果还需要修改专题列表,以便使在专题列表中显示的专题链接也变成伪静态格式的话, 需要修改/core/framework/function/core.php这个文件。找到getShopSpecialUrl这个方法,加一个伪静态开关判断,如下:

function getShopSpecialUrl($special_id) {
    if(URL_MODE) {
        return  SHOP_SITE_URL.DS.'special_detail-'.$special_id.'.html';
    }
    return SHOP_SITE_URL.DS.'index.php?act=special&op=special_detail&special_id='.$special_id;
}

现在如果系统开启伪静态的话,系统在显示专题详情页链接的地方会自动显示成伪静态后的地址。