POSCMS内容页依规则生成链接函数dr_show_url

具体函数dr_show_url参考:

/**
 * 模块内容URL地址
 *
 * @param  array  $mod
 * @param  array  $data
 * @param  mod    $page
 * @return string
 */
function dr_show_url($mod, $data, $page = NULL) {

   if (!$mod || !$data) {
        return SITE_URL;
    }

    $page && $data['page'] = $page = is_numeric($page) ? max((int)$page, 1) : $page;

    $ci    = &get_instance();
    $cat = $mod['category'][$data['catid']];
    $rule = $ci->get_cache('urlrule', (int)$cat['setting']['urlrule'], 'value');
   if ($rule && $rule['show']) {
      // URL模式为自定义,且已经设置规则
        $data['modname'] = $mod['dirname'];
      $cat['pdirname'].= $cat['dirname'];
      $data['dirname'] = $cat['dirname'];
      $inputtime = isset($data['_inputtime']) ? $data['_inputtime'] : $data['inputtime'];
      $data['y'] = date('Y', $inputtime);
      $data['m'] = date('m', $inputtime);
      $data['d'] = date('d', $inputtime);
      $data['pdirname'] = str_replace('/', $rule['catjoin'], $cat['pdirname']);
      $url = ltrim($page ? $rule['show_page'] : $rule['show'], '/');
      // 兼容php5.5
      if (version_compare(PHP_VERSION, '5.5.0') >= 0) {
            $rep = new php5replace($data);
            $url = preg_replace_callback("#{([a-z_0-9]+)}#Ui", array($rep, 'php55_replace_data'), $url);
            $url = preg_replace_callback('#{([a-z_0-9]+)\((.*)\)}#Ui', array($rep, 'php55_replace_function'), $url);
            unset($rep);
      } else {
         $url = preg_replace('#{([a-z_0-9]+)}#Uei', "\$data[\\1]", $url);
         $url = preg_replace('#{([a-z_0-9]+)\((.*)\)}#Uie', "\\1(dr_safe_replace('\\2'))", $url);
      }

      return dr_uri_prefix('rewrite', $mod, $cat, 0).$url;
   }


   return dr_uri_prefix('cat_show_ext_php', $mod, $cat, 0).'c=show&id='.$data['id'].($page ? '&page='.$page : '');
}

image.png

那么如何在自己编写的工具类里面调用呢?参考如下:

image.png

注意第三个参数一定要带上后台URL定义的所有需要使用到的数据

image.png

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论