find(); return $basic; } //组合多维数组 function unlimitedForLayer($cate, $name = 'sub', $pid = 0) { $arr = array(); foreach ($cate as $v) { if ($v['pid'] == $pid) { $v["link"] = getColumnUrl($v); $v[$name] = unlimitedForLayer($cate, $name, $v['id']); $arr[] = $v; } } return $arr; } //子栏目重新组装数据 function alterChildColumn($list) { $arr = array(); foreach ($list as $v) { $v['url'] = $v['v_path']; $arr[] = $v; } return $arr; } //栏目地址重新组装 function columnList($list, $titlelen = -1) { $arr = array(); $table_prefix = config("database.connections.mysql.prefix"); foreach ($list as $v) { $v["link"] = getColumnUrl($v); $v['source'] = $v['article_source']; if ($titlelen != -1 && $titlelen > 0 && strlen($v['title']) > 0) { $v['title'] = myTitle($v['title'], $titlelen); } $columnList = get_column_down($v['id']); $v['child_num'] = sizeof($columnList); //子栏目数 $sum = 0; foreach ($columnList as $column) { $table_name = $table_prefix . $column['column_model']; if (TableUtil::check_table($table_name)) { $sum += Db::name($column['column_model'])->where('column_id', $column['id'])->count(); } } $v['sum'] = $sum; $arr[] = $v; } return $arr; } //获取父类对象 function getParent($list, $pid) { foreach ($list as $data) { if ($pid == $data->id) { return $data; } } return []; } //栏目地址重新组装 function alterList($list, $pmodel = "", $titlelen = -1) { //生成路由 //1:动态url,2:伪静态化,3:静态页面 $url_model = xn_cfg("seo.url_model"); $url_html_suffix = config("route.url_html_suffix"); $arr = array(); $basic = getBasic(); //基本信息 $isMobile = is_mobile(); $home_lang = xn_cfg("base.home_lang"); //默认语言 foreach ($list as $v) { $html_save_path = $basic["html_save_path"]; $cur_lang = $v['visit_lang']; if ($home_lang == $cur_lang) { $cur_lang = ""; } else { $html_save_path = $cur_lang; } if (empty($pmodel)) { $model = $v["model"]; } else { $model = $pmodel; } if ($v["id"] == -1) { $v["link"] = "javascript:void(0);"; } else { if ($url_model == 1) { $nUrl = DIRECTORY_SEPARATOR . $model . DIRECTORY_SEPARATOR . 'detail'; if (empty($cur_lang)) { $v["link"] = url("{$nUrl}") . "?id={$v['id']}"; } else { $v["link"] = url("{$nUrl}") . "?id={$v['id']}&lang={$cur_lang}"; } } elseif ($url_model == 2) { $nUrl = "/{$cur_lang}" . DIRECTORY_SEPARATOR . $model . DIRECTORY_SEPARATOR . 'detail'; $v["link"] = url("{$nUrl}/{$v['id']}"); } elseif ($url_model == 3) { $column_id = $v['column_id']; if (empty($column_id)) { $v["link"] = "javascript:void(0);"; continue; } if ($isMobile) { //手机访问 $nUrl = "/$cur_lang" . DIRECTORY_SEPARATOR . $model . DIRECTORY_SEPARATOR . 'detail'; $v["link"] = url("{$nUrl}/{$v['id']}"); } else { $columnList = get_column_up($column_id, "", $v['visit_lang']); $parenPath = ""; foreach ($columnList as $column) { $parenPath .= $column["dir_path"]; } $document_page = xn_cfg("seo.document_page"); //文档生成方式 if ($document_page == 1) { //多加一层时间 $url = "/{$html_save_path}/" . $parenPath . '/' . foxDate("Ymd", $v['create_time']) . '/' . $v['id'] . "." . $url_html_suffix; } else { $url = "/{$html_save_path}/" . $parenPath . '/' . $v['id'] . "." . $url_html_suffix; } $v["link"] = replaceSymbol($url); } } } $v['source'] = $v['article_source']; $v['image'] = $v['img_url']; if ($titlelen != -1 && $titlelen > 0 && strlen($v['title']) > 0) { $v['title'] = myTitle($v['title'], $titlelen); } $v["link"] = replaceSymbol($v["link"]); $arr[] = $v; } return $arr; } //当前导航添加 function navAddField(&$list, $id, $currentstyle, $at = "yes") { if ($at == "yes") { $curColumn = \app\common\model\Column::field("tier")->find($id); if ($curColumn) { $tierArr = explode(",", $curColumn["tier"]); foreach ($tierArr as $id) { foreach ($list as $v) { if ($v["id"] == $id) { $v["currentstyle"] = $currentstyle; break; } } } } } elseif ($at == "no") { foreach ($list as $v) { if ($v["id"] == $id) { $v["currentstyle"] = $currentstyle; break; } } } } //栏目、模型、会员属性动态组装 function fieldObjTag($field, $obj) { if ($field->dtype == "text") { //单行文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
php; return $html; } elseif ($field->dtype == "multitext") { //多行文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
php; return $html; } elseif ($field->dtype == "htmltext") { //HTML文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
php; return $html; } elseif ($field->dtype == "radio") { //单选 $valArr = explode(",", $field->dfvalue); $content = ""; if ($obj) { $valf = getFieldVal($obj, $field->name); } else { if (sizeof($valArr) > 0) { $valf = $valArr[0]; } } foreach ($valArr as $key => $val) { if ($val == $valf) { $content .= '
'; } else { $content .= '
'; } $content .= ' ' . $val . '
'; } $html = <<
{$content}
php; return $html; } elseif ($field->dtype == "checkbox") { //多选 $valArr = explode(",", $field->dfvalue); $valfArr = explode(",", getFieldVal($obj, $field->name)); $content = ""; foreach ($valArr as $key => $val) { if (in_array($val, $valfArr)) { $content .= '
'; } else { $content .= '
'; } $content .= ' ' . $val . '
'; } $html = <<
{$content}
php; return $html; } elseif ($field->dtype == "switch") { //开关 $val = getFieldVal($obj, $field->name); $isCheck = ""; if ($val == 1) { $isCheck = "is-checked"; } $html = <<
php; return $html; } elseif ($field->dtype == "select") { //下拉框 $val = ""; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $define = $field->define; $define = str_replace("enum(", "", $define); $define = str_replace(")", "", $define); $define = str_replace("'", "", $define); $valArr = explode(",", $define); // $valArr = explode(",", $field->dfvalue); $content = ""; foreach ($valArr as $key => $valLi) { $content .= '
  • ' . $valLi . '
  • '; } $html = <<
      {$content}
    php; return $html; } elseif ($field->dtype == "datetime") { //日期和时间 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    php; return $html; } elseif ($field->dtype == "int") { //整数类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    php; return $html; } elseif ($field->dtype == "float") { //小数类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    php; return $html; } elseif ($field->dtype == "decimal") { //金额类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    php; return $html; } elseif ($field->dtype == "pic") { //图片 $contentImg = ""; if ($obj) { //值不为空 $imgIds = getFieldVal($obj, $field->name); if (!empty($imgIds)) { $idsArr = explode(",", $imgIds); if (sizeof($idsArr) > 0) { foreach ($idsArr as $k => $img) { $contentImg .= '
  • 替换
  • '; } } } } $html = <<
      {$contentImg}
      添加图片
    php; return $html; } elseif ($field->dtype == "pics") { //图片集合 $contentImg = ""; if ($obj) { //值不为空 $imgIds = getFieldVal($obj, $field->name); if (!empty($imgIds)) { $idsArr = explode(",", $imgIds); if (sizeof($idsArr) > 0) { foreach ($idsArr as $k => $img) { $contentImg .= '
  • 替换
  • '; } } } } $html = <<
      {$contentImg}
      添加图片
    php; return $html; } elseif ($field->dtype == "media") { //媒体 $contentMedia = ""; if ($obj) { //值不为空 $videostr = getFieldVal($obj, $field->name); $videoArr = json_decode($videostr); if (sizeof($videoArr) > 0) { foreach ($videoArr as $video) { $contentMedia .= '
  • ' . $video->duration . '
    替换
  • '; } } } $html = <<
      {$contentMedia}
      添加视频
    php; return $html; } elseif ($field->dtype == "color") { $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    php; return $html; } elseif ($field->dtype == "icon") { //图标 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    php; return $html; } } //基本设置、联系方式属性动态组装 function fieldTag($field, $obj, $group = "") { $group = $group ?? "basic"; //默认 $call = "{fox:{$group} name='{$field->name}'/}"; if ($field->dtype == "text") { //单行文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "multitext") { //多行文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "htmltext") { //HTML文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    php; return $html; } elseif ($field->dtype == "radio") { //单选 $valArr = explode(",", $field->dfvalue); $content = ""; if ($obj) { $valf = getFieldVal($obj, $field->name); } else { if (sizeof($valArr) > 0) { $valf = $valArr[0]; } } foreach ($valArr as $key => $val) { if ($val == $valf) { $content .= '
    '; } else { $content .= '
    '; } $content .= ' ' . $val . '
    '; } $html = <<
    {$content}
    php; return $html; } elseif ($field->dtype == "checkbox") { //多选 $valArr = explode(",", $field->dfvalue); $valfArr = explode(",", getFieldVal($obj, $field->name)); $content = ""; foreach ($valArr as $key => $val) { if (in_array($val, $valfArr)) { $content .= '
    '; } else { $content .= '
    '; } $content .= ' ' . $val . '
    '; } $html = <<
    {$content}
    php; return $html; } elseif ($field->dtype == "switch") { //开关 $val = getFieldVal($obj, $field->name); $isCheck = ""; if ($val == 1) { $isCheck = "is-checked"; } $html = <<
    php; return $html; } elseif ($field->dtype == "select") { //下拉框 $val = ""; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $define = $field->define; $define = str_replace("enum(", "", $define); $define = str_replace(")", "", $define); $define = str_replace("'", "", $define); $valArr = explode(",", $define); // $valArr = explode(",", $field->dfvalue); $content = ""; foreach ($valArr as $key => $valLi) { $content .= '
  • ' . $valLi . '
  • '; } $html = <<
      {$content}
    {$call}
    php; return $html; } elseif ($field->dtype == "datetime") { //日期和时间 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "int") { //整数类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "float") { //小数类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "decimal") { //金额类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "pic") { //图片 $contentImg = ""; if ($obj) { //值不为空 $imgIds = getFieldVal($obj, $field->name); if (!empty($imgIds)) { $idsArr = explode(",", $imgIds); if (sizeof($idsArr) > 0) { foreach ($idsArr as $k => $img) { $contentImg .= '
  • 替换
  • '; } } } } $html = <<
      {$contentImg}
      添加图片
    {$call}
    php; return $html; } elseif ($field->dtype == "media") { //媒体 $contentMedia = ""; if ($obj) { //值不为空 $videostr = getFieldVal($obj, $field->name); $videoArr = json_decode($videostr); if (sizeof($videoArr) > 0) { foreach ($videoArr as $video) { $contentMedia .= '
  • ' . $video->duration . '
    替换
  • '; } } } $html = <<
      {$contentMedia}
      添加视频
    {$call}
    php; return $html; } elseif ($field->dtype == "color") { $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "icon") { //图标 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } } //广告位等直接显示字段值 function fieldOtherTag($field, $obj) { $call = "{$field->name}"; if ($field->dtype == "text") { //单行文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "multitext") { //多行文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    {$call}
    php; return $html; } elseif ($field->dtype == "htmltext") { //HTML文本 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "radio") { //单选 $valArr = explode(",", $field->dfvalue); $content = ""; if ($obj) { $valf = getFieldVal($obj, $field->name); } else { if (sizeof($valArr) > 0) { $valf = $valArr[0]; } } foreach ($valArr as $key => $val) { if ($val == $valf) { $content .= '
    '; } else { $content .= '
    '; } $content .= ' ' . $val . '
    '; } $html = <<
    {$content}
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "checkbox") { //多选 $valArr = explode(",", $field->dfvalue); $valfArr = explode(",", getFieldVal($obj, $field->name)); $content = ""; foreach ($valArr as $key => $val) { if (in_array($val, $valfArr)) { $content .= '
    '; } else { $content .= '
    '; } $content .= ' ' . $val . '
    '; } $html = <<
    {$content}
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "switch") { //开关 $val = getFieldVal($obj, $field->name); $isCheck = ""; if ($val == 1) { $isCheck = "is-checked"; } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "select") { //下拉框 $val = ""; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $define = $field->define; $define = str_replace("enum(", "", $define); $define = str_replace(")", "", $define); $define = str_replace("'", "", $define); $valArr = explode(",", $define); $content = ""; foreach ($valArr as $key => $valLi) { $content .= '
  • ' . $valLi . '
  • '; } $html = <<
      {$content}
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "datetime") { //日期和时间 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "int") { //整数类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "float") { //小数类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "decimal") { //金额类型 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "pic") { //图片 $contentImg = ""; if ($obj) { //值不为空 $imgIds = getFieldVal($obj, $field->name); if (!empty($imgIds)) { $idsArr = explode(",", $imgIds); if (sizeof($idsArr) > 0) { foreach ($idsArr as $k => $img) { $contentImg .= '
  • 替换
  • '; } } } } $html = <<
      {$contentImg}
      添加图片
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "pics") { //图片集合 $contentImg = ""; if ($obj) { //值不为空 $imgIds = getFieldVal($obj, $field->name); if (!empty($imgIds)) { $idsArr = explode(",", $imgIds); if (sizeof($idsArr) > 0) { foreach ($idsArr as $k => $img) { $contentImg .= '
  • 替换
  • '; } } } } $html = <<
      {$contentImg}
      添加图片
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "media") { //媒体 $contentMedia = ""; if ($obj) { //值不为空 $videostr = getFieldVal($obj, $field->name); $videoArr = json_decode($videostr); if (sizeof($videoArr) > 0) { foreach ($videoArr as $video) { $contentMedia .= '
  • ' . $video->duration . '
    替换
  • '; } } } $html = <<
      {$contentMedia}
      添加视频
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "color") { $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } elseif ($field->dtype == "icon") { //图标 $val = $field->dfvalue; if ($obj) { //值不为空 $val = getFieldVal($obj, $field->name); } $html = <<
    字段名称: {$call}
    php; return $html; } } //获取对象中的属性值 function getFieldVal($obj, $fieldName) { if ($obj) { return $obj[$fieldName]; } return ""; } //栏目属性动态组装 function columnFieldTag($id = "") { $column = \app\common\model\Column::find($id); $where = ['status' => 1, "is_system" => 0]; $columnList = \app\common\model\ColumnField::where($where)->where(function ($query) use ($id) { $query->whereOr([['', 'exp', \think\facade\Db::raw("FIND_IN_SET($id, column_ids)")]]); })->order(["sort_order" => "desc", "create_time" => "asc"])->select(); $html = ""; foreach ($columnList as $field) { //循环栏目模型 $html .= fieldObjTag($field, $column); } return $html; } //模型属性动态组装 function modelFieldTag($model, $id = "") { $html = ""; $modelObj = \think\facade\Db::name($model)->find($id); //查询对应模型值 $where = ["model" => $model, "is_system" => 0, "status" => 1]; $modelList = \app\common\model\ModelField::where($where)->order(["sort_order" => "desc", "create_time" => "asc"])->select(); //查询模型字段 foreach ($modelList as $field) { //循环栏目模型 $html .= fieldObjTag($field, $modelObj); } return $html; } //会员属性动态组装 function memberFieldTag($model = "", $id = "", $member_model_id = 0) { $html = ""; $modelObj = null; if (!empty($model) && !empty($id)) { $modelObj = \think\facade\Db::name($model)->find($id); //查询对应模型值 //不显示密码 $modelObj['password'] = ""; } $where = ["status" => 1, "member_model_id" => $member_model_id]; $modelList = \app\common\model\MemberModelField::where($where)->order(["sort_order" => "desc", "create_time" => "asc"])->select(); //查询模型字段 foreach ($modelList as $field) { //循环栏目模型 $html .= fieldObjTag($field, $modelObj); } return $html; } //变量属性动态组装 function variateFieldTag($group, $id = "") { $html = ""; $groupObj = \think\facade\Db::name($group)->find($id); //查询对应模型值 $where = ["status" => 1, 'group' => $group]; $modelList = \app\common\model\VariateField::where($where)->order(["sort_order" => "desc", "create_time" => "asc"])->select(); //查询模型字段 foreach ($modelList as $field) { //循环栏目模型 $html .= fieldTag($field, $groupObj, $group); } return $html; } //表单字段 function formFieldTag($tableName, $id = "", $formListId = "") { $html = ""; $tableObj = \think\facade\Db::table($tableName)->find($id); //查询对应模型值 $where = []; if (!empty($formListId)) { array_push($where, ['form_list_id', '=', $formListId]); } $formFieldList = \app\common\model\FormField::where($where)->order(["sort_order" => "asc", "create_time" => "asc"])->select(); //查询模型字段 foreach ($formFieldList as $field) { //循环栏目模型 $html .= fieldObjTag($field, $tableObj); } return $html; } //广告位字段 function advFieldTag($id) { $html = ""; $slideObj = \app\common\model\Slide::find($id); $where = ["advertising_space_id" => $slideObj["advertising_space_id"]]; $advFieldList = \app\common\model\AdvertisingSpaceField::where($where)->order(["sort_order" => "desc", "create_time" => "asc"])->select(); //查询模型字段 foreach ($advFieldList as $field) { //循环栏目模型 $html .= fieldOtherTag($field, $slideObj); } return $html; } //首页地址处理 function resetIndexUrl($url, $lang = "") { $home_lang = xn_cfg("base.home_lang"); //默认语言 if ($home_lang == $lang) { $lang = ""; } //生成路由 //1:动态url,2:伪静态化,3:静态页面 $url_model = xn_cfg("seo.url_model"); $url_html_suffix = config("route.url_html_suffix"); if (!empty($lang)) { if ($url_model == 1) { $url = url("{$url}") . "?lang={$lang}"; } else if ($url_model == 2) { $url = "{$url}_{$lang}"; $url = url("{$url}"); } else if ($url_model == 3) { $url = "{$url}_{$lang}.$url_html_suffix"; } } else { if ($url_model == 1 || $url_model == 2) { if (empty($url)) { $url = "/"; } } else if ($url_model == 3) { $url = "{$url}.$url_html_suffix"; } } return $url; } //针对栏目,重新根据seo设置组装url function resetUrl($url, $id, $lang = "") { // if (empty($url)) { // return $url; // } $home_lang = xn_cfg("base.home_lang"); //默认语言 if ($home_lang == $lang) { $lang = ""; } //生成路由 //1:动态url,2:伪静态化,3:静态页面 $url_model = xn_cfg("seo.url_model"); $url_html_suffix = config("route.url_html_suffix"); //栏目 $column_page = xn_cfg("seo.column_page"); //栏目生成方式 if ($url_model == 1) { if (empty($lang)) { if (empty($id)) { $url = url("{$url}"); } else { $url = url("{$url}") . "?id={$id}"; } } else { if (empty($id)) { $url = url("{$url}") . "?id={$id}&lang={$lang}"; } else { $url = url("{$url}") . "?id={$id}&lang={$lang}"; } } } elseif ($url_model == 2) { $url = url("/{$lang}{$url}/{$id}"); } elseif ($url_model == 3) { //静态模式下 if (is_mobile()) { //手机访问 if (empty($id)) { $url = url("/{$lang}{$url}"); } else { $url = url("/{$lang}{$url}/{$id}"); } return replaceSymbol($url); } $column_id = $id; if (empty($column_id)) { $url = "javascript:void(0);"; } else { $basic = getBasic(); //暂时不用 if (empty($lang)) { $html_save_path = $basic['html_save_path']; } else { $html_save_path = $lang; } $curColumn = \app\common\model\Column::find($id); $columnList = get_column_up($column_id); if ($column_page == 1 && $curColumn["pid"] != 0) { $htmlfile = "list_" . $curColumn['id']; //子栏目名称 //子栏目存放路径 foreach ($columnList as $column) { if ($column["pid"] == 0) { $url = "/{$html_save_path}/" . $column['dir_path'] . "/" . $htmlfile . "." . $url_html_suffix; break; } } } else { if ($curColumn["pid"] == 0) { $url = "/{$html_save_path}/" . $curColumn['dir_path'] . '/'; } else { $parenPath = ""; foreach ($columnList as $column) { $parenPath .= $column["dir_path"]; } $url = "/{$html_save_path}/" . $parenPath . '/'; } } } } return replaceSymbol($url); } //详情数据 function detailSetUrl($url, $id, $columnId, $model, $lang = "") { $url_html_suffix = config("route.url_html_suffix"); //生成路由 //1:动态url,2:伪静态化,3:静态页面 $url_model = xn_cfg("seo.url_model"); $home_lang = xn_cfg("base.home_lang"); //默认语言 if ($home_lang == $lang) { $lang = ""; } //栏目 $document_page = xn_cfg("seo.document_page"); //文档生成方式 if ($url_model == 1) { if (empty($lang)) { if (empty($id)) { $url = url("{$url}"); } else { $url = url("{$url}") . "?id={$id}"; } } else { if (empty($id)) { $url = url("{$url}") . "?id={$id}&lang={$lang}"; } else { $url = url("{$url}") . "?id={$id}&lang={$lang}"; } } } elseif ($url_model == 2) { $url = url("/{$lang}{$url}/{$id}"); } elseif ($url_model == 3) { //静态模式下 if (is_mobile()) { //手机访问 if (empty($id)) { $url = url("/{$lang}{$url}"); } else { $url = url("/{$lang}{$url}/{$id}"); } return replaceSymbol($url); } $basic = getBasic(); //暂时不能用 if (empty($lang)) { $html_save_path = $basic['html_save_path']; } else { $html_save_path = $lang; } $curData = \think\facade\Db::name($model)->find($id); $columnList = get_column_up($columnId); $parenPath = ""; foreach ($columnList as $column) { $parenPath .= "/" . $column["dir_path"]; } if ($document_page == 1) { $url = "/{$html_save_path}/" . $parenPath . '/' . foxDate("Ymd", $curData['create_time']) . '/' . $curData['id'] . "." . $url_html_suffix; } else { $url = "/{$html_save_path}/" . $parenPath . '/' . $curData['id'] . "." . $url_html_suffix; } } return replaceSymbol($url); } //获取标签的url (针对TAG标签) function tagUrl($id) { $url_html_suffix = config("route.url_html_suffix"); //生成路由 //1:动态url,2:伪静态化,3:静态页面 $url_model = xn_cfg("seo.url_model"); if ($url_model == 1) { $url = url("list") . "?id={$id}"; } elseif ($url_model == 2) { $url = url("list/{$id}"); } elseif ($url_model == 3) { //静态模式下 if (is_mobile()) { //手机访问 $url = url("list/{$id}"); return replaceSymbol($url); } $basic = getBasic(); $url = "/{$basic["html_save_path"]}/tag/" . $id . "." . $url_html_suffix; } return replaceSymbol($url); } //获取栏目url function getColumnUrl($column, $index = 0) { $url = ""; if ($column["column_attr"] == 0) { $url = resetUrl($column['v_path'], $column["id"], $column['visit_lang']); } elseif ($column["column_attr"] == 1) { //外部链接 $url = $column['out_link_head'] . $column['out_link']; } elseif ($column["column_attr"] == 2) { //内链栏目 $inner_column = $column['inner_column']; if (!empty($inner_column)) { $columnInner = \app\common\model\Column::find($inner_column); if ($columnInner) { $vPath = $columnInner["v_path"]; $url = resetUrl($vPath, $inner_column, $column['visit_lang']); } } } return replaceSymbol($url); } //tag标签地址 function tagSetUrl($url, $param) { //生成路由 //1:动态url,2:伪静态化,3:静态页面 $url_model = xn_cfg("seo.url_model"); $id = $param['id']; // $name = $param['name']; if ($url_model == 1) { if (sizeof($param) > 0) { $paramStr = func_param_pack($param, "&"); //参数串 $url = url("{$url}") . "?{$paramStr}"; } else { $url = url("{$url}"); } } elseif ($url_model == 2 || $url_model == 3) { //2:伪静态化,3:静态页面 unset($param['id']); if (sizeof($param) > 0) { $paramStr = func_param_pack($param, "&"); //参数串 // $url = url("{$url}/{$id}")."?{$paramStr}"; $url = url("{$url}") . "?{$paramStr}"; } else { $url = url("{$url}"); } } return replaceSymbol($url); } //查询栏目的所有字栏目id function getChildrensColumnId($columnId, $model, $lang = "") { //向下查询所有子孙栏目 $allColumn = get_column_down($columnId, $model, $lang); $columnIdArr = []; foreach ($allColumn as $column) { array_push($columnIdArr, $column["id"]); } return $columnIdArr; } //获取所有父类祖辈的栏目id function getParentsColumnId($columnId, $model, $lang = "") { //向下查询所有子孙栏目 $allColumn = get_column_up($columnId, $model, $lang); $columnIdArr = []; foreach ($allColumn as $column) { array_push($columnIdArr, $column["id"]); } return $columnIdArr; } //获取页面中分页的分页标签配置 function getPageList($fileContent) { $param = []; if (!empty($fileContent) && $fileContent != null) { $start = "{fox:list"; $end = "{/fox:list}"; $fileContent = get_between($fileContent, $start, $end); $fileContent = mb_substr($fileContent, 0, stripos($fileContent, "}")); $fileContent = preg_replace('/\ +=/', "=", $fileContent); //去掉等号(=)前面的空格 $fileContent = preg_replace('/\= +/', "=", $fileContent); //去掉等号(=)后面的空格 $fileArr = explode(" ", $fileContent); foreach ($fileArr as $fc) { $kwArr = explode("=", $fc); if (sizeof($kwArr) == 2) { $k = $kwArr[0]; $v = num_en($kwArr[1]); $param[$k] = $v; } } } return $param; } //访问统计 function access_stat_js($html, $domainNo) { $url = "//" . $domainNo . url("/plus/Access/stat"); $jsStr = << (function () { let hm = document.createElement("script"); hm.src = "{$url}"; let s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); EOF; $html = str_ireplace('', $jsStr . "\n", $html); $html = add_copyright($html); return $html; } //版权 function add_copyright($html) { $base = xn_cfg("base"); $copyright_remove_mark = $base['copyright_remove_mark'] ?? 0; $copyright_color = $base['copyright_color']; if (isset($base['copyright_mark_desc'])) { $copyright_mark_desc = dataD($base['copyright_mark_desc']); } else { $copyright_mark_desc = 'fd72bSHX4oDNwz44otEPuqo2mtVYMV1SpwCXdeIkhGNpp4FV2IjkjPcWL5x2gBTnmTeGfddN/DbGCYloPlMW9TXA0i4bGnRP9u/O6LrJc6ZKhYNG1uhNEmx7258k15KGuG4JmTQR4aVuE1foEVS8jesSsJjsICeyrZ52Us0mQ+yiR7puMQUDakZjw6Z3Hx8yJIOfbBkILMoZFckX83M8HUwn9ustzDNwTg42Q5/RO6PO9XWEV7Dr3kRhsOOzMDZbLoThkObKowxFE8i8oRPVo9wzQsDcPyog98IstVArSx6NFA7BxfG84KYvzCC4T8UX8pke9XQZo4xWnKaPOz+Ga5CvXsEsWg56Qv+8wjtlk42YUrOeptS752MW2tWns18GLC475eL7ITr0RgOK6q6DSDsaVa25z0sgFFns8pKBEJWM1C9laExssU+6GtmQgTIvhrHtMwQnuP40g85/YRsC6u97rSMIaCMm3LvmVAbE7KcKx1JU/KMdfbx88/u4gHeqvjmm1xunk4Vsou/hhwoCZws'; $copyright_mark_desc = dataD($copyright_mark_desc); } if ($copyright_remove_mark == 0 || $copyright_remove_mark != 1) { $versionPath = root_path() . "data/update/version/info.php"; $versionInfo = require($versionPath); $version = "未知"; if (!empty($versionInfo['version'])) { $version = "V{$versionInfo['version']}"; } $textColor = $base['font_color']; $addHtml = str_replace("_COLOR", $textColor, $copyright_mark_desc); $addHtml = str_replace("_COPYRIGHTCOLOR", $copyright_color, $addHtml); $addHtml = str_replace("V_V", $version, $addHtml); $addHtml = str_replace("_YEAR", date("Y"), $addHtml); $html = str_ireplace('', $addHtml . "\n", $html); } return $html; } //判断表是否存在 function is_exist_table($tableName) { $table_infos = Db::query('SHOW TABLE STATUS'); if (sizeof($table_infos) > 0) { foreach ($table_infos as $table_info) { if ($tableName == $table_info['Name']) { return true; } } } return false; } //退出地址 function logout_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Login/logout"); } //栏目模型地址 function getColumModels_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Column/getColumModels"); } //个人中心 function adminEdit_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Admin/edit"); } //清除缓存 function loginClearCache_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Login/clearCache"); } //修改密码 function adminUpdatePassword_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/admin/updatePassword"); } //循环生成静态html function seoAllSite_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Seo/allSite"); } //单独静态生成 function seoAddDataBuildDetail_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Seo/addDataBuildDetail"); } //单独静态栏目生成 function singleAllSite_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Seo/singleAllSite"); } //删除幻灯片 function slideDelete_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Slide/delete"); } //幻灯片编辑 function slideEdit_url() { $adminP = config("adminconfig.admin_path"); return url($adminP . "/Slide/edit"); } // 获取语言包数据 function getLang($lang) { // 设置缓存的键,可以包含文件的路径或其他标识符 $cacheKey = 'file_content_' . md5($lang); // 尝试从缓存中读取内容 $rContent = \think\facade\Cache::get($cacheKey); if ($rContent === null || $rContent === "{}" || $rContent === "") { // 缓存未命中,从文件中读取内容 $filePath = root_path('app/lang') . "pack/{$lang}.ini"; //复制原语音包路 $filePath = replaceSymbol($filePath); $content = file_get_contents($filePath); $rContent = "{" . $content . "}"; // 将内容写入缓存,并设置缓存过期时间 \think\facade\Cache::set($cacheKey, $rContent, 3600); // 假设缓存有效期为1小时 } if (empty($rContent)) { return []; } return json_decode($rContent, true); } //根据语言标识翻译 function getLangContentByMark($lang, $mark) { $langs = getLang($lang); return $langs[$mark]; }