permission->is_admin(); //$this->output->enable_profiler(TRUE); $this->load->model('Area_model'); $this->load->model('Information_model'); $this->load->model('InfoContents_model'); $this->load->model('InfoStructures_model'); $this->load->model('Landscape_model'); $this->load->model('Operator_model'); $this->load->model('Logs_model'); $this->load->model('InfoMetas_model'); $this->load->model('Infoauthors_model'); $this->load->model('InfoSMS_model'); $this->load->model('recommends_and_tips_model'); $this->load->model('trippest_model'); //trippest产品 $this->load->model('infoBokunData_model'); //trainspread产品 $this->load->model('Feedback_model'); $this->load->model('Price_model'); $this->load->model('PrimeLinePrice_model'); $this->load->library('Amplib'); //加载AMP处理类 $this->load->library('Currency'); $this->load->library('html_optimize_lib'); //加载HTML优化类 } public function index() { echo '信息首页'; } public function add($is_parent_id) { //添加空内容. $this->InfoContents_model->Add('', 'New Information', '', '', '', '', '', '', '', 0, 0, '', '', 0, 0, '', '', 0, '', 0, '', ''); $infocontent = $this->InfoContents_model->get_ic_contents($this->InfoContents_model->insert_id); if (! empty($infocontent) && $this->InfoStructures_model->Add($is_parent_id, $this->InfoContents_model->insert_id)) { $is_id = $this->InfoStructures_model->insert_id; $InfoStructures = $this->InfoStructures_model->Detail($is_id); $InfoStructures->is_id = $is_id; $data[] = ['name' => 'ok', 'value' => $InfoStructures]; $this->Logs_model->add($this->InfoStructures_model->insert_id); } else { $data[] = ['name' => 'no', 'value' => $this->lang->line('form_info_error')]; } echo json_encode($data); return true; } //移动结构顺序 public function move() { //网站会提交一个同级节点id列表字符串,按照这个去排序 $parent_id = $this->input->post('pid'); $idsStr = $this->input->post('ids'); $idsArray = explode(',', $idsStr); foreach ($idsArray as $key => $value) { if ($value) { //设置排序 $this->InfoStructures_model->set_sort($value, $key); //设置path $this->InfoStructures_model->set_path($parent_id, $value); } } $data[] = ['name' => 'ok', 'value' => $this->lang->line('structures_success_move')]; echo json_encode($data); $this->Logs_model->move($idsStr); return true; } //把文章移动到任意板块文章下 //is_id 信息结构ID,is_parent_id即将转移到的信息结构id public function move_by_is_id() { $data = []; $is_id = $this->input->post('is_id'); $is_parent_id = $this->input->post('is_parent_id'); if ($is_id == $is_parent_id || empty($is_id) || empty($is_parent_id)) { return false; } //即将移动到文章结构信息 $Structure = $this->InfoStructures_model->Detail($is_id); //目标文章结构信息 $Structure_parent = $this->InfoStructures_model->Detail($is_parent_id); //只能移动到本站点下,20250327改为允许搬迁到其它站点 ycc //if ($Structure->is_sitecode == $Structure_parent->is_sitecode) { //不能搬迁到自己的子节点下 if (strpos(',' . $Structure_parent->is_path, ',' . $is_id . ',') == false) { $this->InfoStructures_model->set_path($is_parent_id, $is_id); } //信息的区域类型和id也要修改 todo //} $data[] = ['name' => 'ok', 'value' => $this->lang->line('structures_success_move')]; echo json_encode($data); $this->Logs_model->move($is_id); return true; } //[国际->国际]复制节点结构到任意站点的节点下面。-- lmr //is_id 信息结构ID, public function copy_by_is_id($src_is_id, $dest_is_id) { if (empty($src_is_id) || empty($src_is_id)) { echo 'need 2 is_id v1'; return false; } $data = []; if ($src_is_id == $dest_is_id || empty($src_is_id) || empty($dest_is_id)) { echo 'need 2 is_id v2'; return false; } // 源节点 $src = $this->InfoStructures_model->Detail($src_is_id); $src_path = $this->Information_model->get_list_by_path($src->is_path, false, $src->is_sitecode); // 源子节点 foreach ($src_path as $n => $item) { if ($item->is_id === $src->is_id) { unset($src_path[$n]); } } // 目标节点结构 $dest = $this->InfoStructures_model->Detail($dest_is_id); $dest_path = $this->Information_model->get_list_by_path($dest->is_path, false, $dest->is_sitecode); // 目标子节点 foreach ($dest_path as $n => $item) { if ($item->is_id === $dest->is_id) { unset($dest_path[$n]); } } // 新旧节点对应表 $node_map = []; // 循环复制各个层级的节点。 foreach ($src_path as $n => $item) { // 定位复制的父节点 $target_is_id = $dest->is_id; foreach ($node_map as $old => $new) { if ($item->is_parent_id == $old) { $target_is_id = $new; } } // info_content $item_info_content = $this->InfoContents_model->get_ic_contents2($item->is_ic_id); $this->InfoContents_model->Add_with_sitecode( $item_info_content->ic_url, $item_info_content->ic_url_title, $item_info_content->ic_type, $item_info_content->ic_title, $item_info_content->ic_content, $item_info_content->ic_summary, $item_info_content->ic_seo_title, $item_info_content->ic_seo_description, $item_info_content->ic_seo_keywords, $item_info_content->ic_show_bread_crumbs, $item_info_content->ic_status, $item_info_content->ic_template, $item_info_content->ic_photo, $item_info_content->ic_photo_width, $item_info_content->ic_photo_height, $item_info_content->ic_recommend_tours, $item_info_content->ic_recommend_packages, $item_info_content->ic_ht_area_id, $item_info_content->ic_ht_area_type, $item_info_content->ic_ht_product_id, $item_info_content->ic_ht_product_type, $item_info_content->ic_author, $dest->is_sitecode ); // info_meta $item_meta_amp = $this->InfoMetas_model->get($item->is_ic_id, 'AMP'); $item_meta_ampbody = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_BODY'); $item_meta_ampcss = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_CSS'); $item_meta_ampscript = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_SCRIPT'); $item_meta_ampjson = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_JSON'); $item_meta_ampstatus = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_STATUS'); $item_meta_pcstatus = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_BODY_PC_STATUS'); $item_meta_pcbody = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_BODY_PC'); $item_meta_pccss = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_CSS_PC'); $item_meta_pcschema = $this->InfoMetas_model->get($item->is_ic_id, 'AMP_SCHEMA'); if (! empty($item_meta_amp)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP', $item_meta_amp); } if (! empty($item_meta_ampbody)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_BODY', $item_meta_ampbody); } if (! empty($item_meta_ampcss)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_CSS', $item_meta_ampcss); } if (! empty($item_meta_ampscript)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_SCRIPT', $item_meta_ampscript); } if (! empty($item_meta_ampjson)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_JSON', $item_meta_ampjson); } if (! empty($item_meta_ampstatus)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_STATUS', $item_meta_ampstatus); } if (! empty($item_meta_pcstatus)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_BODY_PC_STATUS', $item_meta_pcstatus); } if (! empty($item_meta_pcbody)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_BODY_PC', $item_meta_pcbody); } if (! empty($item_meta_pccss)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_CSS_PC', $item_meta_pccss); } if (! empty($item_meta_pcschema)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_SCHEMA', $item_meta_pcschema); } // gm 补充meta $item_meta_addon_css = $this->InfoMetas_model->get($item->is_ic_id, 'meta_addon_css'); if (! empty($item_meta_addon_css)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'meta_addon_css', $item_meta_addon_css); } $item_meta_addon_js = $this->InfoMetas_model->get($item->is_ic_id, 'meta_addon_js'); if (! empty($item_meta_addon_js)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'meta_addon_js', $item_meta_addon_js); } $item_meta_use_list_picture = $this->InfoMetas_model->get($item->is_ic_id, 'meta_use_list_picture'); if (! empty($item_meta_use_list_picture)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'meta_use_list_picture', $item_meta_use_list_picture); } // 添加节点 $this->InfoStructures_model->Add_with_sitecode($target_is_id, $this->InfoContents_model->insert_id, 999, $dest->is_sitecode); $node_map[$item->is_id] = $this->InfoStructures_model->insert_id; } print_r($node_map); // print_r($src); // print_r($src_path); // print_r($dest); // print_r($dest_path); //返回状态 $data[] = ['name' => 'ok', 'value' => 'copy_by_is_id() success!']; echo json_encode($data); return true; } //[国际<-德语][在int.mycht.cn上执行]复制节点结构到任意站点的节点下面。-- lmr //is_id 信息结构ID, public function copy_by_is_id_gm($src_is_id, $dest_is_id) { if (empty($src_is_id) || empty($src_is_id)) { echo 'need 2 is_id v1'; return false; } $data = []; if ($src_is_id == $dest_is_id || empty($src_is_id) || empty($dest_is_id)) { echo 'need 2 is_id v2'; return false; } // 源节点 $src = $this->InfoStructures_model->Detail_gm($src_is_id); $src_path = $this->Information_model->get_list_by_path_gm($src->is_path, false, $src->is_sitecode); // 源子节点 foreach ($src_path as $n => $item) { if ($item->is_id === $src->is_id) { unset($src_path[$n]); } } // 目标节点结构 $dest = $this->InfoStructures_model->Detail($dest_is_id); $dest_path = $this->Information_model->get_list_by_path($dest->is_path, false, $dest->is_sitecode); // 目标子节点 foreach ($dest_path as $n => $item) { if ($item->is_id === $dest->is_id) { unset($dest_path[$n]); } } // 新旧节点对应表 $node_map = []; // 循环复制各个层级的节点。 foreach ($src_path as $n => $item) { // 定位复制的父节点 $target_is_id = $dest->is_id; foreach ($node_map as $old => $new) { if ($item->is_parent_id == $old) { $target_is_id = $new; } } // info_content $item_info_content = $this->InfoContents_model->get_ic_contents2_gm($item->is_ic_id); $this->InfoContents_model->Add_with_sitecode( $item_info_content->ic_url, $item_info_content->ic_url_title, $item_info_content->ic_type, $item_info_content->ic_title, $item_info_content->ic_content, $item_info_content->ic_summary, $item_info_content->ic_seo_title, $item_info_content->ic_seo_description, $item_info_content->ic_seo_keywords, $item_info_content->ic_show_bread_crumbs, $item_info_content->ic_status, $item_info_content->ic_template, $item_info_content->ic_photo, $item_info_content->ic_photo_width, $item_info_content->ic_photo_height, $item_info_content->ic_recommend_tours, $item_info_content->ic_recommend_packages, $item_info_content->ic_ht_area_id, $item_info_content->ic_ht_area_type, $item_info_content->ic_ht_product_id, $item_info_content->ic_ht_product_type, $item_info_content->ic_author, $dest->is_sitecode ); // info_meta $item_meta_amp = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP'); $item_meta_ampbody = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_BODY'); $item_meta_ampcss = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_CSS'); $item_meta_ampscript = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_SCRIPT'); $item_meta_ampjson = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_JSON'); $item_meta_ampstatus = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_STATUS'); $item_meta_pcstatus = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_BODY_PC_STATUS'); $item_meta_pcbody = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_BODY_PC'); $item_meta_pccss = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_CSS_PC'); $item_meta_pcschema = $this->InfoMetas_model->get_gm($item->is_ic_id, 'AMP_SCHEMA'); if (! empty($item_meta_amp)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP', $item_meta_amp); } if (! empty($item_meta_ampbody)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_BODY', $item_meta_ampbody); } if (! empty($item_meta_ampcss)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_CSS', $item_meta_ampcss); } if (! empty($item_meta_ampscript)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_SCRIPT', $item_meta_ampscript); } if (! empty($item_meta_ampjson)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_JSON', $item_meta_ampjson); } if (! empty($item_meta_ampstatus)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_STATUS', $item_meta_ampstatus); } if (! empty($item_meta_pcstatus)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_BODY_PC_STATUS', $item_meta_pcstatus); } if (! empty($item_meta_pcbody)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_BODY_PC', $item_meta_pcbody); } if (! empty($item_meta_pccss)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_CSS_PC', $item_meta_pccss); } if (! empty($item_meta_pcschema)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'AMP_SCHEMA', $item_meta_pcschema); } // gm 补充meta $item_meta_addon_css = $this->InfoMetas_model->get_gm($item->is_ic_id, 'meta_addon_css'); if (! empty($item_meta_addon_css)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'meta_addon_css', $item_meta_addon_css); } $item_meta_addon_js = $this->InfoMetas_model->get_gm($item->is_ic_id, 'meta_addon_js'); if (! empty($item_meta_addon_js)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'meta_addon_js', $item_meta_addon_js); } $item_meta_use_list_picture = $this->InfoMetas_model->get_gm($item->is_ic_id, 'meta_use_list_picture'); if (! empty($item_meta_use_list_picture)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'meta_use_list_picture', $item_meta_use_list_picture); } $item_meta_product_code = $this->InfoMetas_model->get_gm($item->is_ic_id, 'meta_product_code'); if (! empty($item_meta_product_code)) { $this->InfoMetas_model->Add($this->InfoContents_model->insert_id, 'meta_product_code', $item_meta_product_code); } // 添加节点 $this->InfoStructures_model->Add_with_sitecode($target_is_id, $this->InfoContents_model->insert_id, 999, $dest->is_sitecode); $node_map[$item->is_id] = $this->InfoStructures_model->insert_id; } print_r($node_map); // print_r($src); // print_r($src_path); // print_r($dest); // print_r($dest_path); //返回状态 $data[] = ['name' => 'ok', 'value' => 'copy_by_is_id() success!']; echo json_encode($data); return true; } public function delete($is_id) { //查询结构信息 $Structure = $this->InfoStructures_model->Detail($is_id); if ($Structure == false) { $data[] = ['name' => 'no', 'value' => $this->lang->line('structures_error_notfound')]; echo json_encode($data); return false; } if ($this->InfoStructures_model->HasChild($Structure->is_id)) { $data[] = ['name' => 'no', 'value' => $this->lang->line('structures_error_haschild')]; echo json_encode($data); return false; } else { $info_detail = $this->Information_model->Detail($is_id); //删除前,备份amp的meta标签-isid。 //$meta_value = $this->InfoMetas_model->get($info_detail->ic_id, 'AMP_JSON'); //if ($meta_value) { // $this->Logs_model->backup_meta($info_detail->ic_id, $meta_value, 'AMP_JSON_' . $is_id); //} $this->Logs_model->delete($is_id, $info_detail->ic_content); if (! empty($info_detail->ic_summary)) { $this->Logs_model->backup_summary($is_id, $info_detail->ic_summary); } $this->InfoStructures_model->Delete($Structure->is_id); $this->InfoContents_model->Delete($Structure->is_ic_id); //如果是已经发布的页面,删除静态文件 if ($info_detail->ic_status == 1) { $this->update_cache($info_detail->ic_url, true); } //删除成功后返回一个上级链接给用户 $drumpurl = site_url('information/edit/' . $Structure->is_parent_id); if ($Structure->is_parent_id == 0) { $drumpurl = site_url('/'); } $data[] = ['name' => 'ok', 'value' => $drumpurl]; echo json_encode($data); return true; } } public function edit($is_id) { set_time_limit(30); //$this->output->enable_profiler(true); //查询结构信息 $Structure = $this->InfoStructures_model->Detail($is_id); if ($Structure == false) { show_404(); } //查询结构根节点 $rootStructure = $this->InfoStructures_model->GetParent($Structure->is_path, 1); //没有根节点就从它本身开始查询 if ($rootStructure == false) { $rootStructure_ID = $Structure->is_id; } else { $rootStructure_ID = $rootStructure->is_id; } //查询结构列表信息 $data['informationList'] = $this->Information_model->StructureList($rootStructure_ID); //增加一项,属于这个区域,但是结构数据层次不准确的也要列出来 //信息内容 $data['information'] = $this->Information_model->Detail($is_id); //检查该信息是否已收录 $data['embody'] = 1; if (isset($data['information']->ic_id)) { $embody = $this->InfoMetas_model->get($data['information']->ic_id, 'meta_embody'); if ($embody && $embody != '1') { $data['embody'] = 0; } //设置该信息所有未读消息为已读 $this->InfoSMS_model->readed_for_info($data['information']->ic_id); } //主节点信息 $data['rootInformation'] = $this->Information_model->Detail($rootStructure_ID); //获取未绑定的景点,只有城市有,无视其它区域类型 $data['unlink_landscape_list'] = []; //可选的展示模板 if (in_array($this->config->item('site_code'), ['vac', 'vc', 'jp', 'ru', 'it'])) { $this->config->set_item('templates', $this->config->item('templates_i')); } //可选的展示模板 if (in_array($this->config->item('site_code'), ['gh_vac', 'gh_vc', 'gh_jp', 'gh_ru', 'gh_it', 'gh_gm'])) { $this->config->set_item('templates', $this->config->item('templates_gh')); } if (in_array($this->config->item('site_code'), ['ah'])) { $this->config->set_item('templates', $this->config->item('templates_ah')); } if (in_array($this->config->item('site_code'), ['htravel'])) { $this->config->set_item('templates', $this->config->item('templates_htravel')); } if (in_array($this->config->item('site_code'), ['pgr'])) { $this->config->set_item('templates', $this->config->item('templates_pgr')); } if (in_array($this->config->item('site_code'), ['ts'])) { $this->config->set_item('templates', $this->config->item('templates_ts')); } if (in_array($this->config->item('site_code'), ['cht'])) { $this->config->set_item('templates', $this->config->item('templates_cht')); } if (in_array($this->config->item('site_code'), ['gm'])) { $this->config->set_item('templates', $this->config->item('templates_gm')); } if ($Structure->is_sitecode == 'ct') { $data['infoTypeList'] = $this->config->item('InfoType_ct'); } elseif ($Structure->is_sitecode == 'htravel') { $data['infoTypeList'] = $this->config->item('InfoType_htravel'); } else { switch ($data['rootInformation']->ic_ht_area_type) { case 'c': //城市 $data['infoTypeList'] = $this->config->item('InfoType_city'); $data['unlink_landscape_list'] = $this->Information_model->get_unlink_landscape_list($data['rootInformation']->ic_ht_area_id); break; case 'p': //省份 $data['infoTypeList'] = $this->config->item('InfoType_province'); break; case 'n': //国家 $data['infoTypeList'] = $this->config->item('InfoType_country'); break; case 't': //特殊区域 $data['infoTypeList'] = $this->config->item('InfoType_special'); break; case 'e': //大洲 $data['infoTypeList'] = []; break; case 'z': //公民游 $data['infoTypeList'] = $this->config->item('InfoType_citizen'); break; case 'v': //视频 $data['infoTypeList'] = $this->config->item('InfoType_video'); break; case 'f': //节庆 $data['infoTypeList'] = $this->config->item('InfoType_festival'); break; case 'pd': //产品管理 $data['infoTypeList'] = $this->config->item('InfoType_product'); //LMR 2016-7-14 if (in_array($this->config->item('site_code'), ['vac', 'vc', 'jp', 'ru', 'it'])) { $this->config->set_item('templates', $this->config->item('templates_product_i')); } else if ($this->config->item('site_code') === 'gm') { $this->config->set_item('templates', $this->config->item('templates_product_gm')); $data['infoTypeList'] = $this->config->item('InfoType_product_gm'); } else { $this->config->set_item('templates', $this->config->item('templates_product')); } break; default: $data['infoTypeList'] = ['不设置' => 'none', '首页' => 'root', '线路' => 'pd_tour']; break; } } $data['templateList'] = $this->config->item('templates'); //翰特产品类型 $data['productTypeList'] = $this->config->item('ProductType_HT'); //获取绑定的产品名称 switch ($data['information']->ic_ht_product_type) { case 't': $data['product_title'] = $this->Landscape_model->get_landscape_title($data['information']->ic_ht_product_id); break; default: $data['product_title'] = ''; break; } //获取最后更新者信息 $data['last_edit_info'] = $this->Logs_model->get_last_edit($is_id); //编辑列表 $sites = $this->config->item('site'); $data['editor_list'] = $this->Operator_model->get_site_user($this->config->item('site_code')); //获取作者列表 $data['author_list'] = $this->Infoauthors_model->get_site_user($this->config->item('site_code')); //获取备份信息记录 $data['content_backup_list'] = $this->Logs_model->get_backup_list($is_id); //所属导航栏目 $data['setting_website_nav'] = $this->InfoMetas_model->get_list(0, 'setting_website_nav_' . strtolower($this->config->item('site_code'))); $data['my_tags'] = []; $data['all_tags'] = []; if (is_series_site()) { //信息标签 //$this->InfoTags_model->ic_id = null; //$data['all_tags'] = $this->InfoTags_model->list_tag(); //$this->InfoTags_model->ic_id = $data['information']->ic_id; //$data['my_tags'] = $this->InfoTags_model->list_tag(); //差集 foreach ($data['all_tags'] as &$it) { foreach ($data['my_tags'] as $it2) { if ($it->it_id == $it2->icit_it_id) { $it = null; break; } } } $data['all_tags'] = array_filter($data['all_tags']); } //获取移动优先的模板,如果有的话 //增加判断站点,每个站点需要读取的模板不一样。 20210311 zp //取消预览,严重影响速度 2023-08-15 ycc /* if (is_mobile_first()) { $mobile_first_template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $mobile_first_template_path . EXT)) { $data['mobile_first_template'] = $this->load->view($mobile_first_template_path, '', true); //主样式表,内联模式 $main_css_string = compress_css(GET_HTTP('https://proxy-data.chinahighlights.com/css/mobile-first.css')); $data['mobile_first_template'] = str_replace('', '', $data['mobile_first_template']); //查找是否有静态文件 if ($this->html_file_helper('find', $data['information']->ic_url)) { $data['has_html_file'] = true; } } else { $data['mobile_first_template'] = '没有找到移动模板'; } } */ //判断是否生成静态文件 if (is_mobile_first()) { //查找是否有静态文件 if ($this->html_file_helper('find', $data['information']->ic_url)) { $data['has_html_file'] = true; } } $this->load->view('bootstrap3/header', $data); $this->load->view('bootstrap3/information_edit'); $this->load->view('bootstrap3/footer'); } public function edit_save() { header('Cache-Control: no-cache'); $information = $this->Information_model->Detail($this->input->post('is_id')); if ($information === false) { $data[] = ['name' => 'no', 'value' => $this->lang->line('structures_error_notfound')]; echo json_encode($data); return false; } $this->form_validation->set_rules('ic_url_title', 'lang:ic_url_title', 'required'); $this->form_validation->set_rules('ic_title', 'lang:ic_title', 'required'); $this->form_validation->set_rules('ic_author', 'lang:ic_author', 'required'); $this->form_validation->set_rules('ic_url', 'lang:ic_url', 'callback_ic_url_check'); //这里比较特别,检测两次ic_url,ci会冲掉第一个ic_url的规则,所以需要在下面也加上callback_ic_url_check $this->form_validation->set_rules('ic_url', 'lang:ic_url_format', 'callback_ic_url_check|callback_ic_url_format'); if ($this->input->post('ignore_seo_check') === false) { $this->form_validation->set_rules('ic_seo_title', 'lang:ic_seo_title', 'required'); $this->form_validation->set_rules('ic_seo_description', 'lang:ic_seo_description', 'required|max_length[250]'); } if ($this->form_validation->run() == false) { $data = []; foreach ($this->form_validation->_error_array as $key => $value) { $data[] = ['name' => $key, 'value' => $value]; } echo json_encode($data); } else { $ic_content = $this->input->post('ic_content'); if (strcasecmp($this->config->item('site_code'), "chinatravel") == 0) { //ct站替换中国大陆的英文 if (stripos($ic_content, 'mainland china') !== false) { $ic_content = str_ireplace('mainland china', 'the mainland of china', $ic_content); } } $this->InfoContents_model->Update($information->is_ic_id, $this->input->post('ic_url'), $this->input->post('ic_url_title'), $this->input->post('ic_type'), $this->input->post('ic_title'), $ic_content, $this->input->post('ic_summary'), $this->input->post('ic_seo_title'), $this->input->post('ic_seo_description'), $this->input->post('ic_seo_keywords'), $this->input->post('ic_show_bread_crumbs'), $this->input->post('ic_status'), $this->input->post('ic_template'), $this->input->post('ic_photo'), $this->input->post('ic_photo_width'), $this->input->post('ic_photo_height'), $this->input->post('ic_recommend_tours'), $this->input->post('ic_recommend_packages'), $this->input->post('ic_ht_area_id'), $this->input->post('ic_ht_area_type'), $this->input->post('ic_ht_product_id'), $this->input->post('ic_ht_product_type'), $this->input->post('ic_author')); //AMP更新和生成 beign $auto_update_amp = $this->input->get_post('auto_update_amp'); if (! empty($auto_update_amp) && $auto_update_amp == 'true' && $this->input->post('ic_status') == 1) { $amp_result = $this->amplib->auto_create($information->ic_id); if (! empty($amp_result)) { $amp_result = json_decode($amp_result); if ($amp_result->result == 'ok') { $amp_save_result = $this->amplib->edit_save($information->ic_id, $amp_result->data->amp, '1'); if (! empty($amp_save_result)) { $amp_save_result = json_decode($amp_save_result); if ($amp_save_result->name == 'no') { echo json_encode(['name' => 'no', 'value' => 'AMP转换语法错误,请重新进入AMP编辑器检查']); return; } } } } } //如果URL有修改也删除静态文件 if ($this->input->post('ic_url') != $information->ic_url) { $this->update_cache($information->ic_url, true); } //如果信息不发布则删除静态文件 if ($this->input->post('ic_status') == '0') { $this->update_cache($this->input->post('ic_url'), true); } //德语站FAQ版块需要删除原来的文件才能更新静态 $site_code = $this->config->item('site_code'); $ic_url = $this->input->post('ic_url'); $auto_update_cache = $this->input->get_post('auto_update_cache_checkbox'); if (strcasecmp($site_code, "gm") == 0 && ! empty($auto_update_cache)) { $update_info_log = $this->update_cache($ic_url, true); } else if (strcasecmp($site_code, "ch") == 0 && ! empty($auto_update_cache)) { //读取模板生成PC和移动优先文件 $information_new = $this->Information_model->Detail($this->input->post('is_id')); //$this->benchmark->mark('000'); $recommand_information = $this->recommand_information($information); //$this->benchmark->mark('111'); $this->make_www_cache('mobile', $information_new, $recommand_information); $this->make_www_cache('pc', $information_new, $recommand_information); //echo ' |000~111: '.$this->benchmark->elapsed_time('000', '111'); } else if (strcasecmp($site_code, "htravel") == 0 && ! empty($auto_update_cache)) { //读取模板生成PC和移动优先文件 $recommand_information = $this->recommand_information($information); $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_htravel('mobile', $information_new, $recommand_information); $this->make_www_cache_htravel('pc', $information_new, $recommand_information); } else if (strcasecmp($site_code, "gh") == 0 && ! empty($auto_update_cache)) { $recommand_information = $this->recommand_information($information); $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_gh('mobile', $information_new, $recommand_information); $this->make_www_cache_gh('pc', $information_new, $recommand_information); } else if (strcasecmp($site_code, "jh") == 0 && ! empty($auto_update_cache)) { $recommand_information = $this->recommand_information($information); $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_jh('mobile', $information_new, $recommand_information); $this->make_www_cache_jh('pc', $information_new, $recommand_information); } else if (strcasecmp($site_code, "thailand") == 0 && ! empty($auto_update_cache)) { $recommand_information = $this->recommand_information($information); $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_thailand('mobile', $information_new, $recommand_information); $this->make_www_cache_thailand('pc', $information_new, $recommand_information); } else if (strcasecmp($site_code, "chinatravel") == 0 && ! empty($auto_update_cache)) { //chinatravel读取模板生成PC和移动优先文件 $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_ct($information_new); // $this->make_www_cache_ct('pc', $information_new); } else if (strcasecmp($site_code, "shanghai") == 0 && ! empty($auto_update_cache)) { $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_sh($information_new); } else if (strcasecmp($site_code, "beijing") == 0 && ! empty($auto_update_cache)) { $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_bj($information_new); } else if (strcasecmp($site_code, "trainspread") == 0 && ! empty($auto_update_cache)) { $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_ts($information_new); } else if (strcasecmp($site_code, "guilin") == 0 && ! empty($auto_update_cache)) { $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_gl($information_new); } else if (strcasecmp($site_code, "hly") == 0 && ! empty($auto_update_cache)) { $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_hly($information_new); } else if (strcasecmp($site_code, "hlyen") == 0 && ! empty($auto_update_cache)) { $information_new = $this->Information_model->Detail($this->input->post('is_id')); $this->make_www_cache_hlyen($information_new); } else if (strcasecmp($site_code, "cht") == 0 && ! empty($auto_update_cache)) { $update_info_log = $this->update_cache($ic_url); } else if (strcasecmp($site_code, "htravel") == 0 && ! empty($auto_update_cache)) { //$update_info_log = $this->update_cache($ic_url); } else if (strcasecmp($site_code, "cht") != 0 && strcasecmp($site_code, "gm") != 0 && strcasecmp($site_code, "htravel") != 0) { //非cht站点并且非GM并且非AH $update_info_log = $this->update_cache($ic_url); } else if (strcasecmp($site_code, "ct") == 0 && ! empty($auto_update_cache)) { $update_info_log = $this->update_cache($ic_url); } if (empty($update_info_log) || count($update_info_log) == 0 || ! isset($update_info_log[0]['url'])) { $update_info_log = 'not found update info log'; } $data[] = ['name' => 'ok', 'value' => $this->lang->line('form_info_success'), 'update_info_log' => $update_info_log]; $this->Logs_model->backup($information->is_id, $ic_content); $this->Logs_model->backup_summary($information->is_id, $this->input->post('ic_summary')); //作者个人页面更新 if ($this->config->item('site_code') == 'cht') { $author_pages = [ 'zzy' => 'http://www.chinahighlights.com/author/ruru-zhou/', 'Gavin' => 'http://www.chinahighlights.com/author/gavin-van-hinsbergh/', 'WBL' => 'http://www.chinahighlights.com/author/annie-wu/', 'PKL' => 'http://www.chinahighlights.com/author/kelly/', '210000017' => 'http://www.chinahighlights.com/author/lynne-buddin/', '202000027' => 'http://www.chinahighlights.com/author/margaux/', '202000019' => 'http://www.chinahighlights.com/author/anusuya-mitra/', '210000018' => 'http://www.chinahighlights.com/author/connie/', '210000016' => 'http://www.chinahighlights.com/author/ben/', '200000008' => 'http://www.chinahighlights.com/author/pete-marchetto/', '210000019' => 'http://www.chinahighlights.com/author/oscar/', '210000021' => 'http://www.chinahighlights.com/author/matthew/', '200000013' => 'http://www.chinahighlights.com/author/kit-onslow-smith/', '202000018' => 'http://www.chinahighlights.com/author/klaus-capra/', '202000017' => 'http://www.chinahighlights.com/author/christy-campbell/', ]; $key = $this->input->post('ic_author'); if (isset($author_pages[$key])) { $this->update_cache($author_pages[$key]); } } echo json_encode($data); } } //URL不重复检查 public function ic_url_check() { if ($this->input->post('ignore_url_check')) { return true; } $url = $this->input->post('ic_url'); if ($url === '') { return true; } $is_id = $this->input->post('is_id'); return $this->Information_model->URLcheck($is_id, $url); } //URL格式检查,不能包含大小写、空格等特殊字符 public function ic_url_format($url) { if ($url != mb_strtolower($url) || strpos($url, ' ') !== false || strpos($url, '--') !== false || strpos($url, ')') !== false || strpos($url, '(') !== false || strpos($url, '//') !== false || strpos($url, '\\') !== false) { return false; } return true; } public function update_www_cache($ic_id) { $information = $this->Information_model->detail_by_ic_id($ic_id); if (empty($information)) { echo json_encode(['name' => 'no', 'data' => '找不到这个页面']); return false; } if ($this->html_file_helper('find', $information->ic_url)) { $recommand_information = $this->recommand_information($information); //用于批量更新,CH和chinatravel分开 ,20210317 zp if ($this->config->item('site_code') == 'ch') { $this->make_www_cache('pc', $information, $recommand_information); $this->make_www_cache('mobile', $information, $recommand_information); } else if ($this->config->item('site_code') == 'htravel') { $this->make_www_cache_htravel('pc', $information, $recommand_information); $this->make_www_cache_htravel('mobile', $information, $recommand_information); } else if ($this->config->item('site_code') == 'jh') { $this->make_www_cache_jh('pc', $information, $recommand_information); $this->make_www_cache_jh('mobile', $information, $recommand_information); }else if ($this->config->item('site_code') == 'thailand') { $this->make_www_cache_thailand('pc', $information, $recommand_information); $this->make_www_cache_thailand('mobile', $information, $recommand_information); } else if ($this->config->item('site_code') == 'chinatravel') { $this->make_www_cache_ct($information); // $this->make_www_cache_ct('mobile', $information); } else if ($this->config->item('site_code') == 'shanghai') { $this->make_www_cache_sh($information); } else if ($this->config->item('site_code') == 'beijing') { $this->make_www_cache_bj($information); } else if ($this->config->item('site_code') == 'trainspread') { $this->make_www_cache_ts($information); } else if ($this->config->item('site_code') == 'guilin') { $this->make_www_cache_gl($information); } else if ($this->config->item('site_code') == 'hly') { $this->make_www_cache_hly($information); } else if ($this->config->item('site_code') == 'hlyen') { $this->make_www_cache_hlyen($information); } else if ($this->config->item('site_code') == 'gh') { $this->make_www_cache_gh('pc', $information, $recommand_information); $this->make_www_cache_gh('mobile', $information, $recommand_information); } echo json_encode(['name' => 'yes', 'data' => '更新成功!']); return true; } else { echo json_encode(['name' => 'no', 'data' => '没有发布静态页面: ' . $information->ic_url]); return false; } } //静态文件操作 public function html_file_helper($active = 'find', $ic_url = false) { if (empty($ic_url)) { $ic_url = $this->input->get_post('ic_url'); } if (empty($ic_url)) { return false; } $html_file = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $ic_url; $html_file = str_replace("\\", "/", $html_file); if (substr($html_file, -1, 1) == '/') { $html_file = $html_file . 'index.htm'; } $html_file_mobile = $html_file . '-mobile.htm'; $html_file_pc = $html_file . '-pc.htm'; switch ($active) { case 'find': //寻找静态文件 if (is_file($html_file_mobile) || is_file($html_file_pc)) { return true; } else { return false; } // break; case 'delete': if (is_file($html_file_mobile)) { unlink($html_file_mobile); } if (is_file($html_file_pc)) { unlink($html_file_pc); } echo '删除静态文件成功! ' . $ic_url; break; default: return false; } return false; } //生成静态文件 $device='mobile' or 'pc' public function make_www_cache($device, $information, $recommand_information) { $data = []; switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, '', true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', '', true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } // CH Home 下层节点名称和链接映射 $group_map = [ 278008010 => [ 'ic_url' => '/travelguide/culture/', 'ic_url_title' => 'Chinese Culture', ], 278008011 => [ 'ic_url' => '/citytour/', 'ic_url_title' => 'Destinations', ], 278008012 => [ 'ic_url' => '/aboutus/', 'ic_url_title' => 'About Us', ], 278008013 => [ 'ic_url' => '/citytour/', 'ic_url_title' => 'City Tours', ], 278008014 => [ 'ic_url' => '/tour/', 'ic_url_title' => 'China Tours', ], ]; $breadcrumb_data = $this->Information_model->get_breadcrumb_data($information->is_id, $information->is_path, $group_map); $breadcrumb_structured_data_content = $this->load->view( $template_path . '-structured-data-breadcrumb', ['breadcrumb_data' => $breadcrumb_data, 'information' => $information], true ); $template = str_replace( '', $breadcrumb_structured_data_content, $template ); //替换模板中的标签 $template = str_replace('', $information->ic_seo_title, $template); $template = str_replace('', $information->ic_seo_description, $template); $template = str_replace('', $information->ic_seo_keywords, $template); $template = str_replace('', $this->config->item('site_url') . $information->ic_url, $template); // 动态加载反馈标签,第一个城市不足八条,使用第二城市数据。 // HTLM:
// 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_list = $this->Feedback_model->get_feedback_by_city_list($city_name_list, FALSE); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/ch-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_content, $information->ic_content ); } } // 动态加载反馈标签,每个城市三十条反馈。 // HTLM:
// 解析结果:; Bangkok $feedback30_array = []; preg_match_all('^^', $information->ic_content, $feedback30_array); if (! empty($feedback30_array)) { foreach ($feedback30_array[0] as $index => $tag_name) { $city_name = $feedback30_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 30, FALSE); $feedback_30_content = $this->load->view( 'mobile_first/ch-feedback-30-list', ['feedback_list' => $feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_30_content, $information->ic_content ); } } // 集合页面反馈标签 $feedback_city_array = []; preg_match_all('^^', $information->ic_content, $feedback_city_array); if (! empty($feedback_city_array)) { foreach ($feedback_city_array[0] as $index => $tag_name) { $city_name_string = $feedback_city_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_city_list = []; foreach ($city_name_list as $index => $city_name) { $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 5, FALSE); $data_name = str_replace(" ", "_", $city_name); $feedback_city_list[$data_name] = $feedback_list; } $feedback_city_content = $this->load->view( 'mobile_first/ch-feedback-city-list', $feedback_city_list, true ); $information->ic_content = str_replace( $tag_name, $feedback_city_content, $information->ic_content ); } } // 天气预报模板 $weather_forecast_content = $this->load->view( $template_path . '-weather-forecast', [], true ); $information->ic_content = str_replace( '', $weather_forecast_content, $information->ic_content ); // 火车票首页搜索框 --zp $template_TrainSearch = ""; if ($information->ic_url == "/china-trains/hometest.htm" || $information->ic_url == "/china-trains/") { $template_TrainSearch = $this->load->view($template_path . '-train-index', null, true); $information->ic_content = str_replace( '', $template_TrainSearch, $information->ic_content ); } //火车票搜索框添加 -- zp if ($information->is_parent_id == "278008234" && $information->ic_url != "/china-trains/") { //20240403 字节 //本地测试的火车父类ID为:278035939 。网前为:278008234 $meta_train_city = get_meta($information->ic_id, 'meta_train_city'); //默认的出发及目的地城市 , beijing|shanghai $data_TrainCity = []; $data_TrainCity["from"] = ""; $data_TrainCity["to"] = ""; if (! empty($meta_train_city)) { if (strpos($meta_train_city, '|') !== false) { $arrTrainCity = explode('|', $meta_train_city); $data_TrainCity["from"] = $arrTrainCity[0]; $data_TrainCity["to"] = $arrTrainCity[1]; } } $template_TrainSearch = $this->load->view($template_path . '-train-detail', $data_TrainCity, true); $template = str_replace('', $template_TrainSearch, $template); } $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); $meta_google_ad_article = get_meta($information->ic_id, 'meta_google_ad_article'); $ads_by_google = ! empty($meta_google_ad_article); //H1模板替换 $data_H1 = []; $data_H1['infocategory'] = $this->Information_model->get_detail_by_path($information->is_path, 1); //信息所属分类,获取信息顶级节点内容 $data_H1['author'] = ''; //获取作者信息 $data_H1['meta_news_createdate'] = $this->get_publish_date_in_6_month($information); $author_url = ''; $author = $this->Operator_model->get_author_nikename($information->ic_author); if (! empty($author)) { $data_H1['author'] = $author->OPI_FirstName; $data_H1['OPI_Code'] = $author->OPI_Code; $author_url = $this->get_author_url('www.chinahighlights.com', $author->OPI_Code); } else { $author_web = $this->Infoauthors_model->detail_by_id($information->ic_author); //原始作者,可能是在线作者等 if (! empty($author_web)) { $data_H1['author'] = $author_web->a_name; } } // 头部大图 $parsed_photo = $information->ic_photo; if ($device == 'mobile') { $meta_addon_picture_mobile = get_meta($information->ic_id, 'meta_addon_picture_mobile'); if (! empty($meta_addon_picture_mobile)) { $parsed_photo = $meta_addon_picture_mobile; } } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); if (! empty($meta_addon_picture)) { $parsed_photo = $meta_addon_picture; } } // 检查图片地址格式 $parsed_photo_url = parse_url($parsed_photo); if (strpos($parsed_photo, "data.chinahighlights.com") !== false) { //判断是否录入了//data.chinahighlihgts.com这种以前兼容http的图片url //如果有,就不需要改变图片url } else if ( (! isset($parsed_photo_url['host']) || ! isset($parsed_photo_url['scheme'])) && isset($parsed_photo_url['path']) ) { $parsed_photo = 'https://images.chinahighlights.com' . $parsed_photo_url['path']; } $data_H1['ic_title'] = $information->ic_title; $data_H1['ic_photo'] = $parsed_photo; $data_H1['breadcrumb_data'] = $breadcrumb_data; $data_H1['ads_by_google'] = $ads_by_google; $data_H1['ic_datetime'] = $information->ic_datetime; if ($information->ic_url == "/china-trains/" && $device == 'mobile') { //火车首页不需要头部大图及H1标题,但是需要一个H1的标签来占位置,避免表单上移 $template_H1 = "

"; } else { $template_H1 = $this->load->view($template_path . '-h1', $data_H1, true); } $template = str_replace('', $template_H1, $template); //非产品页面 if (empty($meta_product_code)) { $template = str_replace('?product_code=', '', $template); $article_structured_data_content = $this->load->view( $template_path . '-structured-data-article', ['information' => $information, 'author_name' => $data_H1['author'], 'author_url' => $author_url], true ); $template = str_replace('', $article_structured_data_content, $template); $info_page_form_content = $this->load->view($template_path . '-info-page-form', false, true); $information->ic_content = str_replace('', $info_page_form_content, $information->ic_content); $visa_free_tester_content = $this->load->view($template_path . '-visa-free-tester', false, true); $information->ic_content = str_replace('', $visa_free_tester_content, $information->ic_content); } else { $inquiry_form_template = $this->load->view($template_path . '-inquiry-form', ['meta_product_code' => $meta_product_code], true); $template = str_replace('?product_code=', '?product_code=' . $meta_product_code, $template); $information->ic_content = str_replace('', $inquiry_form_template, $information->ic_content); } // CH: 1; AH: 28; GH : 33 $price_tag_list = $this->parse_price_tag($information->ic_content, 1); foreach ($price_tag_list as $price_tag) { $information->ic_content = str_replace( $price_tag['placeholder'], $price_tag['price_number'], $information->ic_content ); } //---day tours--- 20210922 zp //本地 278035929 //网前 278008224 if ($information->is_parent_id == "278008224") { $template = str_replace( '', '', $template ); if (! empty($meta_product_code)) { //准备需要的数据 $dataTrippest = []; $dataTrippest["ic_title"] = $information->ic_title; //附加选项 $t_Type = get_meta($information->ic_id, 'meta_trippest_type'); if (isset($t_Type)) { $dataTrippest["t_Type"] = $t_Type; } else { $dataTrippest["t_Type"] = "general"; } $t_package = get_meta($information->ic_id, 'meta_trippest_package'); $dataTrippest["t_package"] = explode("|", $t_package); $t_excludedate = get_meta($information->ic_id, 'meta_trippest_excludedate'); $dataTrippest["t_excludedate"] = $t_excludedate; $t_includedate = get_meta($information->ic_id, 'meta_trippest_includedate'); $dataTrippest["t_includedate"] = $t_includedate; $t_excludemonth = get_meta($information->ic_id, 'meta_trippest_excludemonth'); $dataTrippest["t_excludemonth"] = $t_excludemonth; $dataTrippest["t_limitperson"] = get_meta($information->ic_id, 'meta_trippest_limitperson'); //获取翰特对应信息 $dataTrippest['PagDetail'] = $this->trippest_model->get_pagdetail($meta_product_code); //所属那个目的地 select SYC_SN,SYC2_CodeDiscribe from dbo.V_System_Code where SYC_Type=132 and LGC_LGC=2 // 132001 北京目的地 // 132002 上海目的地 // 132003 西安目的地 // 132004 桂林目的地 // 132005 成都目的地 if (isset($dataTrippest['PagDetail']) && $dataTrippest['PagDetail'] != null) { $PAG_SourceType = $dataTrippest['PagDetail']->PAG_SourceType; switch ($PAG_SourceType) { case '132001': $dataTrippest['PAG_SourceType'] = "beijing"; break; case '132002': $dataTrippest['PAG_SourceType'] = "shanghai"; break; case '132003': $dataTrippest['PAG_SourceType'] = "xian"; break; case '132004': $dataTrippest['PAG_SourceType'] = "guilin"; break; case '132005': $dataTrippest['PAG_SourceType'] = "chengdu"; break; case '132006': $dataTrippest['PAG_SourceType'] = "zhangjiajie"; break; case '132007': $dataTrippest['PAG_SourceType'] = "huangshan"; break; default: $dataTrippest['PAG_SourceType'] = ""; break; } //每周发团 $PAG_Scheme = $dataTrippest['PagDetail']->PAG_Scheme; $dataTrippest['PAG_Scheme'] = $PAG_Scheme; //接送 if ($dataTrippest["t_Type"] == "transfer" || 1 == 1) { $PagList = $this->trippest_model->GetTransfer($dataTrippest['PagDetail']->PAG_SN); $dataTrippest["PagList"] = $PagList; } //价格 // $price = $this->trippest_model->get_price("BJALC-1",2); $price = $this->trippest_model->get_price($dataTrippest['PagDetail']->PAG_Code, 2); $showPrice = ""; if (! empty($price)) { $PKP_AdultNetPrice = $price->PKP_AdultNetPrice; $PKP_AdultSpecialPrice = $price->PKP_AdultSpecialPrice; if ($PKP_AdultSpecialPrice > 0) { $showPrice = $PKP_AdultSpecialPrice; } else { $showPrice = $PKP_AdultNetPrice; } } $dataTrippest["showPrice"] = $showPrice; //替换内容 $trippest_detail_template = $this->load->view($template_path . '-daytours-detail', $dataTrippest, true); // print_r($trippest_detail_template); // die(); $information->ic_content = str_replace('', $trippest_detail_template, $information->ic_content); } } } //---day tours end ---- //信息推荐 $template_recommand = $recommand_information; //$this->recommand_information($information); 从外面传进来,pc和移动只需要查一次,减少数据库负担 $template = str_replace('', $this->load->view($template_path . '-next', ['recommands' => $template_recommand], true), $template); $meta_show_advertise = get_meta($information->ic_id, 'meta_show_advertise'); // //广告,改叫tips,防止被插件屏蔽 if (! empty($template_recommand['Tips Right TOP']) && ($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', "
" . $template_recommand['Tips Right TOP']->it_content . "
", $template); } if (! empty($template_recommand['Tips Right']) && ($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', "
" . $template_recommand['Tips Right']->it_content . "
", $template); } // /day-tours/(278008224) 节点不使用推荐信息 if ($information->is_parent_id == '278008224') { } else { // 右侧列表广告 $tips_right_a = []; $tips_right_b = []; $tips_right_c = []; for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right A_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_a[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right B_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_b[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right C_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_c[] = $recommand_information[$key]; } } $tips_right_list_content = $this->load->view( 'mobile_first/ch-tips-right-list', [ 'tips_right_a' => $tips_right_a, 'tips_right_b' => $tips_right_b, 'tips_right_c' => $tips_right_c, ], true ); if (($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', $tips_right_list_content, $template); } } //文中的信息推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-article', ['recommands' => $template_recommand], true), $information->ic_content); } //文中的线路推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-tour', ['recommands' => $template_recommand], true), $information->ic_content); } // 未勾选In Article 广告时,加入标签 ,让 ezoic 识别出该页面不展示广告。 if (empty($meta_google_ad_article) || ! $meta_google_ad_article) { $template = str_replace( '', '', $template ); } else { $template = str_replace( '', '', $template ); } //替换内容中广告 $temp_array = []; preg_match_all('^^', $information->ic_content, $temp_array); if (! empty($temp_array[1])) { foreach ($temp_array[1] as $key => $item) { $tips_detail = $this->recommends_and_tips_model->tips_detail($item); if ($tips_detail) { $information->ic_content = str_replace($temp_array[0][$key], $tips_detail->it_content, $information->ic_content); } } } //顶部全屏大图 if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); } //顶部视频 $meta_news_video = get_meta($information->ic_id, 'meta_news_video'); $meta_video_picture = get_meta($information->ic_id, 'meta_video_picture'); if (! empty($meta_news_video) && ! empty($meta_video_picture)) { $template = str_replace('', '
', $template); } if (is_file('D:/wwwroot/origin-data.chinahighlights.com/css/mobile-first.css')) { //主样式表,内联模式,优先读取本地,没有在从网络读取,为了加速 $main_css_string = compress_css(file_get_contents('D:/wwwroot/origin-data.chinahighlights.com/css/mobile-first.css')); } else { $main_css_string = compress_css(GET_HTTP('https://proxy-data.chinahighlights.com/css/mobile-first.css')); } $template = str_replace('', '', $template); // /china-trains/ 节点 if ($information->is_parent_id == "278008234") { $template = str_replace( '', '', $template ); } // 自定义 Html Head $meta_custom_head = get_meta($information->ic_id, 'meta_custom_head'); if (! empty($meta_custom_head)) { $template = str_replace('', $meta_custom_head, $template); } //额外样式 $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { if ($meta_addon_css == 'https://proxy-data.chinahighlights.com/css/tour-detail-former.css' && is_file('D:/wwwroot/origin-data.chinahighlights.com/css/tour-detail-former.css')) { $meta_addon_css_string = compress_css(file_get_contents('D:/wwwroot/origin-data.chinahighlights.com/css/tour-detail-former.css')); } else { $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); } $template = str_replace('', '', $template); } //额外js $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $template = str_replace('', '', $template); } $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $template = str_replace('', '', $template); } $meta_note_ogtitle = get_meta($information->ic_id, 'meta_note_ogtitle'); if (! empty($meta_note_ogtitle)) { $template = str_replace('', '', $template); } $meta_note = get_meta($information->ic_id, 'meta_note'); if (! empty($meta_note)) { $template = str_replace('', '', $template); } //设置内容图片缓加载 $lazy_content = $this->html_optimize_lib->set_lazy_loader($information->ic_content, 'https://data.chinahighlights.com/grey.gif'); $template = str_replace('', $lazy_content, $template); //替换内容中各种标签 $tag_why_us = $this->load->view($template_path . '-why-us', false, true); $template = str_replace('', $tag_why_us, $template); //Google广告代码 //if (!empty(get_meta($information->ic_id, 'meta_google_ad_content'))) { $template = str_replace('', '', $template); //} //社媒分享图片 $full_ic_photo = ''; if (! empty($information->ic_photo)) { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } else { $full_ic_photo = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } if (! empty($full_ic_photo)) { $template = str_replace('', '', $template); } //设置图片尺寸 // 优化过图片目录:D:\wwwroot\origin-images.chinahighlights.com\optimize\ $www_local_path = 'D:/wwwroot/origin-www.chinahighlights.com'; $image_local_path = 'D:/wwwroot/origin-images.chinahighlights.com/optimize'; if (is_dir($www_local_path) && is_dir($image_local_path)) { $template = $this->html_optimize_lib->set_image_size_local($template, $www_local_path, $image_local_path); } else { $template = $this->html_optimize_lib->set_image_size($template); } // /travelguide/chinese-zodiac/monthly-fortune-for-dog.htm $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } // 六个月以前的文章不显示发布时间 private function get_publish_date_in_6_month($information) { $publish_date_in_6_month = NULL; $meta_news_createdate = get_meta($information->ic_id, 'meta_news_createdate'); if (! empty($meta_news_createdate) && strtotime($meta_news_createdate)) { $publish_date = new DateTime($meta_news_createdate, new DateTimeZone('UTC')); $current_date = new DateTime('now', new DateTimeZone('UTC')); $interval = $current_date->diff($publish_date); $total_months = $interval->y * 12 + $interval->m; if ($total_months < 6) { $publish_date_in_6_month = $meta_news_createdate; } } return $publish_date_in_6_month; } public function test_recommand() { $information = $this->Information_model->Detail($this->input->get('is_id')); $recommand_information = $this->recommand_information($information); // var_dump($recommand_information); $tips_right_a = []; $tips_right_b = []; $tips_right_c = []; for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right A_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_a[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right B_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_b[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right C_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_c[] = $recommand_information[$key]; } } echo 'List Tips Right A: ' . COUNT($tips_right_a); echo '; List Tips Right B: ' . COUNT($tips_right_b); echo '; List Tips Right C: ' . COUNT($tips_right_c); $tips_right_list_content = $this->load->view( 'mobile_first/ah-tips-right-list', [ 'tips_right_a' => $tips_right_a, 'tips_right_b' => $tips_right_b, 'tips_right_c' => $tips_right_c, ], true ); echo $tips_right_list_content; } public function test_feedback() { $city_name_list = []; $city_name_list[] = 'Bangkok'; $feedback_list = $this->Feedback_model->get_feedback_by_city_list($city_name_list); var_dump($feedback_list); echo 'All feedback -------------------------------------------------'; $feedback_list = $this->Feedback_model->get_feedback_by_city_list($city_name_list, true); var_dump($feedback_list); } public function test_ch_feedback30() { $feedback30_array = []; preg_match_all('^^', '
', $feedback30_array); if (! empty($feedback30_array)) { foreach ($feedback30_array[0] as $index => $tag_name) { $city_name = $feedback30_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 2); $feedback_content = $this->load->view( 'mobile_first/ch-feedback-30-list', ['feedback_list' => $feedback_list], true ); echo $feedback_content; } } } public function test_get_feedback_by_city_name() { $feedback_list = $this->Feedback_model->get_feedback_by_city_name('Bangkok', 5); var_dump($feedback_list); } public function test_feedback_city_list() { $feedback_city_array = []; preg_match_all('^^', '
', $feedback_city_array); if (! empty($feedback_city_array)) { foreach ($feedback_city_array[0] as $index => $tag_name) { $city_name_string = $feedback_city_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_city_list = []; foreach ($city_name_list as $index => $city_name) { $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 5); $data_name = str_replace(" ", "_", $city_name); $feedback_city_list[$data_name] = $feedback_list; } // header('Content-Type: application/json'); // echo json_encode($feedback_city_list); $feedback_content = $this->load->view( 'mobile_first/ah-feedback-city-list', $feedback_city_list, true ); echo $feedback_content; } } } //
#ah-mtc-3,st,2#
// CH: 1; AH: 28; GH : 33 public function test_price() { $price_rule = base64_decode($this->input->get('price_rule')); $dept_sn = $this->input->get('dept_sn'); $price_item_array = $this->price_pregmatch($price_rule); echo 'price_item_array: '; var_dump($price_item_array); $price_tag_list = $this->parse_price_tag($price_rule, $dept_sn); echo '
price_tag_list: '; var_dump($price_tag_list); } /*! * 页面中有价格标签,查出价格并替换内容 * @author LiaoYijun * @date 2023-05-12 * @param string $price_content 包含价格标签的内容 * @return array 包含价格与占位符的数组 */ public function parse_price_tag($price_content, $dept_sn = 28) { $price_item_array = $this->price_pregmatch($price_content); $price_tag_list = []; if (! empty($price_item_array)) { foreach ($price_item_array as $price_item) { $price_date = ! empty($price_item->price_date) ? $price_item->price_date : date('Y-m-d', time() + 86400 * 7); //当前时间7天后的价格 $price_number = ''; //优先读取新的价格体系 $price = $this->PrimeLinePrice_model->search($price_item->cli_no, 1, $price_item->cli_grade, $price_item->person_size, $price_date, $dept_sn); if (! empty($price)) { switch (strtoupper($price_item->price_people)) { case 'A': $price_number = $price->PLP_AdultUnitPrice; break; case 'C': $price_number = $price->PLP_ChildUnitPrice; break; case 'B': $price_number = $price->PLP_BabyUnitPrice; break; case 'R': $price_number = $price->PLP_RoomDiffPrice; break; case 'AR': $price_number = $price->PLP_AdultUnitPrice + $price->PLP_RoomDiffPrice; //成人加单间房差 break; default: $price_number = $price->PLP_AdultUnitPrice; } } else { $price = $this->Price_model->search($price_item->cli_no, 1, $price_item->cli_grade, false, $price_date); if (! empty($price)) { switch (strtoupper($price_item->price_people)) { case 'A': switch ($price_item->person_size) { case '1': $price_number = $price->CLP_OneAdultPriceRMB; break; case '2': //25 $price_number = $price->CLP_TwoToFiveAdultPriceRMB; break; case '6': //69 $price_number = $price->CLP_SixToNineAdultPriceRMB; break; case '10': $price_number = $price->CLP_OverTenAdultPriceRMB; break; default: $price_number = $price->CLP_TwoToFiveAdultPriceRMB; } break; case 'C': $price_number = 0; break; case 'B': $price_number = 0; break; case 'R': switch ($price_item->person_size) { case '1': $price_number = $price->CLP_OneRoomDiffPriceRMB; break; case '2': //25 $price_number = $price->CLP_TwoToFiveRoomDiffPriceRMB; break; case '6': //69 $price_number = $price->CLP_SixToNineRoomDiffPriceRMB; break; case '10': $price_number = $price->CLP_OverTenRoomDiffPriceRMB; break; default: $price_number = $price->CLP_TwoToFiveRoomDiffPriceRMB; } break; case 'AR': //成人加单间房差 $price_number = 0; break; default: $price_number = 0; } } } if ($dept_sn == 1) { $price_number = $this->currency->convert_moneny_by_char($price_number, "USD"); } $site_money = $this->currency->calc_show_price($price_number); //把金额格式化为带有逗号(,)方便阅读,如 12,345 $price_number = is_numeric($price_number) ? number_format($site_money) : $price_number; if (! empty($price_number)) { $price_tag = [ 'placeholder' => $price_item->placeholder, 'price_number' => $price_number, ]; $price_tag_list[] = $price_tag; } } } return $price_tag_list; } //使用正则匹配出价格标签,返回一个价格数组 private function price_pregmatch($content) { $price_array = []; $temp_array = []; $result = false; //#ah-1,lx,2,2016-01-23,A# //线路代号,等级(st标准、lx豪华、ec经济),人等,时间,人型(A成人、C小孩、B婴儿、R单间房差、AR成人+房差) preg_match_all('^#[a-zA-Z0-9,-]+#^', $content, $temp_array); foreach ($temp_array[0] as $item) { $placeholder = $item; $item = str_replace('#', '', $item); $price_array = explode(',', $item); $cli_no = ! empty($price_array[0]) ? $price_array[0] : false; //线路代号 if (empty($cli_no)) { continue; //没有设置线路代号则进入下一条 } $cli_grade = ! empty($price_array[1]) ? $price_array[1] : false; //标准7001、豪华7002、经济7003 switch (strtoupper($cli_grade)) { case 'ST': $cli_grade = '7001'; break; case 'LX': $cli_grade = '7002'; break; case 'EC': $cli_grade = '7003'; break; default: $cli_grade = '7001'; } $person_size = (! empty($price_array[2]) && is_numeric($price_array[2])) ? $price_array[2] : 2; //人等1,2-5,6-9,10,默认2人等 //为了兼容以前的人等方式,把算数人等转换为单数 25=>2 switch ($person_size) { case '25': $person_size = '2'; break; case '69': $person_size = '6'; break; } $price_date = ! empty($price_array[3]) ? $price_array[3] : false; //价格时间 $price_people = ! empty($price_array[4]) ? $price_array[4] : 'A'; //A成人、C小孩、B婴儿、R单间房差 $result[] = (object) ['placeholder' => $placeholder, 'cli_no' => $cli_no, 'cli_grade' => $cli_grade, 'person_size' => $person_size, 'price_date' => $price_date, 'price_people' => $price_people]; } return $result; } public function make_www_cache_gh($device, $information, $recommand_information) { $data = []; $meta_show_advertise = get_meta($information->ic_id, 'meta_show_advertise'); $data['meta_show_advertise'] = $meta_show_advertise; switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, '', true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } // GH Home 下层节点名称和链接映射 $group_map = [ 278009289 => [ 'ic_url' => '/destinations', 'ic_url_title' => 'Destinations', ], 278009290 => [ 'ic_url' => '/about', 'ic_url_title' => 'About Us', ], ]; $breadcrumb_data = $this->Information_model->get_breadcrumb_data($information->is_id, $information->is_path, $group_map); $breadcrumb_structured_data_content = $this->load->view( $template_path . '-structured-data-breadcrumb', ['breadcrumb_data' => $breadcrumb_data, 'information' => $information], true ); $template = str_replace( '', $breadcrumb_structured_data_content, $template ); //替换模板中的标签 $template = str_replace('', $information->ic_seo_title, $template); $template = str_replace('', $information->ic_seo_description, $template); $template = str_replace('', $information->ic_seo_keywords, $template); $template = str_replace('', $this->config->item('site_url') . $information->ic_url, $template); //顶部全屏大图 if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); } $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); $ads_by_google = ! empty(get_meta($information->ic_id, 'meta_google_ad_article')); //H1模板替换 $data_H1 = []; $data_H1['infocategory'] = $this->Information_model->get_detail_by_path($information->is_path, 1); //信息所属分类,获取信息顶级节点内容 $data_H1['author'] = ''; //获取作者信息 $data_H1['meta_news_createdate'] = $this->get_publish_date_in_6_month($information); $author = $this->Operator_model->get_author_nikename($information->ic_author); $author_url = ''; if (! empty($author)) { $data_H1['author'] = $author->OPI_FirstName; $data_H1['OPI_Code'] = $author->OPI_Code; $author_url = $this->get_author_url('www.globalhighlights.com', $author->OPI_Code); } else { $author_web = $this->Infoauthors_model->detail_by_id($information->ic_author); //原始作者,可能是在线作者等 if (! empty($author_web)) { $data_H1['author'] = $author_web->a_name; } } $data_H1['ic_title'] = $information->ic_title; $data_H1['ic_photo'] = $meta_addon_picture; //$information->ic_photo; 用额外设置的图片替代 $data_H1['breadcrumb_data'] = $breadcrumb_data; $data_H1['ads_by_google'] = $ads_by_google; $template_H1 = $this->load->view($template_path . '-h1', $data_H1, true); $template = str_replace('', $template_H1, $template); if (empty($meta_product_code)) { $addthis_widget = $this->load->view($template_path . '-add-this', false, true); $template = str_replace('', $addthis_widget, $template); } $article_structured_data_content = $this->load->view( 'mobile_first/gh-structured-data-article', ['information' => $information, 'author_name' => $data_H1['author'], 'author_url' => $author_url], true ); $template = str_replace('', $article_structured_data_content, $template); if (! empty($meta_product_code)) { // $product_code_input = ""; $template = str_replace('', $product_code_input, $template); } if (empty($meta_product_code)) { $template = str_replace('?product_code=', '', $template); } else { $template = str_replace('?product_code=', '?product_code=' . $meta_product_code, $template); } //信息推荐 $template_recommand = $recommand_information; //$this->recommand_information($information); 从外面传进来,pc和移动只需要查一次,减少数据库负担 $template = str_replace('', $this->load->view($template_path . '-next', ['recommands' => $template_recommand], true), $template); // //广告,改叫tips,防止被插件屏蔽 if (! empty($template_recommand['Tips Right TOP'])) { // $template = str_replace('', "
", $template); } if (! empty($template_recommand['Tips Right']) && ($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', "
" . $template_recommand['Tips Right']->it_content . "
", $template); } // 右侧列表广告 $tips_right_a = []; $tips_right_b = []; $tips_right_c = []; for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right A_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_a[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right B_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_b[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right C_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_c[] = $recommand_information[$key]; } } $tips_right_list_content = $this->load->view( 'mobile_first/gh-tips-right-list', [ 'tips_right_a' => $tips_right_a, 'tips_right_b' => $tips_right_b, 'tips_right_c' => $tips_right_c, ], true ); if (($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', $tips_right_list_content, $template); } //文中的信息推荐 if (strpos($information->ic_content, '') !== false) { // $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-article', array('recommands' => $template_recommand), TRUE), $information->ic_content); } //文中的线路推荐 if (strpos($information->ic_content, '') !== false) { // $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-tour', array('recommands' => $template_recommand), TRUE), $information->ic_content); } //替换内容中广告 $temp_array = []; preg_match_all('^^', $information->ic_content, $temp_array); if (! empty($temp_array[1])) { foreach ($temp_array[1] as $key => $item) { $tips_detail = $this->recommends_and_tips_model->tips_detail($item); if ($tips_detail) { $information->ic_content = str_replace($temp_array[0][$key], $tips_detail->it_content, $information->ic_content); } } } // 未勾选In Article 广告时,加入标签 ,让 ezoic 识别出该页面不展示广告。 $meta_google_ad_article = get_meta($information->ic_id, 'meta_google_ad_article'); if (empty($meta_google_ad_article) || ! $meta_google_ad_article) { $template = str_replace( '', '', $template ); } else { $template = str_replace( '', '', $template ); } $why_us_covid_list_pc = $this->load->view( $template_path . '-why-us-covid-list-pc', [], true ); $information->ic_content = str_replace('', $why_us_covid_list_pc, $information->ic_content); $why_us_covid_list_mobile = $this->load->view( $template_path . '-why-us-covid-mobile', [], true ); $information->ic_content = str_replace('', $why_us_covid_list_mobile, $information->ic_content); if (empty($meta_product_code)) { $info_page_form_content = $this->load->view($template_path . '-info-page-form', false, true); $information->ic_content = str_replace('', $info_page_form_content, $information->ic_content); } else { $tour_form_content = $this->load->view( 'mobile_first/gh-tour-form', ['information' => $information, 'meta_product_code' => $meta_product_code], true ); $information->ic_content = str_replace('', $tour_form_content, $information->ic_content); } // CH: 1; AH: 28; GH : 33 $price_tag_list = $this->parse_price_tag($information->ic_content, 33); foreach ($price_tag_list as $price_tag) { $information->ic_content = str_replace( $price_tag['placeholder'], $price_tag['price_number'], $information->ic_content ); } // 动态加载反馈标签,每个城市三十条反馈。 // HTLM:
// 解析结果:; Bangkok $feedback30_array = []; preg_match_all('^^', $information->ic_content, $feedback30_array); if (! empty($feedback30_array)) { foreach ($feedback30_array[0] as $index => $tag_name) { $city_name = $feedback30_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name); $feedback_30_content = $this->load->view( 'mobile_first/gh-feedback-30-list', ['feedback_list' => $feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_30_content, $information->ic_content ); } } // 集合页面反馈标签 $feedback_city_array = []; preg_match_all('^^', $information->ic_content, $feedback_city_array); if (! empty($feedback_city_array)) { foreach ($feedback_city_array[0] as $index => $tag_name) { $city_name_string = $feedback_city_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_city_list = []; foreach ($city_name_list as $index => $city_name) { $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 5); $data_name = str_replace(" ", "_", $city_name); $feedback_city_list[$data_name] = $feedback_list; } $feedback_city_content = $this->load->view( 'mobile_first/gh-feedback-city-list', $feedback_city_list, true ); $information->ic_content = str_replace( $tag_name, $feedback_city_content, $information->ic_content ); } } // 动态加载反馈标签,第一个城市不足八条,使用第二城市数据。 // HTLM:
// 解析结果:; Siem Reap,Bangkok $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_list = $this->Feedback_model->get_feedback_by_city_list($city_name_list); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/gh-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_content, $information->ic_content ); } } // 顾问英文名反馈标签 $feedback_advisor_array = []; preg_match_all('^^', $information->ic_content, $feedback_advisor_array); if (! empty($feedback_advisor_array)) { foreach ($feedback_advisor_array[0] as $index => $tag_name) { $advisor_name = $feedback_advisor_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_advisor_name($advisor_name); $feedback_content = $this->load->view( 'mobile_first/gh-feedback-advisor-list', [ 'feedback_list' => $feedback_list, 'advisor_name' => $advisor_name, ], true ); $information->ic_content = str_replace( $tag_name, $feedback_content, $information->ic_content ); } } if (is_file('D:/wwwroot/origin-www.globalhighlights.com/css/gh-global.css')) { //主样式表,内联模式,优先读取本地,没有在从网络读取,为了加速 $main_css_string = compress_css(file_get_contents('D:/wwwroot/origin-www.globalhighlights.com/css/gh-global.css')); } else { $main_css_string = compress_css(GET_HTTP('https://www.globalhighlights.com/css/gh-global.css')); } $template = str_replace('', '', $template); //额外样式 $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { // if ($meta_addon_css == 'https://proxy-data.chinahighlights.com/css/tour-detail-former.css' && is_file('D:/wwwroot/origin-data.chinahighlights.com/css/tour-detail-former.css')) { //$meta_addon_css_string = compress_css(file_get_contents('D:/wwwroot/origin-data.chinahighlights.com/css/tour-detail-former.css')); // } else { $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); // } $template = str_replace('', '', $template); } //额外js $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $template = str_replace('', '', $template); } $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $template = str_replace('', '', $template); } //设置内容图片缓加载 $lazy_content = $this->html_optimize_lib->set_lazy_loader($information->ic_content, 'https://data.chinahighlights.com/grey.gif'); $template = str_replace('', $lazy_content, $template); //社媒分享图片 $full_ic_photo = ''; if (! empty($information->ic_photo)) { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } else { $full_ic_photo = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } if (! empty($full_ic_photo)) { $template = str_replace('', '', $template); } //设置图片尺寸 // 优化过图片目录:D:\wwwroot\origin-images.chinahighlights.com\optimize\ $www_local_path = 'D:/wwwroot/origin-www.globalhighlights.com'; $image_local_path = 'D:/wwwroot/origin-images.chinahighlights.com/optimize'; if (is_dir($www_local_path) && is_dir('D:/wwwroot/origin-www.globalhighlights.com')) { $template = $this->html_optimize_lib->set_image_size_local($template, $www_local_path, $image_local_path); } else { $template = $this->html_optimize_lib->set_image_size($template); } // /travelguide/chinese-zodiac/monthly-fortune-for-dog.htm $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } public function make_www_cache_htravel($device, $information, $recommand_information) { $data = []; $data['information'] = $information; $recommand_template = ''; $meta_show_advertise = get_meta($information->ic_id, 'meta_show_advertise'); $data['meta_show_advertise'] = $meta_show_advertise; switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, '', true); $html_path_ext = '-mobile.htm'; } else { return false; } $recommand_template = 'mobile_first/htravel-next-mobile'; break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } $recommand_template = 'mobile_first/htravel-next'; break; default: } //替换模板中的标签 $template = str_replace('', $information->ic_seo_title, $template); $template = str_replace('', $information->ic_seo_description, $template); $template = str_replace('', $information->ic_seo_keywords, $template); $template = str_replace('', $this->config->item('site_url') . $information->ic_url, $template); //顶部视频 $data['meta_news_video'] = get_meta($information->ic_id, 'meta_news_video'); $data['meta_video_picture'] = get_meta($information->ic_id, 'meta_video_picture'); if (empty($data['meta_news_video']) && empty($data['meta_video_picture'])) { //没有顶部视频时候才读取全屏大图 //顶部全屏大图 if ($device == 'mobile') { //移动端读取移动大图 $data['meta_addon_picture'] = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } else { $data['meta_addon_picture'] = get_meta($information->ic_id, 'meta_addon_picture'); } $data['meta_addon_picture_url'] = get_meta($information->ic_id, 'meta_addon_picture_url'); } // AH Home 下层节点名称和链接映射 $group_map = [ 278002667 => [ 'ic_url' => '/destinations', 'ic_url_title' => 'Destinations', ], 278008885 => [ 'ic_url' => '/about-us', 'ic_url_title' => 'About Us', ], ]; $breadcrumb_data = $this->Information_model->get_breadcrumb_data($information->is_id, $information->is_path, $group_map); $ads_by_google = ! empty(get_meta($information->ic_id, 'meta_google_ad_article')); $data['meta_news_createdate'] = $this->get_publish_date_in_6_month($information); $data['ads_by_google'] = $ads_by_google; $data['author'] = ''; //获取作者信息 $author_url = ''; $author = $this->Operator_model->get_author_nikename($information->ic_author); if (! empty($author)) { $data['author'] = $author->OPI_FirstName; $data['OPI_Code'] = $author->OPI_Code; $data['author_url'] = $this->get_author_url('www.highlightstravel.com', $author->OPI_Code); $author_url = $this->get_author_url('www.highlightstravel.com', $author->OPI_Code); } else { $author_web = $this->Infoauthors_model->detail_by_id($information->ic_author); //原始作者,可能是在线作者等 if (! empty($author_web)) { $data['author'] = $author_web->a_name; } } $data['breadcrumb_data'] = $breadcrumb_data; $template_H1 = $this->load->view($template_path . '-h1', $data, true); $template = str_replace('', $template_H1, $template); // 结构化标签:Article $article_structured_data_content = $this->load->view( $template_path . '-structured-data-article', ['information' => $information, 'author_name' => $data['author'], 'author_url' => $author_url], true ); $template = str_replace('', $article_structured_data_content, $template); // 结构化标签:BreadcrumbList $breadcrumb_structured_data_content = $this->load->view( $template_path . '-structured-data-breadcrumb', ['breadcrumb_data' => $breadcrumb_data, 'information' => $information], true ); $template = str_replace( '', $breadcrumb_structured_data_content, $template ); //推荐信息或者产品 $template_recommand = $recommand_information; $template = str_replace('', $this->load->view($recommand_template, ['recommands' => $template_recommand], true), $template); //广告,改叫tips,防止被插件屏蔽 if (! empty($template_recommand['Tips Right']) && ($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', "
" . $template_recommand['Tips Right']->it_content . "
", $template); } // 右侧列表广告 $tips_right_a = []; $tips_right_b = []; $tips_right_c = []; for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right A_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_a[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right B_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_b[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right C_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_c[] = $recommand_information[$key]; } } $tips_right_list_content = $this->load->view( 'mobile_first/htravel-tips-right-list', [ 'tips_right_a' => $tips_right_a, 'tips_right_b' => $tips_right_b, 'tips_right_c' => $tips_right_c, ], true ); if (($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', $tips_right_list_content, $template); } //文中的信息推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-article', ['recommands' => $template_recommand], true), $information->ic_content); } //文中的线路推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-tour', ['recommands' => $template_recommand], true), $information->ic_content); } //替换内容中广告 $temp_array = []; preg_match_all('^^', $information->ic_content, $temp_array); if (! empty($temp_array[1])) { foreach ($temp_array[1] as $key => $item) { $tips_detail = $this->recommends_and_tips_model->tips_detail($item); if ($tips_detail) { $information->ic_content = str_replace($temp_array[0][$key], $tips_detail->it_content, $information->ic_content); } } } $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); // 非产品页面 if (empty($meta_product_code)) { $addthis_widget = $this->load->view($template_path . '-add-this', false, true); $template = str_replace('', $addthis_widget, $template); $template = str_replace('?product_code=', '', $template); } else { $template = str_replace('?product_code=', '?product_code=' . $meta_product_code, $template); $inquiry_form_template = $this->load->view( $template_path . '-inquiry-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $inquiry_form_template, $information->ic_content); // GP 表单 $gp_form_content = $this->load->view( $template_path . '-gp-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $gp_form_content, $information->ic_content); // tour-list 表单 $tour_list_form_content = $this->load->view( $template_path . '-tour-list-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $tour_list_form_content, $information->ic_content); // 水灯节 GP 线路表单 $gp_form_content = $this->load->view( $template_path . '-lantern-festival-gp-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $gp_form_content, $information->ic_content); } $price_tag_list = $this->parse_price_tag($information->ic_content); foreach ($price_tag_list as $price_tag) { $information->ic_content = str_replace( $price_tag['placeholder'], $price_tag['price_number'], $information->ic_content ); } // why-us 相关的标签 $why_us_mobile = $this->load->view($template_path . '-why-us-mobile', false, true); $information->ic_content = str_replace('', $why_us_mobile, $information->ic_content); $why_us_tour_detail_pc = $this->load->view($template_path . '-why-us-tour-detail-pc', false, true); $information->ic_content = str_replace('', $why_us_tour_detail_pc, $information->ic_content); $why_us_tour_list_pc = $this->load->view($template_path . '-why-us-tour-list-pc', false, true); $information->ic_content = str_replace('', $why_us_tour_list_pc, $information->ic_content); $info_page_form_content = $this->load->view($template_path . '-info-page-form', false, true); $information->ic_content = str_replace('', $info_page_form_content, $information->ic_content); // 水灯节表单 $lantern_form_content = $this->load->view( 'mobile_first/htravel-lantern-form', ['information' => $information], true ); $information->ic_content = str_replace('', $lantern_form_content, $information->ic_content); // 水灯节2025表单 $lantern_form_content_2025 = $this->load->view( 'mobile_first/htravel-lantern-form-2025', ['information' => $information], true ); $information->ic_content = str_replace('', $lantern_form_content_2025, $information->ic_content); // 水灯节2026表单 $lantern_form_content_2026 = $this->load->view( 'mobile_first/htravel-lantern-form-2026', ['information' => $information], true ); $information->ic_content = str_replace('', $lantern_form_content_2026, $information->ic_content); // Chiang Mai Authentic Sky Lantern Festival on Nov. 5, 2025 $lantern_form_content_authentic_sky = $this->load->view( 'mobile_first/htravel-chiang-mai-lantern-festival', ['information' => $information], true ); $information->ic_content = str_replace('', $lantern_form_content_authentic_sky, $information->ic_content); // CAD 跨年表单 $new_year_countdown_form_content = $this->load->view( 'mobile_first/htravel-new-year-countdown', ['information' => $information], true ); $information->ic_content = str_replace( '', $new_year_countdown_form_content, $information->ic_content ); // 动态加载反馈标签,第一个城市不足八条,使用第二城市数据。 // HTLM:
// 解析结果:; Siem Reap,Bangkok $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_list = $this->Feedback_model->get_feedback_by_city_list($city_name_list, FALSE); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/htravel-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_content, $information->ic_content ); } } // 动态加载反馈标签,每个城市三十条反馈。 // HTLM:
// 解析结果:; Bangkok $feedback30_array = []; preg_match_all('^^', $information->ic_content, $feedback30_array); if (! empty($feedback30_array)) { foreach ($feedback30_array[0] as $index => $tag_name) { $city_name = $feedback30_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 30, FALSE); $feedback_30_content = $this->load->view( 'mobile_first/htravel-feedback-30-list', ['feedback_list' => $feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_30_content, $information->ic_content ); } } // 集合页面反馈标签 $feedback_city_array = []; preg_match_all('^^', $information->ic_content, $feedback_city_array); if (! empty($feedback_city_array)) { foreach ($feedback_city_array[0] as $index => $tag_name) { $city_name_string = $feedback_city_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_city_list = []; foreach ($city_name_list as $index => $city_name) { $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 5, FALSE); $data_name = str_replace(" ", "_", $city_name); $feedback_city_list[$data_name] = $feedback_list; } $feedback_city_content = $this->load->view( 'mobile_first/htravel-feedback-city-list', $feedback_city_list, true ); $information->ic_content = str_replace( $tag_name, $feedback_city_content, $information->ic_content ); } } // 顾问英文名反馈标签 $feedback_advisor_array = []; preg_match_all('^^', $information->ic_content, $feedback_advisor_array); if (! empty($feedback_advisor_array)) { foreach ($feedback_advisor_array[0] as $index => $tag_name) { $advisor_name = $feedback_advisor_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_advisor_name($advisor_name); $feedback_content = $this->load->view( 'mobile_first/htravel-feedback-advisor-list', [ 'feedback_list' => $feedback_list, 'advisor_name' => $advisor_name, ], true ); $information->ic_content = str_replace( $tag_name, $feedback_content, $information->ic_content ); } } //主样式表,内联模式 if (is_file('D:/wwwroot/origin-www.highlightstravel.com/css/mobile-first.css')) { //主样式表,内联模式,优先读取本地,没有在从网络读取,为了加速 $main_css_string = compress_css(file_get_contents('D:/wwwroot/origin-www.highlightstravel.com/css/mobile-first.css')); } else { $main_css_string = compress_css(GET_HTTP('https://proxy-data.highlightstravel.com/css/mobile-first.css')); } $template = str_replace('', '', $template); //额外样式 $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $template = str_replace('', '', $template); } //额外js $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $template = str_replace('', '', $template); } $meta_note_ogtitle = get_meta($information->ic_id, 'meta_note_ogtitle'); if (! empty($meta_note_ogtitle)) { $template = str_replace('', '', $template); } $meta_note = get_meta($information->ic_id, 'meta_note'); if (! empty($meta_note)) { $template = str_replace('', '', $template); } $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $template = str_replace('', '', $template); } //设置内容图片缓加载 $lazy_content = $this->html_optimize_lib->set_lazy_loader($information->ic_content, 'https://data.highlightstravel.com/grey.gif'); $template = str_replace('', $lazy_content, $template); //Google广告代码 //if (!empty(get_meta($information->ic_id, 'meta_google_ad_content'))) { $template = str_replace('', '', $template); //} //社媒分享图片 $full_ic_photo = ''; if (! empty($information->ic_photo)) { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } else { $full_ic_photo = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } if (! empty($full_ic_photo)) { $template = str_replace('', '', $template); } // 设置图片尺寸 // 优化过图片目录:D:\wwwroot\origin-images.chinahighlights.com\optimize\ $www_local_path = 'D:/wwwroot/origin-www.highlightstravel.com'; $image_local_path = 'D:/wwwroot/origin-images.chinahighlights.com/optimize'; if (is_dir($www_local_path) && is_dir($image_local_path)) { $template = $this->html_optimize_lib->set_image_size_local($template, $www_local_path, $image_local_path); } else { $template = $this->html_optimize_lib->set_image_size($template); } // /travelguide/chinese-zodiac/monthly-fortune-for-dog.htm $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } public function make_www_cache_thailand($device, $information, $recommand_information) { $data = []; $data['information'] = $information; $recommand_template = ''; $meta_show_advertise = get_meta($information->ic_id, 'meta_show_advertise'); $data['meta_show_advertise'] = $meta_show_advertise; switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, '', true); $html_path_ext = '-mobile.htm'; } else { return false; } $recommand_template = 'mobile_first/thailand-next-mobile'; break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } $recommand_template = 'mobile_first/thailand-next'; break; default: } //替换模板中的标签 $template = str_replace('', $information->ic_seo_title, $template); $template = str_replace('', $information->ic_seo_description, $template); $template = str_replace('', $information->ic_seo_keywords, $template); $template = str_replace('', $this->config->item('site_url') . $information->ic_url, $template); //顶部视频 $data['meta_news_video'] = get_meta($information->ic_id, 'meta_news_video'); $data['meta_video_picture'] = get_meta($information->ic_id, 'meta_video_picture'); if (empty($data['meta_news_video']) && empty($data['meta_video_picture'])) { //没有顶部视频时候才读取全屏大图 //顶部全屏大图 if ($device == 'mobile') { //移动端读取移动大图 $data['meta_addon_picture'] = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } else { $data['meta_addon_picture'] = get_meta($information->ic_id, 'meta_addon_picture'); } $data['meta_addon_picture_url'] = get_meta($information->ic_id, 'meta_addon_picture_url'); } // AH Home 下层节点名称和链接映射 $group_map = [ 278011836 => [ 'ic_url' => '/about-us', 'ic_url_title' => 'About Us', ], ]; $breadcrumb_data = $this->Information_model->get_breadcrumb_data($information->is_id, $information->is_path, $group_map); $ads_by_google = ! empty(get_meta($information->ic_id, 'meta_google_ad_article')); $data['meta_news_createdate'] = $this->get_publish_date_in_6_month($information); $data['ads_by_google'] = $ads_by_google; $data['author_name'] = ''; //获取作者信息 $author = $this->Operator_model->get_author_nikename($information->ic_author); $data['author_info'] = ['url' => '', 'avatar' => '', 'expertise' => '']; if (!empty($author)) { $data['author_name'] = $author->OPI_FirstName; $data['OPI_Code'] = $author->OPI_Code; $author_info = $this->get_author_info('thailandhighlights.com', $author->OPI_Code); $data['author_info'] = $author_info; } else { $author_web = $this->Infoauthors_model->detail_by_id($information->ic_author); //原始作者,可能是在线作者等 if (!empty($author_web)) { $data['author_name'] = $author_web->a_name; $author_info = ['url' => '', 'avatar' => '', 'expertise' => '']; } } $data['breadcrumb_data'] = $breadcrumb_data; $template_H1 = $this->load->view($template_path . '-h1', $data, true); $template = str_replace('', $template_H1, $template); // 结构化标签:Article $article_structured_data_content = $this->load->view( $template_path . '-structured-data-article', ['information' => $information, 'author_name' => $data['author_name'], 'author_url' => $author_info['url']], true ); $template = str_replace('', $article_structured_data_content, $template); // 结构化标签:BreadcrumbList $breadcrumb_structured_data_content = $this->load->view( $template_path . '-structured-data-breadcrumb', ['breadcrumb_data' => $breadcrumb_data, 'information' => $information], true ); $template = str_replace( '', $breadcrumb_structured_data_content, $template ); //推荐信息或者产品 $template_recommand = $recommand_information; $template = str_replace('', $this->load->view($recommand_template, ['recommands' => $template_recommand], true), $template); //广告,改叫tips,防止被插件屏蔽 if (! empty($template_recommand['Tips Right']) && ($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', "
" . $template_recommand['Tips Right']->it_content . "
", $template); } // 右侧列表广告 $tips_right_a = []; $tips_right_b = []; $tips_right_c = []; for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right A_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_a[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right B_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_b[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right C_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_c[] = $recommand_information[$key]; } } $tips_right_list_content = $this->load->view( 'mobile_first/thailand-tips-right-list', [ 'tips_right_a' => $tips_right_a, 'tips_right_b' => $tips_right_b, 'tips_right_c' => $tips_right_c, ], true ); if (($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', $tips_right_list_content, $template); } //文中的信息推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-article', ['recommands' => $template_recommand], true), $information->ic_content); } //文中的线路推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-tour', ['recommands' => $template_recommand], true), $information->ic_content); } //替换内容中广告 $temp_array = []; preg_match_all('^^', $information->ic_content, $temp_array); if (! empty($temp_array[1])) { foreach ($temp_array[1] as $key => $item) { $tips_detail = $this->recommends_and_tips_model->tips_detail($item); if ($tips_detail) { $information->ic_content = str_replace($temp_array[0][$key], $tips_detail->it_content, $information->ic_content); } } } $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); // 非产品页面 if (empty($meta_product_code)) { } else { $template = str_replace('?product_code=', '?product_code=' . $meta_product_code, $template); $inquiry_form_template = $this->load->view( 'mobile_first/thailand-inquiry-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $inquiry_form_template, $information->ic_content); // GP 表单 $gp_form_content = $this->load->view( 'mobile_first/thailand-gp-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $gp_form_content, $information->ic_content); } $price_tag_list = $this->parse_price_tag($information->ic_content); foreach ($price_tag_list as $price_tag) { $information->ic_content = str_replace( $price_tag['placeholder'], $price_tag['price_number'], $information->ic_content ); } // 动态加载反馈标签,第一个城市不足八条,使用第二城市数据。 // HTLM:
// 解析结果:; Siem Reap,Bangkok $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_list = $this->Feedback_model->get_feedback_by_city_list($city_name_list, FALSE); // 防止触发 Google 网络垃圾政策只返回前三条,但市场要求显示五条 $top3_feedback_list = array_slice($feedback_list, 0, 5); $feedback_content = $this->load->view( 'mobile_first/thailand-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_content, $information->ic_content ); } } // 动态加载反馈标签,每个城市三十条反馈。 // HTLM:
// 解析结果:; Bangkok $feedback30_array = []; preg_match_all('^^', $information->ic_content, $feedback30_array); if (! empty($feedback30_array)) { foreach ($feedback30_array[0] as $index => $tag_name) { $city_name = $feedback30_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 30, FALSE); $feedback_30_content = $this->load->view( 'mobile_first/thailand-feedback-30-list', ['feedback_list' => $feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_30_content, $information->ic_content ); } } // 集合页面反馈标签 $feedback_city_array = []; preg_match_all('^^', $information->ic_content, $feedback_city_array); if (! empty($feedback_city_array)) { foreach ($feedback_city_array[0] as $index => $tag_name) { $city_name_string = $feedback_city_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_city_list = []; foreach ($city_name_list as $index => $city_name) { $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 5, FALSE); $data_name = str_replace(" ", "_", $city_name); $feedback_city_list[$data_name] = $feedback_list; } $feedback_city_content = $this->load->view( 'mobile_first/thailand-feedback-city-list', $feedback_city_list, true ); $information->ic_content = str_replace( $tag_name, $feedback_city_content, $information->ic_content ); } } //主样式表,内联模式 if (is_file('D:/wwwroot/origin-www.thailandhighlights.com/css/th-mobile-first.css')) { //主样式表,内联模式,优先读取本地,没有在从网络读取,为了加速 $main_css_string = compress_css(file_get_contents('D:/wwwroot/origin-www.thailandhighlights.com/css/th-mobile-first.css')); } else { $main_css_string = compress_css(GET_HTTP('https://proxy-data.thailandhighlights.com/css/th-mobile-first.css')); } $template = str_replace('', '', $template); //额外样式 $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $template = str_replace('', '', $template); } //额外js $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $template = str_replace('', '', $template); } $meta_note_ogtitle = get_meta($information->ic_id, 'meta_note_ogtitle'); if (! empty($meta_note_ogtitle)) { $template = str_replace('', '', $template); } $meta_note = get_meta($information->ic_id, 'meta_note'); if (! empty($meta_note)) { $template = str_replace('', '', $template); } $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $template = str_replace('', '', $template); } //设置内容图片缓加载 $lazy_content = $this->html_optimize_lib->set_lazy_loader($information->ic_content, 'https://data.thailandhighlights.com/grey.gif'); $template = str_replace('', $lazy_content, $template); //Google广告代码 //if (!empty(get_meta($information->ic_id, 'meta_google_ad_content'))) { $template = str_replace('', '', $template); //} //社媒分享图片 $full_ic_photo = ''; if (! empty($information->ic_photo)) { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } else { $full_ic_photo = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } if (! empty($full_ic_photo)) { $template = str_replace('', '', $template); } // 设置图片尺寸 // 优化过图片目录:D:\wwwroot\origin-images.chinahighlights.com\optimize\ $www_local_path = 'D:/wwwroot/origin-www.thailandhighlights.com'; $image_local_path = 'D:/wwwroot/origin-images.thailandhighlights.com/optimize'; if (is_dir($www_local_path) && is_dir($image_local_path)) { $template = $this->html_optimize_lib->set_image_size_local($template, $www_local_path, $image_local_path); } else { $template = $this->html_optimize_lib->set_image_size($template); } // /travelguide/chinese-zodiac/monthly-fortune-for-dog.htm $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } public function make_www_cache_jh($device, $information, $recommand_information) { $data = []; $data['information'] = $information; $recommand_template = ''; $meta_show_advertise = get_meta($information->ic_id, 'meta_show_advertise'); $data['meta_show_advertise'] = $meta_show_advertise; switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, '', true); $html_path_ext = '-mobile.htm'; } else { return false; } $recommand_template = 'mobile_first/jh-next-mobile'; break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } $recommand_template = 'mobile_first/jh-next'; break; default: } //替换模板中的标签 $template = str_replace('', $information->ic_seo_title, $template); $template = str_replace('', $information->ic_seo_description, $template); $template = str_replace('', $information->ic_seo_keywords, $template); $template = str_replace('', $this->config->item('site_url') . $information->ic_url, $template); //顶部视频 $data['meta_news_video'] = get_meta($information->ic_id, 'meta_news_video'); $data['meta_video_picture'] = get_meta($information->ic_id, 'meta_video_picture'); if (empty($data['meta_news_video']) && empty($data['meta_video_picture'])) { //没有顶部视频时候才读取全屏大图 //顶部全屏大图 if ($device == 'mobile') { //移动端读取移动大图 $data['meta_addon_picture'] = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } else { $data['meta_addon_picture'] = get_meta($information->ic_id, 'meta_addon_picture'); } $data['meta_addon_picture_url'] = get_meta($information->ic_id, 'meta_addon_picture_url'); } // AH Home 下层节点名称和链接映射 $group_map = [ 278011836 => [ 'ic_url' => '/about-us', 'ic_url_title' => 'About Us', ], ]; $breadcrumb_data = $this->Information_model->get_breadcrumb_data($information->is_id, $information->is_path, $group_map); $ads_by_google = ! empty(get_meta($information->ic_id, 'meta_google_ad_article')); $data['meta_news_createdate'] = $this->get_publish_date_in_6_month($information); $data['ads_by_google'] = $ads_by_google; $data['author_name'] = ''; //获取作者信息 $author = $this->Operator_model->get_author_nikename($information->ic_author); $data['author_info'] = ['url' => '', 'avatar' => '', 'expertise' => '']; if (!empty($author)) { $data['author_name'] = $author->OPI_FirstName; $data['OPI_Code'] = $author->OPI_Code; $author_info = $this->get_author_info('japanhighlights.com', $author->OPI_Code); $data['author_info'] = $author_info; } else { $author_web = $this->Infoauthors_model->detail_by_id($information->ic_author); //原始作者,可能是在线作者等 if (!empty($author_web)) { $data['author_name'] = $author_web->a_name; $author_info = ['url' => '', 'avatar' => '', 'expertise' => '']; } } $data['breadcrumb_data'] = $breadcrumb_data; $template_H1 = $this->load->view($template_path . '-h1', $data, true); $template = str_replace('', $template_H1, $template); // 结构化标签:Article $article_structured_data_content = $this->load->view( $template_path . '-structured-data-article', ['information' => $information, 'author_name' => $data['author_name'], 'author_url' => $author_info['url']], true ); $template = str_replace('', $article_structured_data_content, $template); // 结构化标签:BreadcrumbList $breadcrumb_structured_data_content = $this->load->view( $template_path . '-structured-data-breadcrumb', ['breadcrumb_data' => $breadcrumb_data, 'information' => $information], true ); $template = str_replace( '', $breadcrumb_structured_data_content, $template ); //推荐信息或者产品 $template_recommand = $recommand_information; $template = str_replace('', $this->load->view($recommand_template, ['recommands' => $template_recommand], true), $template); //广告,改叫tips,防止被插件屏蔽 if (! empty($template_recommand['Tips Right']) && ($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', "
" . $template_recommand['Tips Right']->it_content . "
", $template); } // 右侧列表广告 $tips_right_a = []; $tips_right_b = []; $tips_right_c = []; for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right A_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_a[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right B_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_b[] = $recommand_information[$key]; } } for ($i = 1; $i <= 12; $i++) { $key = 'List Tips Right C_' . $i; if (array_key_exists($key, $recommand_information) && $recommand_information[$key]) { $tips_right_c[] = $recommand_information[$key]; } } $tips_right_list_content = $this->load->view( 'mobile_first/jh-tips-right-list', [ 'tips_right_a' => $tips_right_a, 'tips_right_b' => $tips_right_b, 'tips_right_c' => $tips_right_c, ], true ); if (($meta_show_advertise == 'yes' || empty($meta_show_advertise))) { $template = str_replace('', $tips_right_list_content, $template); } //文中的信息推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-article', ['recommands' => $template_recommand], true), $information->ic_content); } //文中的线路推荐 if (strpos($information->ic_content, '') !== false) { $information->ic_content = str_replace('', $this->load->view($template_path . '-recommends-tour', ['recommands' => $template_recommand], true), $information->ic_content); } //替换内容中广告 $temp_array = []; preg_match_all('^^', $information->ic_content, $temp_array); if (! empty($temp_array[1])) { foreach ($temp_array[1] as $key => $item) { $tips_detail = $this->recommends_and_tips_model->tips_detail($item); if ($tips_detail) { $information->ic_content = str_replace($temp_array[0][$key], $tips_detail->it_content, $information->ic_content); } } } $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); // 非产品页面 if (empty($meta_product_code)) { } else { $template = str_replace('?product_code=', '?product_code=' . $meta_product_code, $template); $inquiry_form_template = $this->load->view( 'mobile_first/jh-inquiry-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $inquiry_form_template, $information->ic_content); // GP 表单 $gp_form_content = $this->load->view( 'mobile_first/jh-gp-form', ['meta_product_code' => $meta_product_code, 'information' => $information], true ); $information->ic_content = str_replace('', $gp_form_content, $information->ic_content); } $price_tag_list = $this->parse_price_tag($information->ic_content); foreach ($price_tag_list as $price_tag) { $information->ic_content = str_replace( $price_tag['placeholder'], $price_tag['price_number'], $information->ic_content ); } // 动态加载反馈标签,第一个城市不足八条,使用第二城市数据。 // HTLM:
// 解析结果:; Siem Reap,Bangkok $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_list = $this->Feedback_model->get_feedback_by_city_list($city_name_list, FALSE); // 防止触发 Google 网络垃圾政策只返回前三条,但市场要求显示五条 $top3_feedback_list = array_slice($feedback_list, 0, 5); $feedback_content = $this->load->view( 'mobile_first/jh-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_content, $information->ic_content ); } } // 动态加载反馈标签,每个城市三十条反馈。 // HTLM:
// 解析结果:; Bangkok $feedback30_array = []; preg_match_all('^^', $information->ic_content, $feedback30_array); if (! empty($feedback30_array)) { foreach ($feedback30_array[0] as $index => $tag_name) { $city_name = $feedback30_array[1][$index]; $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 30, FALSE); $feedback_30_content = $this->load->view( 'mobile_first/jh-feedback-30-list', ['feedback_list' => $feedback_list], true ); $information->ic_content = str_replace( $tag_name, $feedback_30_content, $information->ic_content ); } } // 集合页面反馈标签 $feedback_city_array = []; preg_match_all('^^', $information->ic_content, $feedback_city_array); if (! empty($feedback_city_array)) { foreach ($feedback_city_array[0] as $index => $tag_name) { $city_name_string = $feedback_city_array[1][$index]; $city_name_list = explode(',', $city_name_string); $feedback_city_list = []; foreach ($city_name_list as $index => $city_name) { $feedback_list = $this->Feedback_model->get_feedback_by_city_name($city_name, 5, FALSE); $data_name = str_replace(" ", "_", $city_name); $feedback_city_list[$data_name] = $feedback_list; } $feedback_city_content = $this->load->view( 'mobile_first/jh-feedback-city-list', $feedback_city_list, true ); $information->ic_content = str_replace( $tag_name, $feedback_city_content, $information->ic_content ); } } //主样式表,内联模式 if (is_file('D:/wwwroot/origin-www.japanhighlights.com/css/mobile-first.css')) { //主样式表,内联模式,优先读取本地,没有在从网络读取,为了加速 $main_css_string = compress_css(file_get_contents('D:/wwwroot/origin-www.japanhighlights.com/css/mobile-first.css')); } else { $main_css_string = compress_css(GET_HTTP('https://proxy-data.japanhighlights.com/css/mobile-first.css')); } $template = str_replace('', '', $template); //额外样式 $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $template = str_replace('', '', $template); } //额外js $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $template = str_replace('', '', $template); } $meta_note_ogtitle = get_meta($information->ic_id, 'meta_note_ogtitle'); if (! empty($meta_note_ogtitle)) { $template = str_replace('', '', $template); } $meta_note = get_meta($information->ic_id, 'meta_note'); if (! empty($meta_note)) { $template = str_replace('', '', $template); } $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $template = str_replace('', '', $template); } //设置内容图片缓加载 $lazy_content = $this->html_optimize_lib->set_lazy_loader($information->ic_content, 'https://data.japanhighlights.com/grey.gif'); $template = str_replace('', $lazy_content, $template); //Google广告代码 //if (!empty(get_meta($information->ic_id, 'meta_google_ad_content'))) { $template = str_replace('', '', $template); //} //社媒分享图片 $full_ic_photo = ''; if (! empty($information->ic_photo)) { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } else { $full_ic_photo = get_meta($information->ic_id, 'meta_addon_picture_mobile'); } if (! empty($full_ic_photo)) { $template = str_replace('', '', $template); } // 设置图片尺寸 // 优化过图片目录:D:\wwwroot\origin-images.chinahighlights.com\optimize\ $www_local_path = 'D:/wwwroot/origin-www.japanhighlights.com'; $image_local_path = 'D:/wwwroot/origin-images.chinahighlights.com/optimize'; if (is_dir($www_local_path) && is_dir($image_local_path)) { $template = $this->html_optimize_lib->set_image_size_local($template, $www_local_path, $image_local_path); } else { $template = $this->html_optimize_lib->set_image_size($template); } // /travelguide/chinese-zodiac/monthly-fortune-for-dog.htm $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } /** * @description: CT用的生成静态文件方法.有些内容的替换,CT这边不一样,需要单独处理 zp * @param {type} $device='mobile' or 'pc' * @return: * @Date Changed: */ public function make_www_cache_ct($information) { $data = []; #region 公用数据 //$apiurl = "http://202.103.68.104:61/info.php"; //本地测试 $apiurl = "https://ct.mycht.cn/info.php"; //网前 //先准备数据,CT采用直接赋值视图然后返回视图字符串的模式,不使用一次次替换视图模板内容的模式。 $data["TITLE"] = $information->ic_seo_title; $data["DESCRIPTION"] = $information->ic_seo_description; $data["KEYWORDS"] = $information->ic_seo_keywords; $data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url; $meta_ct_page_type = ""; $meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型 $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); //绑定的产品编号 $template_path = 'mobile_first/' . $this->config->item('site_code'); //模板位置 //面包屑 $crumb = ""; $crumb_data = $this->Information_model->get_path_exclude_ct($information->is_id, $information->is_path); if (count($crumb_data) > 0) { //至少有一个父类面包屑才显示 $crumb = "
Home"; foreach ($crumb_data as $index => $item) { $crumb .= '' . $item['ic_url_title'] . ''; } $crumb .= "
"; } $data["crumb"] = $crumb; //作者字符串,信息页或者城市天气页加载 2022-7-26 $str_author = ""; $author = $this->Operator_model->get_author_nikename($information->ic_author); $meta_news_createdate = get_meta($information->ic_id, 'meta_news_createdate'); //信息发布时间 if ((empty($meta_product_code) && ! ($meta_ct_page_type !== false && $meta_ct_page_type != "")) || $meta_ct_page_type == "weatherpage") { $OPI_FirstName = ! empty($author) ? $author->OPI_FirstName : 'author nickname'; $EditTime = strtotime($information->ic_datetime); //如果有录入信息发布时间的属性,就读取这个 if (! empty($meta_news_createdate)) { $EditTime = strtotime($meta_news_createdate); } $str_author = '
Written by ' . $OPI_FirstName . ' Updated ' . date("M. j, Y", $EditTime) . '
'; } //火车票详细页搜索框添加 -- zp $meta_ct_page_trainform = get_meta($information->ic_id, 'meta_ct_page_trainform'); //是否插入火车票搜索框 $template_TrainDetailSearch = ""; if ($meta_ct_page_trainform == "yes" || $information->is_parent_id == "278014609") { $meta_train_city = get_meta($information->ic_id, 'meta_train_city'); //默认的出发及目的地城市 , beijing|shanghai $data_TrainCity = []; $data_TrainCity["from"] = ""; $data_TrainCity["to"] = ""; if (! empty($meta_train_city)) { if (strpos($meta_train_city, '|') !== false) { $arrTrainCity = explode('|', $meta_train_city); $data_TrainCity["from"] = $arrTrainCity[0]; $data_TrainCity["to"] = $arrTrainCity[1]; } } $template_TrainDetailSearch = $this->load->view($template_path . '-train-detail', $data_TrainCity, true); } /* 详细内容 */ $ic_content = $information->ic_content; #region old replace // /**替换详细内容里面的价格 /* 直接使用fetch来动态获取价格,这样不用替换标签,直接录标签 // * // 一日游价格标签, "" 或者 逗号后面是人数 // * //精华线路标签"" // */ // $ic_content = preg_replace_callback('//i',function($match){ // //处理一日游每次配备 // $matchItem = $match[1]; // return '';; // },$ic_content); // $ic_content = preg_replace_callback('//i',function($match){ // //处理精华线路每次配备 // $matchItem = $match[1]; // return '';; // },$ic_content); #enregion /** 替换H1加面包屑,加作者. 2024-4-26不在H1放火车搜索框,改为替换标签 */ //$ic_content = preg_replace('/

(.*)<\/h1>/i', $crumb . "\r\n" . '

$1

' . "\r\n" . $str_author . $template_TrainDetailSearch . "\r\n", $ic_content, 1); $ic_content = preg_replace('/

(.*)<\/h1>/i', $crumb . "\r\n" . '

$1

' . "\r\n" . $str_author . "\r\n", $ic_content, 1); /**替换火车标签 */ if (strpos($ic_content, '') !== false) { $ic_content = str_replace('', $template_TrainDetailSearch, $ic_content); } /**替换zodiac标签 */ if (strpos($ic_content, '') !== false) { $zodiacCalc = $this->load->view('mobile_first/' . $this->config->item('site_code') . '-zodiac-calc', false, true); $ic_content = str_replace('', $zodiacCalc, $ic_content); } // 动态加载反馈标签,按城市出前三条。左侧 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } // 动态加载反馈标签,按城市出前三条。整页 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-cross', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } //图片加延迟 $ic_content = $this->html_optimize_lib->set_lazy_loader($ic_content, 'https://data.chinatravel.com/images/mobile-first/grey.gif'); $ic_content = $this->html_optimize_lib->set_image_size($ic_content); $data["CUSTOMCONENT"] = $ic_content; //非产品页面 $data["PRODUCTJS"] = ""; $data["ISPRODUCT"] = "no"; //判断是否是产品页 $data["addthis_widget"] = ""; $data["FloatIcon"] = ""; //浮动图标替代addthis $arrExitUrl = ["/", "/culture", "/guide", "/tour", "/citytour", "/daytrip", "/asia-tour", "/china-trains"]; if (empty(get_meta($information->ic_id, 'meta_product_code')) || in_array($information->ic_url, $arrExitUrl)) { //$data["addthis_widget"] = $this->load->view($template_path . '-add-this', false, true); //社媒代码addthis $data["FloatIcon"] = "
Create My Trip
"; } else { // $data["PRODUCTJS"] = ''; $data["ISPRODUCT"] = "yes"; } //顶部视频 $data["TOPVIDEO"] = ""; $meta_news_video = get_meta($information->ic_id, 'meta_news_video'); $meta_video_picture = get_meta($information->ic_id, 'meta_video_picture'); if (! empty($meta_news_video) && ! empty($meta_video_picture)) { $data["TOPVIDEO"] = ''; } //主样式表,内联模式 //$apiweb="http://202.103.68.104"; //本地测试 $apiweb = "https://data.chinatravel.com"; $cssUrl = $apiweb . "/css/newcss3/base.css?v=" . time(); $main_css_string = compress_css(GET_HTTP($cssUrl)); $data["MAINCSS"] = ''; //额外样式 $data["ADDONCSS"] = ""; $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //引用方式 //$data["ADDONCSS"]= ''; //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $data["ADDONCSS"] = ''; } //社媒分享图片 $data["OGIMAGE"] = ""; if (! empty($information->ic_photo)) { if (strpos($information->ic_photo, "chinatravel.com") != false) { $full_ic_photo = $information->ic_photo; } else { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } $data["OGIMAGE"] = ''; } //结构化标签 $data["ConstructionCode"] = ""; $meta_construction_code = get_meta($information->ic_id, 'meta_construction_code'); if (! empty($meta_construction_code)) { $data["ConstructionCode"] = $meta_construction_code; } $data["meta_index_set"] = ""; $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $data["meta_index_set"] = ''; } //总JS:为了方便以后js好维护,必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js,所以必须在这里进行判断 $addBaseJs = false; $addonJs = ""; $meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格 if ($meta_ct_page_price == "yes") { $addBaseJs = true; } else if ($meta_ct_page_type !== false && $meta_ct_page_type != "") { $addBaseJs = true; } if ($addBaseJs) { $addonJs = ''; } /// ----- 总JS判断完成----- //额外js $data["ADDONJS"] = ""; $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $addonJs .= ''; } //价格js if ($meta_ct_page_price == "yes") { $addonJs .= ''; } //列表js if (in_array($meta_ct_page_type, ['daytripindex', 'tourindex', 'attractionindex'])) { $addonJs .= ''; } //天气 if (in_array($meta_ct_page_type, ['weatherpage'])) { $addonJs .= ''; } //页面传递参数 $passParam = ""; if (in_array($meta_ct_page_type, ["daytripindex", "tourindex", "attractionindex", "weatherpage"])) { //一日游和线路列表 //产品首页 $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (in_array($meta_ct_page_type, ["attractionindex"])) { //旧信息id,景点等信息类 $passParam .= ''; } else { //城市名称,产品类用 $passParam .= ''; } //加信息平台的is_id $passParam .= ''; } //产品详细页 $productType = ""; $productCode = ""; if ($meta_ct_page_type == "daytripdetail") { //一日游 if (! empty($meta_ct_page_type)) { $productType = $meta_ct_page_type; } $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } $addonJs .= ''; //$addonJs .= ''; $data["ADDONCSS"] .= ''; } if ($meta_ct_page_type == "tourdetail") { //线路 $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //获取cli_sn $tourdata = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getCliSn/?param=" . $productCode)); $data["clisn"] = $tourdata->clisn; $tourdetail = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getTourDetail/?param=" . $productCode)); if ($tourdetail->status =="ok"){ $tourDays = $tourdetail->data->CLI_Days; $tourPassCity = $tourdetail->data->CLI2_PassCity; }else{ $tourDays = 0; $tourPassCity = ""; } //调取模板 $dataform["TourCode"] = $productCode; $dataform["CLI_SN"] = $tourdata->clisn; $dataform["TourName"] = $tourDays."-day ".$information->ic_title." (".$tourPassCity.")"; } //游船详细页 if ($meta_ct_page_type == "cruisedetails") { $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } $dataCruise["shipname"] = $productCode; $template_curisedetails = $this->load->view($template_path . '-cruisedetails-form', $dataCruise, true); $data["template_curisedetails"] = $template_curisedetails; } //表单页 if (in_array($meta_ct_page_type, ["customize", "contactus", "pagewithform", "tourdetail"])) { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } $data["productType"] = $productType; $data["productCode"] = $productCode; //页面添加的元素 $data["ADDONJS"] = $addonJs; $data["passParam"] = $passParam; #endregion #region 移动端和PC端差别处理区域 $arrDevice = ["mobile", "pc"]; $data["showFormTourQi"] = true; //是否显示线路表单,默认显示 foreach ($arrDevice as $device) { //顶部全屏大图 $data["TOPBANNER"] = ""; $ImgText = ""; //图文字 $meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url'); $meta_addon_picture_text = get_meta($information->ic_id, 'meta_addon_picture_text'); if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } // 搜索框 $template_TrainSearch = ""; if ($information->ic_url == "/china-trains/hometest" || $information->ic_url == "/china-trains") { //火车票首页 $template_TrainSearch = $this->load->view($template_path . '-train-index', null, true); $ImgText = ""; //火车票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } else if ($information->ic_url == "/china-flights") { //机票首页 $template_TrainSearch = $this->load->view($template_path . '-flight-index', null, true); $ImgText = ""; //飞机票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } if (! empty($meta_addon_picture)) { if (! empty($meta_addon_picture_url)) { $data["TOPBANNER"] = ''; } else { $data["TOPBANNER"] = ''; } } if ($meta_ct_page_type == "tourdetail") { $dataform['device'] = $device; $template_form_tourqi = $this->load->view($template_path . '-form-tourqi-new', $dataform, true); $data["template_form_tourqi"] = $template_form_tourqi; //表单模板字符串 /**替换左右结构的线路表单标签 2024-7-4*/ if (strpos($ic_content, '') !== false) { $template_form_tourqi = $this->load->view($template_path . '-form-tourqi-new', $dataform, true); $ic_content_pc = $ic_content; //需要一个变量来过渡,不然$ic_content改变以后,PC端就没有标签了 $ic_content_pc = str_replace('', $template_form_tourqi, $ic_content_pc); $data["showFormTourQi"] = false; //如果有标签就不显示外面的表单,因为$ic_content会在第一次就替换掉标签,所以第二次pc端这里不执行。 $data["CUSTOMCONENT"] = $ic_content_pc; } } //两种设备分别调用两种模板 ,静态化 switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, $data, true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } //生成静态文件 $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } #endregion } /** * 上海站 */ public function make_www_cache_sh($information) { $data = []; #region 公用数据 //$apiurl = "http://202.103.68.104:61/info.php"; //本地测试 $apiurl = "https://ct.mycht.cn/info.php"; //网前 //先准备数据,采用直接赋值视图然后返回视图字符串的模式,不使用一次次替换视图模板内容的模式。 $data["TITLE"] = $information->ic_seo_title; $data["DESCRIPTION"] = $information->ic_seo_description; $data["KEYWORDS"] = $information->ic_seo_keywords; $data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url; $meta_ct_page_type = ""; $meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型 $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); //绑定的产品编号 $template_path = 'mobile_first/' . $this->config->item('site_code'); //模板位置 //面包屑 $crumb = ""; $crumb_data = $this->Information_model->get_path_exclude_ct($information->is_id, $information->is_path); if (count($crumb_data) > 0) { //至少有一个父类面包屑才显示 $crumb = "
Home"; foreach ($crumb_data as $index => $item) { $crumb .= '' . $item['ic_url_title'] . ''; } $crumb .= "
"; } $data["crumb"] = $crumb; //作者字符串,信息页或者城市天气页加载 2022-7-26 $str_author = ""; $author = $this->Operator_model->get_author_nikename($information->ic_author); if ((empty($meta_product_code) && ! ($meta_ct_page_type !== false && $meta_ct_page_type != "")) || $meta_ct_page_type == "weatherpage") { $OPI_FirstName = ! empty($author) ? $author->OPI_FirstName : 'author nickname'; $str_author = '
Written by ' . $OPI_FirstName . ' Updated ' . date("M. j, Y", strtotime($information->ic_datetime)) . '
'; } //火车票详细页搜索框添加 -- zp $meta_ct_page_trainform = get_meta($information->ic_id, 'meta_ct_page_trainform'); //是否插入火车票搜索框 $template_TrainDetailSearch = ""; if ($meta_ct_page_trainform == "yes" || strpos($information->ic_url, "/china-trains") !== false) { $meta_train_city = get_meta($information->ic_id, 'meta_train_city'); //默认的出发及目的地城市 , beijing|shanghai $data_TrainCity = []; $data_TrainCity["from"] = ""; $data_TrainCity["to"] = ""; if (! empty($meta_train_city)) { if (strpos($meta_train_city, '|') !== false) { $arrTrainCity = explode('|', $meta_train_city); $data_TrainCity["from"] = $arrTrainCity[0]; $data_TrainCity["to"] = $arrTrainCity[1]; } } $template_TrainDetailSearch = $this->load->view($template_path . '-train-index', $data_TrainCity, true); } /* 详细内容 */ $ic_content = $information->ic_content; /** 替换H1加面包屑,加作者 */ $ic_content = preg_replace('/

(.*)<\/h1>/i', $crumb . "\r\n" . '

$1

' . "\r\n" . $str_author . $template_TrainDetailSearch . "\r\n", $ic_content, 1); // 动态加载反馈标签,按城市出前三条。左侧 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } // 动态加载反馈标签,按城市出前三条。整页 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-cross', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } //图片加延迟 $ic_content = $this->html_optimize_lib->set_lazy_loader($ic_content, 'https://data.shanghaihighlights.com/image/grey.gif'); $ic_content = $this->html_optimize_lib->set_image_size($ic_content); //非产品页面 $data["PRODUCTJS"] = ""; $data["ISPRODUCT"] = "no"; //判断是否是产品页 $data["addthis_widget"] = ""; $data["FloatIcon"] = ""; //浮动图标替代addthis $arrExitUrl = ["/", "/culture", "/guide", "/tour", "/citytour", "/daytrip", "/asia-tour", "/china-trains"]; if (empty(get_meta($information->ic_id, 'meta_product_code')) || in_array($information->ic_url, $arrExitUrl)) { $data["FloatIcon"] = "
Create My Trip
"; } else { $data["ISPRODUCT"] = "yes"; } //顶部视频 $data["TOPVIDEO"] = ""; $meta_news_video = get_meta($information->ic_id, 'meta_news_video'); $meta_video_picture = get_meta($information->ic_id, 'meta_video_picture'); if (! empty($meta_news_video) && ! empty($meta_video_picture)) { $data["TOPVIDEO"] = ''; } //主样式表,内联模式 //$apiweb="http://202.103.68.104:81"; //本地测试 $apiweb = "https://data.shanghaihighlights.com"; $cssUrl = $apiweb . "/css/css3/base.css?v=" . time(); $main_css_string = compress_css(GET_HTTP($cssUrl)); $data["MAINCSS"] = ''; //额外样式 $data["ADDONCSS"] = ""; $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //引用方式 //$data["ADDONCSS"]= ''; //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $data["ADDONCSS"] = ''; } //社媒分享图片 $data["OGIMAGE"] = ""; if (! empty($information->ic_photo)) { if (strpos($information->ic_photo, "shanghaihighlights.com") != false) { $full_ic_photo = $information->ic_photo; } else { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } $data["OGIMAGE"] = ''; } //结构化标签 $data["ConstructionCode"] = ""; $meta_construction_code = get_meta($information->ic_id, 'meta_construction_code'); if (! empty($meta_construction_code)) { $data["ConstructionCode"] = $meta_construction_code; } $data["meta_index_set"] = ""; $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $data["meta_index_set"] = ''; } //总JS:为了方便以后js好维护,必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js,所以必须在这里进行判断 $addBaseJs = false; $addonJs = ""; $meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格 if ($meta_ct_page_price == "yes") { $addBaseJs = true; } else if ($meta_ct_page_type !== false && $meta_ct_page_type != "") { $addBaseJs = true; } if ($addBaseJs) { $addonJs = ''; } /// ----- 总JS判断完成----- //额外js $data["ADDONJS"] = ""; $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $addonJs .= ''; } //价格js if ($meta_ct_page_price == "yes") { $addonJs .= ''; } //列表js if (in_array($meta_ct_page_type, ['daytripindex', 'tourindex', 'attractionindex'])) { $addonJs .= ''; } //天气 if (in_array($meta_ct_page_type, ['weatherpage'])) { $addonJs .= ''; } //页面传递参数 $passParam = ""; if (in_array($meta_ct_page_type, ["daytripindex", "tourindex", "attractionindex", "weatherpage"])) { //一日游和线路列表 //产品首页 $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (in_array($meta_ct_page_type, ["attractionindex"])) { //旧信息id,景点等信息类 $passParam .= ''; } else { //城市名称,产品类用 $passParam .= ''; } //加信息平台的is_id $passParam .= ''; } //产品详细页 $productType = ""; $productCode = ""; if ($meta_ct_page_type == "daytripdetail") { //一日游 if (! empty($meta_ct_page_type)) { $productType = $meta_ct_page_type; } $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } $addonJs .= ''; //$addonJs .= ''; $data["ADDONCSS"] .= ''; //一日游表单的替换 $DayTripData["productCode"] = $productCode; $template_form_daydetail = $this->load->view($template_path . '-daydetail-form', $DayTripData, true); //模板内容 //使用simple_html_dom_lib库来进行表单添加 $ic_content = $this->html_optimize_lib->add_htmlcode($ic_content, "#maincontent", $template_form_daydetail); } if ($meta_ct_page_type == "tourdetail") { //线路 $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //获取cli_sn $tourdata = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/apish/getCliSn/?param=" . $productCode)); $data["clisn"] = $tourdata->clisn; //获取price $tourprice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/apish/getTourPrice/?param=" . $productCode)); $dataform["tourprice"] = $tourprice->price; //调取模板 $dataform["TourCode"] = $productCode; $dataform["CLI_SN"] = $tourdata->clisn; $dataform["TourName"] = $information->ic_title; $dataform["ic_photo"] = $information->ic_photo; $template_form_tourqi = $this->load->view($template_path . '-form-tourqi', $dataform, true); //使用simple_html_dom_lib库来进行表单添加 $ic_content = $this->html_optimize_lib->add_htmlcode($ic_content, "#maincontent", $template_form_tourqi); } if ($meta_ct_page_type == "tourlist") { //线路类型列表 $lineTypeList = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getLineTypeList/?webcode=shanghai")); $dataTourList["lineTypeList"] = $lineTypeList; $tourListData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getTourList/?webcode=shanghai")); $dataTourList["tourListData"] = $tourListData; //替换模板 $template_page_tourlist = $this->load->view($template_path . '-tour-list', $dataTourList, true); //模板内容 $ic_content = str_replace('', $template_page_tourlist, $ic_content); $addonJs .= ''; } if ($meta_ct_page_type == "daytriplist") { //一日游类型 $allTypeList = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getPagTypeList/?webcode=shanghai")); $dataDayTripList["allTypeList"] = $allTypeList; $dayTripListData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getSearchDaytripList/?webcode=shanghai")); $dataDayTripList["dayTripListData"] = $dayTripListData; //替换模板 $template_page_daytriplist = $this->load->view($template_path . '-daytrip-list', $dataDayTripList, true); //模板内容 $ic_content = str_replace('', $template_page_daytriplist, $ic_content); $addonJs .= ''; } //表单页 if (in_array($meta_ct_page_type, ["customize", "contactus", "pagewithform", "tourdetail"])) { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } if ($meta_ct_page_type == "daytripform") { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } $data["productType"] = $productType; $data["productCode"] = $productCode; //页面添加的元素 $data["ADDONJS"] = $addonJs; $data["passParam"] = $passParam; //页面详细内容放最后,这样上面都可以进行内容的替换,比如一日游表单 $data["CUSTOMCONENT"] = $ic_content; #endregion #region 移动端和PC端差别处理区域 $arrDevice = ["mobile", "pc"]; foreach ($arrDevice as $device) { //顶部全屏大图 $data["TOPBANNER"] = ""; $ImgText = ""; //图文字 $meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url'); $meta_addon_picture_text = get_meta($information->ic_id, 'meta_addon_picture_text'); if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } // 搜索框 $template_TrainSearch = ""; if ($information->ic_url == "/china-trains/hometest" || $information->ic_url == "/trains") { //火车票首页 $template_TrainSearch = $this->load->view($template_path . '-train-index', null, true); $ImgText = ""; //火车票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } else if ($information->ic_url == "/china-flights") { //机票首页 $template_TrainSearch = $this->load->view($template_path . '-flight-index', null, true); $ImgText = ""; //飞机票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } if (! empty($meta_addon_picture)) { if (! empty($meta_addon_picture_url)) { $data["TOPBANNER"] = ''; } else { $data["TOPBANNER"] = ''; } } //两种设备分别调用两种模板 ,静态化 switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, $data, true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } //生成静态文件 $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } #endregion } /** * 北京站mybeijingchina.com */ public function make_www_cache_bj($information) { $data = []; #region 公用数据 //$apiurl = "http://202.103.68.104:61/info.php"; //本地测试 $apiurl = "https://ct.mycht.cn/info.php"; //网前 //先准备数据,采用直接赋值视图然后返回视图字符串的模式,不使用一次次替换视图模板内容的模式。 $data["TITLE"] = $information->ic_seo_title; $data["DESCRIPTION"] = $information->ic_seo_description; $data["KEYWORDS"] = $information->ic_seo_keywords; $data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url; $meta_ct_page_type = ""; $meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型 $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); //绑定的产品编号 $template_path = 'mobile_first/' . $this->config->item('site_code'); //模板位置 //面包屑 $crumb = ""; $crumb_data = $this->Information_model->get_path_exclude_ct($information->is_id, $information->is_path); if (count($crumb_data) > 0) { //至少有一个父类面包屑才显示 $crumb = "
Home"; foreach ($crumb_data as $index => $item) { $crumb .= '' . $item['ic_url_title'] . ''; } $crumb .= "
"; } $data["crumb"] = $crumb; //作者字符串,信息页或者城市天气页加载 2022-7-26 $str_author = ""; $author = $this->Operator_model->get_author_nikename($information->ic_author); if ((empty($meta_product_code) && ! ($meta_ct_page_type !== false && $meta_ct_page_type != "")) || $meta_ct_page_type == "weatherpage") { $OPI_FirstName = ! empty($author) ? $author->OPI_FirstName : 'author nickname'; $str_author = '
Written by ' . $OPI_FirstName . ' Updated ' . date("M. j, Y", strtotime($information->ic_datetime)) . '
'; } //火车票详细页搜索框添加 -- zp $meta_ct_page_trainform = get_meta($information->ic_id, 'meta_ct_page_trainform'); //是否插入火车票搜索框 $template_TrainDetailSearch = ""; if ($meta_ct_page_trainform == "yes" || strpos($information->ic_url, "/china-trains") !== false) { $meta_train_city = get_meta($information->ic_id, 'meta_train_city'); //默认的出发及目的地城市 , beijing|shanghai $data_TrainCity = []; $data_TrainCity["from"] = ""; $data_TrainCity["to"] = ""; if (! empty($meta_train_city)) { if (strpos($meta_train_city, '|') !== false) { $arrTrainCity = explode('|', $meta_train_city); $data_TrainCity["from"] = $arrTrainCity[0]; $data_TrainCity["to"] = $arrTrainCity[1]; } } $template_TrainDetailSearch = $this->load->view($template_path . '-train-index', $data_TrainCity, true); } /* 详细内容 */ $ic_content = $information->ic_content; /** 替换H1加面包屑,加作者 */ $ic_content = preg_replace('/

(.*)<\/h1>/i', $crumb . "\r\n" . '

$1

' . "\r\n" . $str_author . $template_TrainDetailSearch . "\r\n", $ic_content, 1); // 动态加载反馈标签,按城市出前三条。左侧 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } // 动态加载反馈标签,按城市出前三条。整页 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-cross', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } //图片加延迟 $ic_content = $this->html_optimize_lib->set_lazy_loader($ic_content, 'https://www.mybeijingchina.com/images/grey.gif'); $ic_content = $this->html_optimize_lib->set_image_size($ic_content); //非产品页面 $data["PRODUCTJS"] = ""; $data["ISPRODUCT"] = "no"; //判断是否是产品页 $data["addthis_widget"] = ""; $data["FloatIcon"] = ""; //浮动图标替代addthis $arrExitUrl = ["/", "/culture", "/guide", "/tour", "/citytour", "/daytrip", "/asia-tour", "/china-trains"]; if (empty(get_meta($information->ic_id, 'meta_product_code')) || in_array($information->ic_url, $arrExitUrl)) { $data["FloatIcon"] = "
Create My Trip
"; } else { $data["ISPRODUCT"] = "yes"; } //顶部视频 $data["TOPVIDEO"] = ""; $meta_news_video = get_meta($information->ic_id, 'meta_news_video'); $meta_video_picture = get_meta($information->ic_id, 'meta_video_picture'); if (! empty($meta_news_video) && ! empty($meta_video_picture)) { $data["TOPVIDEO"] = ''; } //主样式表,内联模式 //$apiweb="http://202.103.68.104:84"; //本地测试 $apiweb = "https://www.mybeijingchina.com"; $cssUrl = $apiweb . "/css/css3/base.css?v=" . time(); $main_css_string = compress_css(GET_HTTP($cssUrl)); $data["MAINCSS"] = ''; //额外样式 $data["ADDONCSS"] = ""; $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //引用方式 //$data["ADDONCSS"]= ''; //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $data["ADDONCSS"] = ''; } //社媒分享图片 $data["OGIMAGE"] = ""; if (! empty($information->ic_photo)) { if (strpos($information->ic_photo, "mybeijingchina.com") != false) { $full_ic_photo = $information->ic_photo; } else { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } $data["OGIMAGE"] = ''; } //结构化标签 $data["ConstructionCode"] = ""; $meta_construction_code = get_meta($information->ic_id, 'meta_construction_code'); if (! empty($meta_construction_code)) { $data["ConstructionCode"] = $meta_construction_code; } $data["meta_index_set"] = ""; $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $data["meta_index_set"] = ''; } //总JS:为了方便以后js好维护,必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js,所以必须在这里进行判断 $addBaseJs = false; $addonJs = ""; $meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格 if ($meta_ct_page_price == "yes") { $addBaseJs = true; } else if ($meta_ct_page_type !== false && $meta_ct_page_type != "") { $addBaseJs = true; } if ($addBaseJs) { $addonJs = ''; } /// ----- 总JS判断完成----- //额外js $data["ADDONJS"] = ""; $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $addonJs .= ''; } //价格js if ($meta_ct_page_price == "yes") { $addonJs .= ''; } //列表js if (in_array($meta_ct_page_type, ['daytripindex', 'tourindex', 'attractionindex'])) { $addonJs .= ''; } //天气 if (in_array($meta_ct_page_type, ['weatherpage'])) { $addonJs .= ''; } //页面传递参数 $passParam = ""; if (in_array($meta_ct_page_type, ["daytripindex", "tourindex", "attractionindex", "weatherpage"])) { //一日游和线路列表 //产品首页 $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (in_array($meta_ct_page_type, ["attractionindex"])) { //旧信息id,景点等信息类 $passParam .= ''; } else { //城市名称,产品类用 $passParam .= ''; } //加信息平台的is_id $passParam .= ''; } //产品详细页 $productType = ""; $productCode = ""; if ($meta_ct_page_type == "daytripdetail") { //一日游 if (! empty($meta_ct_page_type)) { $productType = $meta_ct_page_type; } $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } $addonJs .= ''; //$addonJs .= ''; $data["ADDONCSS"] .= ''; //一日游表单的替换,放到下面的区分PC端和移动端 } if ($meta_ct_page_type == "tourdetail") { //线路 $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //获取cli_sn $tourdata = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/apibj/getCliSn/?param=" . $productCode)); $data["clisn"] = $tourdata->clisn; //调取模板 $dataform["TourCode"] = $productCode; $dataform["CLI_SN"] = $tourdata->clisn; $dataform["TourName"] = $information->ic_title; } if ($meta_ct_page_type == "tourlist") { //线路类型列表 $lineTypeList = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getLineTypeList/?webcode=beijing")); $dataTourList["lineTypeList"] = $lineTypeList; $tourListData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getTourList/?webcode=beijing")); $dataTourList["tourListData"] = $tourListData; //替换模板 $template_page_tourlist = $this->load->view('mobile_first/shanghai-tour-list', $dataTourList, true); //模板内容,统一用上海站模板 $ic_content = str_replace('', $template_page_tourlist, $ic_content); $addonJs .= ''; } if ($meta_ct_page_type == "daytriplist") { //一日游类型 $allTypeList = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getPagTypeList/?webcode=beijing")); $dataDayTripList["allTypeList"] = $allTypeList; $dayTripListData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getSearchDaytripList/?webcode=beijing")); $dataDayTripList["dayTripListData"] = $dayTripListData; //替换模板 $template_page_daytriplist = $this->load->view('mobile_first/shanghai-daytrip-list', $dataDayTripList, true); //模板内容,统一用上海站模板 $ic_content = str_replace('', $template_page_daytriplist, $ic_content); $addonJs .= ''; } //表单页 if (in_array($meta_ct_page_type, ["customize", "contactus", "pagewithform", "tourdetail"])) { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } if ($meta_ct_page_type == "daytripform") { $productType = $meta_ct_page_type; $addonJs .= ''; //$data["ADDONCSS"] .= ''; } $data["productType"] = $productType; $data["productCode"] = $productCode; //页面添加的元素 $data["ADDONJS"] = $addonJs; $data["passParam"] = $passParam; //页面详细内容放最后,这样上面都可以进行内容的替换,比如一日游表单 $data["CUSTOMCONENT"] = $ic_content; #endregion #region 移动端和PC端差别处理区域 $arrDevice = ["mobile", "pc"]; foreach ($arrDevice as $device) { //顶部全屏大图 $data["TOPBANNER"] = ""; $ImgText = ""; //图文字 $meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url'); $meta_addon_picture_text = get_meta($information->ic_id, 'meta_addon_picture_text'); if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } // 搜索框 $template_TrainSearch = ""; if ($information->ic_url == "/china-trains/hometest" || $information->ic_url == "/trains") { //火车票首页 $template_TrainSearch = $this->load->view($template_path . '-train-index', null, true); $ImgText = ""; //火车票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } else if ($information->ic_url == "/china-flights") { //机票首页 $template_TrainSearch = $this->load->view($template_path . '-flight-index', null, true); $ImgText = ""; //飞机票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } if (! empty($meta_addon_picture)) { if (! empty($meta_addon_picture_url)) { $data["TOPBANNER"] = ''; } else { $data["TOPBANNER"] = ''; } } if ($meta_ct_page_type == "daytripdetail") { //一日游产品的表单处理放这里,根据PC和移动端有所区别 $DayTripData['device'] = $device; //准备数据 $DayTripData["productCode"] = $productCode; $DayTripData["picture_mobile"] = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $DayTripData["picture_pc"] = get_meta($information->ic_id, 'meta_addon_picture'); $DayTripData["TITLE"] = $information->ic_title; $InfoData = new stdClass(); //传递用来计算的信息平台数据 $MinTravelers = get_meta($information->ic_id, 'meta_trippest_limitperson'); $InfoData->MinTravelers = $MinTravelers == null ? 0 : $MinTravelers; //附加选项 $t_Type = get_meta($information->ic_id, "meta_trippest_type"); //产品类型 if ($t_Type) { $InfoData->t_Type = $t_Type; } else { $InfoData->t_Type = "general"; } $t_excludedate = get_meta($information->ic_id, "meta_trippest_excludedate"); $t_includedate = get_meta($information->ic_id, "meta_trippest_includedate"); $t_excludemonth = get_meta($information->ic_id, "meta_trippest_excludemonth"); $InfoData->t_excludedate = $t_excludedate; $InfoData->t_includedate = $t_includedate; $InfoData->t_excludemonth = $t_excludemonth; $InfoData->t_hoteladdress = get_meta($information->ic_id, "meta_trippest_hoteladdress"); $InfoData->t_defaultDate = get_meta($information->ic_id, "meta_trippest_defaultDate"); //延迟天数 $t_meta_trippest_delayday = get_meta($information->ic_id, "meta_trippest_delayday"); $InfoData->t_meta_trippest_delayday = $t_meta_trippest_delayday == null ? 0 : $t_meta_trippest_delayday; $DayTripData["InfoData"] = $InfoData; //传递信息平台数据 $linktour = get_meta($information->ic_id, 'meta_trainspread_linktour'); //关联线路 if (! empty($linktour)) { $paramCode = $productCode . "," . $linktour; } else { $paramCode = $productCode; } //产品汉特信息,测试地址:http://202.103.68.104:61/info.php/thirdparty/ctmobilefirst/apits/getDaytripDetail/?param=TS-HKALC-1,TS-HKALC-2,TS-HKALC-3 $TourData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getDaytripDetail/?webcode=beijing¶m=" . $paramCode)); $DayTripData["TourData"] = $TourData; $TourPrice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getDaytripsPrice/?webcode=beijing¶m=" . $productCode)); if ($TourPrice->status == "ok") { $DayTripData["DaytripPrice"] = $TourPrice->price; } else { $TourPrice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getDaytripsPrice/?webcode=beijing¶m=" . $productCode . ",3")); $DayTripData["DaytripPrice"] = $TourPrice->price; } $template_form_daydetail = $this->load->view($template_path . '-daydetail-form', $DayTripData, true); //模板内容 //使用simple_html_dom_lib库来进行表单添加 $ic_content_pc = $ic_content; //需要一个变量来过渡,不然$ic_content改变以后PC端就没有 $ic_content_pc = $this->html_optimize_lib->add_htmlcode($ic_content, "#maincontent", $template_form_daydetail); $data["CUSTOMCONENT"] = $ic_content_pc; } if ($meta_ct_page_type == "tourdetail") { //线路表单,左右结构,用标签来做 $dataform['device'] = $device; $template_form_tourqi = $this->load->view($template_path . '-form-tourqi-new', $dataform, true); $ic_content_pc = $ic_content; //需要一个变量来过渡,不然$ic_content改变以后,PC端就没有标签了 $ic_content_pc = str_replace('', $template_form_tourqi, $ic_content_pc); $data["CUSTOMCONENT"] = $ic_content_pc; } //两种设备分别调用两种模板 ,静态化 switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, $data, true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } //生成静态文件 $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } #endregion } /** * TrainSpread网站静态化 */ public function make_www_cache_ts($information) { $data = []; #region 公用数据 //$apiurl = "http://202.103.68.104:61/info.php"; //本地测试 $apiurl = "https://ct.mycht.cn/info.php"; //网前 //先准备数据,采用直接赋值视图然后返回视图字符串的模式,不使用一次次替换视图模板内容的模式。 $data["TITLE"] = $information->ic_seo_title; $data["DESCRIPTION"] = $information->ic_seo_description; $data["KEYWORDS"] = $information->ic_seo_keywords; $data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url; $meta_ct_page_type = ""; $meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型 $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); //绑定的产品编号 $template_path = 'mobile_first/' . $this->config->item('site_code'); //模板位置 //面包屑 $crumb = ""; $crumb_data = $this->Information_model->get_path_exclude_ct($information->is_id, $information->is_path); if (count($crumb_data) > 0) { //至少有一个父类面包屑才显示 $crumb = "
Home"; foreach ($crumb_data as $index => $item) { $crumb .= '' . $item['ic_url_title'] . ''; } $crumb .= "
"; } $data["crumb"] = $crumb; //作者字符串,信息页或者城市天气页加载 2022-7-26 $str_author = ""; $author = $this->Operator_model->get_author_nikename($information->ic_author); if ((empty($meta_product_code) && ! ($meta_ct_page_type !== false && $meta_ct_page_type != "")) || $meta_ct_page_type == "weatherpage") { $OPI_FirstName = ! empty($author) ? $author->OPI_FirstName : 'author nickname'; $str_author = '
Written by ' . $OPI_FirstName . ' Updated ' . date("M. j, Y", strtotime($information->ic_datetime)) . '
'; } //火车票详细页搜索框添加 -- zp $meta_ct_page_trainform = get_meta($information->ic_id, 'meta_ct_page_trainform'); //是否插入火车票搜索框 $template_TrainDetailSearch = ""; if ($meta_ct_page_trainform == "yes" || strpos($information->ic_url, "/china-trains") !== false) { $meta_train_city = get_meta($information->ic_id, 'meta_train_city'); //默认的出发及目的地城市 , beijing|shanghai $data_TrainCity = []; $data_TrainCity["from"] = ""; $data_TrainCity["to"] = ""; if (! empty($meta_train_city)) { if (strpos($meta_train_city, '|') !== false) { $arrTrainCity = explode('|', $meta_train_city); $data_TrainCity["from"] = $arrTrainCity[0]; $data_TrainCity["to"] = $arrTrainCity[1]; } } $template_TrainDetailSearch = $this->load->view($template_path . '-train-index', $data_TrainCity, true); } /* 详细内容 */ $ic_content = $information->ic_content; /** 替换H1加面包屑,加作者 */ $ic_content = preg_replace('/

(.*)<\/h1>/i', $crumb . "\r\n" . '

$1

' . "\r\n" . $str_author . $template_TrainDetailSearch . "\r\n", $ic_content, 1); //图片加延迟 $ic_content = $this->html_optimize_lib->set_lazy_loader($ic_content, 'https://www.trainspread.com/images/grey.gif'); $ic_content = $this->html_optimize_lib->set_image_size($ic_content); //非产品页面 $data["PRODUCTJS"] = ""; $data["ISPRODUCT"] = "no"; //判断是否是产品页 $data["addthis_widget"] = ""; $data["FloatIcon"] = ""; //浮动图标替代addthis $arrExitUrl = ["/", "/culture", "/guide", "/tour", "/citytour", "/daytrip", "/asia-tour", "/china-trains"]; if (empty(get_meta($information->ic_id, 'meta_product_code')) || in_array($information->ic_url, $arrExitUrl)) { $data["FloatIcon"] = "
Create My Trip
"; } else { $data["ISPRODUCT"] = "yes"; } //顶部视频 $data["TOPVIDEO"] = ""; $meta_news_video = get_meta($information->ic_id, 'meta_news_video'); $meta_video_picture = get_meta($information->ic_id, 'meta_video_picture'); if (! empty($meta_news_video) && ! empty($meta_video_picture)) { $data["TOPVIDEO"] = ''; } //主样式表,内联模式 //$apiweb="http://202.103.68.104:71"; //本地测试 $apiweb = "https://www.trainspread.com"; $cssUrl = $apiweb . "/css/base.css?v=" . time(); $main_css_string = compress_css(GET_HTTP($cssUrl)); $data["MAINCSS"] = ''; //额外样式 $data["ADDONCSS"] = ""; $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //引用方式 //$data["ADDONCSS"]= ''; //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $data["ADDONCSS"] = ''; } //社媒分享图片 $data["OGIMAGE"] = ""; $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); if (! empty($information->ic_photo)) { // if (strpos($information->ic_photo, "trainspread.com") != false) { // $full_ic_photo = $information->ic_photo; // } else { // $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; // } $full_ic_photo = $information->ic_photo; $data["OGIMAGE"] = ''; } else if (! empty($meta_addon_picture)) { // if (strpos($meta_addon_picture, "trainspread.com") != false) { // $full_ic_photo = $meta_addon_picture; // } else { // $full_ic_photo = $this->config->item('site_image_url') . $meta_addon_picture; // } $full_ic_photo = $meta_addon_picture; $data["OGIMAGE"] = ''; } //结构化标签 $data["ConstructionCode"] = ""; $meta_construction_code = get_meta($information->ic_id, 'meta_construction_code'); if (! empty($meta_construction_code)) { $data["ConstructionCode"] = $meta_construction_code; } $data["meta_index_set"] = ""; $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $data["meta_index_set"] = ''; } //总JS:为了方便以后js好维护,必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js,所以必须在这里进行判断 $addBaseJs = false; $addonJs = ""; $meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格 if ($meta_ct_page_price == "yes") { $addBaseJs = true; } else if ($meta_ct_page_type !== false && $meta_ct_page_type != "") { $addBaseJs = true; } if ($addBaseJs) { $addonJs = ''; } /// ----- 总JS判断完成----- //额外js $data["ADDONJS"] = ""; $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $addonJs .= ''; } //价格js if ($meta_ct_page_price == "yes") { $addonJs .= ''; } //列表js if (in_array($meta_ct_page_type, ['daytripindex', 'tourindex', 'attractionindex'])) { $addonJs .= ''; } //天气 if (in_array($meta_ct_page_type, ['weatherpage'])) { $addonJs .= ''; } //页面传递参数 $passParam = ""; if (in_array($meta_ct_page_type, ["daytripindex", "tourindex", "attractionindex", "weatherpage"])) { //一日游和线路列表 //产品首页 $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (in_array($meta_ct_page_type, ["attractionindex"])) { //旧信息id,景点等信息类 $passParam .= ''; } else { //城市名称,产品类用 $passParam .= ''; } //加信息平台的is_id $passParam .= ''; } //产品详细页 $productType = ""; $productCode = ""; if ($meta_ct_page_type == "daytripdetail") { //一日游 if (! empty($meta_ct_page_type)) { $productType = $meta_ct_page_type; } $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } $addonJs .= ''; // $addonJs .= ''; $data["ADDONCSS"] .= ''; //一日游表单的替换,放到下面的区分PC端和移动端 //浮动按钮 $floatButton = '
Inquire This Tour
'; if ( strpos($ic_content, 'container-right') !== false){ $ic_content = $this->html_optimize_lib->add_htmlcode($ic_content, ".container-right", $floatButton); }else{ $ic_content = $this->html_optimize_lib->add_htmlcode($ic_content, ".container-details", $floatButton); } } if ($meta_ct_page_type == "tourdetail") { //线路 $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //获取cli_sn $tourdata = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/apits/getCliSn/?param=" . $productCode)); $data["clisn"] = $tourdata->clisn; //调取模板 $dataform["TourCode"] = $productCode; $dataform["CLI_SN"] = $tourdata->clisn; $dataform["TourName"] = $information->ic_title; } //表单页 if (in_array($meta_ct_page_type, ["customize", "contactus", "pagewithform", "tourdetail"])) { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } if ($meta_ct_page_type == "daytripform") { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; //$data["ADDONCSS"] .= ''; } $data["productType"] = $productType; $data["productCode"] = $productCode; //页面添加的元素 $data["ADDONJS"] = $addonJs; $data["passParam"] = $passParam; //页面详细内容放最后,这样上面都可以进行内容的替换,比如一日游表单 $data["CUSTOMCONENT"] = $ic_content; #endregion #region 移动端和PC端差别处理区域 $arrDevice = ["mobile", "pc"]; foreach ($arrDevice as $device) { //顶部全屏大图 $data["TOPBANNER"] = ""; $ImgText = ""; //图文字 $meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url'); $meta_addon_picture_text = get_meta($information->ic_id, 'meta_addon_picture_text'); if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } // 搜索框 $template_TrainSearch = ""; if ($information->ic_url == "/" || $information->ic_url == "/test" || $information->ic_url == "/china-trains") { //火车票首页 $template_TrainSearch = $this->load->view($template_path . '-train-index', null, true); $ImgText = ""; //火车票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } else if ($information->ic_url == "/china-flights") { //机票首页 $template_TrainSearch = $this->load->view($template_path . '-flight-index', null, true); $ImgText = ""; //飞机票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } if ($meta_ct_page_type == "daytripdetail") { //一日游产品的表单处理放这里,根据PC和移动端有所区别 $DayTripData['device'] = $device; /**替换左右结构的线路表单标签 2024-7-4*/ if (strpos($ic_content, '') !== false) { //准备数据 $DayTripData["productCode"] = $productCode; $DayTripData["picture_mobile"] = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $DayTripData["picture_pc"] = get_meta($information->ic_id, 'meta_addon_picture'); $DayTripData["TITLE"] = $information->ic_title; //成人,儿童,婴儿的年龄显示信息 $AdultMsg = $this->infoBokunData_model->getBokunMetaList($information->ic_id, "AdultMsg"); if ($AdultMsg) { foreach ($AdultMsg as $AdultMsgItem) { $DayTripData["AdultMsg"] = $AdultMsgItem->ibd_Itemvalue; } } else { $DayTripData["AdultMsg"] = null; } $ChildMsg = $this->infoBokunData_model->getBokunMetaList($information->ic_id, "ChildMsg"); if ($ChildMsg) { foreach ($ChildMsg as $ChildMsgItem) { $DayTripData["ChildMsg"] = $ChildMsgItem->ibd_Itemvalue; } } else { $DayTripData["ChildMsg"] = null; } $InfantMsg = $this->infoBokunData_model->getBokunMetaList($information->ic_id, "InfantMsg"); if ($InfantMsg) { foreach ($InfantMsg as $InfantMsgItem) { $DayTripData["InfantMsg"] = $InfantMsgItem->ibd_Itemvalue; } } else { $DayTripData["InfantMsg"] = null; } //有些接送没有对应的成人及儿童只有一个Other $Other_Msg = $this->infoBokunData_model->getBokunMetaList($information->ic_id, "Other_Msg"); if ($Other_Msg) { foreach ($Other_Msg as $Other_MsgItem) { $DayTripData["Other_Msg"] = $Other_MsgItem->ibd_Itemvalue; } } else { $DayTripData["Other_Msg"] = null; } $InfoData = new stdClass(); //传递用来计算的信息平台数据 $MinTravelers = get_meta($information->ic_id, 'meta_trippest_limitperson'); $InfoData->MinTravelers = $MinTravelers == null ? 0 : $MinTravelers; //选项一 $TsOption1 = get_meta($information->ic_id, 'meta_trainspread_option1'); $InfoData->Option1 = new stdClass(); if ($TsOption1 != false) { $arrOption = explode(",", $TsOption1); $arrItem = []; $num = count($arrOption); for ($i = 0; $i < $num; $i++) { if ($i == 0) { $InfoData->Option1->OptionName = $arrOption[$i]; } else { $arrItemClass = new stdClass(); $arrItemClass->id = $i - 1; $arrItemClass->value = $arrOption[$i]; $arrItem[$i - 1] = $arrItemClass; } } $InfoData->Option1->ItemList = $arrItem; } else { $InfoData->Option1 = $TsOption1; } //Package $TsPackage = get_meta($information->ic_id, 'meta_trippest_package'); $InfoData->Package = new stdClass(); if ($TsPackage != false) { $arrOption = explode("|", $TsPackage); $arrItem = []; $num = count($arrOption); for ($i = 0; $i < $num; $i++) { if ($i == 0) { $InfoData->Package->PackageName = $arrOption[$i]; } else { $arr_Item = explode(",", $arrOption[$i]); for ($j = 0; $j < count($arr_Item); $j++) { $arrItemClass = new stdClass(); $arrItemClass->id = $i; $arrItemClass->ItemName = $arr_Item[0]; $arrItemClass->ItemAdult = $arr_Item[1]; $arrItemClass->ItemChild = $arr_Item[2]; $arrItem[$i - 1] = $arrItemClass; } } } $InfoData->Package->ItemList = $arrItem; } else { $InfoData->Package = $TsPackage; } //选项二 $TsOption2 = get_meta($information->ic_id, 'meta_trainspread_option2'); $InfoData->Option2 = new stdClass(); if ($TsOption2 != false) { $arrOption = explode(",", $TsOption2); $arrItem = []; $num = count($arrOption); for ($i = 0; $i < $num; $i++) { if ($i == 0) { $InfoData->Option2->OptionName = $arrOption[$i]; } else { $arrItemClass = new stdClass(); $arrItemClass->id = $i - 1; $arrItemClass->value = $arrOption[$i]; $arrItem[$i - 1] = $arrItemClass; } } $InfoData->Option2->ItemList = $arrItem; } else { $InfoData->Option2 = $TsOption2; } //附加选项 $t_Type = get_meta($information->ic_id, "meta_trippest_type"); //产品类型 if ($t_Type) { $InfoData->t_Type = $t_Type; } else { $InfoData->t_Type = "general"; } $t_excludedate = get_meta($information->ic_id, "meta_trippest_excludedate"); $t_includedate = get_meta($information->ic_id, "meta_trippest_includedate"); $t_excludemonth = get_meta($information->ic_id, "meta_trippest_excludemonth"); $InfoData->t_excludedate = $t_excludedate; $InfoData->t_includedate = $t_includedate; $InfoData->t_excludemonth = $t_excludemonth; $InfoData->t_hoteladdress = get_meta($information->ic_id, "meta_trippest_hoteladdress"); $InfoData->t_defaultDate = get_meta($information->ic_id, "meta_trippest_defaultDate"); //延迟天数 $t_meta_trippest_delayday = get_meta($information->ic_id, "meta_trippest_delayday"); $InfoData->t_meta_trippest_delayday = $t_meta_trippest_delayday == null ? 0 : $t_meta_trippest_delayday; $t_Cancellation = get_meta($information->ic_id, "meta_trainspread_Cancellation"); //取消条款类型 if ($t_Cancellation) { $InfoData->t_Cancellation = $t_Cancellation; } else { $InfoData->t_Cancellation = ""; } $t_CustomCancel = get_meta($information->ic_id, "meta_trainspread_CustomCancel"); if ($t_CustomCancel) { $InfoData->t_CustomCancelText = $t_CustomCancel; } else { $InfoData->t_CustomCancelText = ""; } $DayTripData["InfoData"] = $InfoData; //传递信息平台数据 $linktour = get_meta($information->ic_id, 'meta_trainspread_linktour'); //关联线路 if (! empty($linktour)) { $paramCode = $productCode . "," . $linktour; } else { $paramCode = $productCode; } //产品汉特信息,测试地址:http://202.103.68.104:61/info.php/thirdparty/ctmobilefirst/apits/getDaytripDetail/?param=TS-HKALC-1,TS-HKALC-2,TS-HKALC-3 $TourData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/apits/getDaytripDetail/?param=" . $paramCode)); $DayTripData["TourData"] = $TourData; $TourPrice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/apits/getDaytripsPrice/?param=" . $productCode)); if ($TourPrice->status == "ok") { $DayTripData["DaytripPrice"] = $TourPrice->price; } else { $TourPrice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/apits/getDaytripsPrice/?param=" . $productCode . ",3")); $DayTripData["DaytripPrice"] = $TourPrice->price; } //替换模板 $TS_DayTripContent = $ic_content; //因为需要替换,所以要转给零时变量。不然手机端替换完了,PC端就没有了。 $template_form_daydetail = $this->load->view($template_path . '-daydetail-form', $DayTripData, true); //模板内容 $TS_DayTripContent = str_replace('', $template_form_daydetail, $TS_DayTripContent); $data["CUSTOMCONENT"] = $TS_DayTripContent; } } else { //一日游产品有自己的图片展示效果 if (! empty($meta_addon_picture)) { if (! empty($meta_addon_picture_url)) { $data["TOPBANNER"] = ''; } else { $data["TOPBANNER"] = ''; } } } //两种设备分别调用两种模板 ,静态化 switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, $data, true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } //生成静态文件 $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } #endregion } /** * 桂林站 www.guilinchina.net */ public function make_www_cache_gl($information) { $data = []; #region 公用数据 //$apiurl = "http://202.103.68.104:88/info.php"; //本地测试 $apiurl = "https://ct.mycht.cn/info.php"; //网前 //先准备数据,采用直接赋值视图然后返回视图字符串的模式,不使用一次次替换视图模板内容的模式。 $data["TITLE"] = $information->ic_seo_title; $data["DESCRIPTION"] = $information->ic_seo_description; $data["KEYWORDS"] = $information->ic_seo_keywords; $data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url; $meta_ct_page_type = ""; $meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型 $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); //绑定的产品编号 $template_path = 'mobile_first/' . $this->config->item('site_code'); //模板位置 //面包屑 $crumb = ""; $crumb_data = $this->Information_model->get_path_exclude_ct($information->is_id, $information->is_path); if (count($crumb_data) > 0) { //至少有一个父类面包屑才显示 $crumb = "
Home"; foreach ($crumb_data as $index => $item) { $crumb .= '' . $item['ic_url_title'] . ''; } $crumb .= "
"; } $data["crumb"] = $crumb; //作者字符串,信息页或者城市天气页加载 2022-7-26 $str_author = ""; $author = $this->Operator_model->get_author_nikename($information->ic_author); if ((empty($meta_product_code) && ! ($meta_ct_page_type !== false && $meta_ct_page_type != "")) || $meta_ct_page_type == "weatherpage") { $OPI_FirstName = ! empty($author) ? $author->OPI_FirstName : 'author nickname'; $str_author = '
Written by ' . $OPI_FirstName . ' Updated ' . date("M. j, Y", strtotime($information->ic_datetime)) . '
'; } //火车票详细页搜索框添加 -- zp $meta_ct_page_trainform = get_meta($information->ic_id, 'meta_ct_page_trainform'); //是否插入火车票搜索框 $template_TrainDetailSearch = ""; if ($meta_ct_page_trainform == "yes" || strpos($information->ic_url, "/china-trains") !== false) { $meta_train_city = get_meta($information->ic_id, 'meta_train_city'); //默认的出发及目的地城市 , beijing|shanghai $data_TrainCity = []; $data_TrainCity["from"] = ""; $data_TrainCity["to"] = ""; if (! empty($meta_train_city)) { if (strpos($meta_train_city, '|') !== false) { $arrTrainCity = explode('|', $meta_train_city); $data_TrainCity["from"] = $arrTrainCity[0]; $data_TrainCity["to"] = $arrTrainCity[1]; } } $template_TrainDetailSearch = $this->load->view($template_path . '-train-index', $data_TrainCity, true); } /* 详细内容 */ $ic_content = $information->ic_content; /** 替换H1加面包屑,加作者 */ $ic_content = preg_replace('/

(.*)<\/h1>/i', $crumb . "\r\n" . '

$1

' . "\r\n" . $str_author . $template_TrainDetailSearch . "\r\n", $ic_content, 1); // 动态加载反馈标签,按城市出前三条。左侧 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-list', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } // 动态加载反馈标签,按城市出前三条。整页 // HTLM:
,显示全部用 // 解析结果:; Shanghai,Beijing $feedback_array = []; preg_match_all('^^', $information->ic_content, $feedback_array); if (! empty($feedback_array)) { foreach ($feedback_array[0] as $index => $tag_name) { $city_name_string = $feedback_array[1][$index]; $feedback_list = $this->Feedback_model->get_CT_feedback_by_cityname($city_name_string, 30); // 防止触发 Google 网络垃圾政策只返回前三条 $top3_feedback_list = array_slice($feedback_list, 0, 3); $feedback_content = $this->load->view( 'mobile_first/chinatravel-feedback-cross', ['feedback_list' => $top3_feedback_list], true ); $ic_content = str_replace( $tag_name, $feedback_content, $ic_content ); } } //图片加延迟 $ic_content = $this->html_optimize_lib->set_lazy_loader($ic_content, 'https://data.guilinchina.net/image/grey.gif'); $ic_content = $this->html_optimize_lib->set_image_size($ic_content); //非产品页面 $data["PRODUCTJS"] = ""; $data["ISPRODUCT"] = "no"; //判断是否是产品页 $data["addthis_widget"] = ""; $data["FloatIcon"] = ""; //浮动图标替代addthis $arrExitUrl = ["/", "/culture", "/guide", "/tour", "/citytour", "/daytrip", "/asia-tour", "/china-trains"]; if (empty(get_meta($information->ic_id, 'meta_product_code')) || in_array($information->ic_url, $arrExitUrl)) { $data["FloatIcon"] = "
Create My Trip
"; } else { $data["ISPRODUCT"] = "yes"; } //顶部视频 $data["TOPVIDEO"] = ""; $meta_news_video = get_meta($information->ic_id, 'meta_news_video'); $meta_video_picture = get_meta($information->ic_id, 'meta_video_picture'); if (! empty($meta_news_video) && ! empty($meta_video_picture)) { $data["TOPVIDEO"] = ''; } //主样式表,内联模式 //$apiweb="http://202.103.68.104:88"; //本地测试 $apiweb = "https://data.guilinchina.net"; $cssUrl = $apiweb . "/css/css3/base.css?v=" . time(); $main_css_string = compress_css(GET_HTTP($cssUrl)); $data["MAINCSS"] = ''; //额外样式 $data["ADDONCSS"] = ""; $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //引用方式 //$data["ADDONCSS"]= ''; //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $data["ADDONCSS"] = ''; } //社媒分享图片 $data["OGIMAGE"] = ""; if (! empty($information->ic_photo)) { if (strpos($information->ic_photo, "guilinchina.net") != false) { $full_ic_photo = $information->ic_photo; } else { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } $data["OGIMAGE"] = ''; } //结构化标签 $data["ConstructionCode"] = ""; $meta_construction_code = get_meta($information->ic_id, 'meta_construction_code'); if (! empty($meta_construction_code)) { $data["ConstructionCode"] = $meta_construction_code; } //总JS:为了方便以后js好维护,必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js,所以必须在这里进行判断 $addBaseJs = false; $addonJs = ""; $meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格 if ($meta_ct_page_price == "yes") { $addBaseJs = true; } else if ($meta_ct_page_type !== false && $meta_ct_page_type != "") { $addBaseJs = true; } if ($addBaseJs) { $addonJs = ''; } /// ----- 总JS判断完成----- //额外js $data["ADDONJS"] = ""; $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $addonJs .= ''; } //价格js if ($meta_ct_page_price == "yes") { $addonJs .= ''; /*测试翻译软件 */ //$addonJs .= ''; //$addonJs .= ''; } //列表js if (in_array($meta_ct_page_type, ['daytripindex', 'tourindex', 'attractionindex'])) { $addonJs .= ''; } //天气 if (in_array($meta_ct_page_type, ['weatherpage'])) { $addonJs .= ''; } //页面传递参数 $passParam = ""; if (in_array($meta_ct_page_type, ["daytripindex", "tourindex", "attractionindex", "weatherpage"])) { //一日游和线路列表 //产品首页 $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (in_array($meta_ct_page_type, ["attractionindex"])) { //旧信息id,景点等信息类 $passParam .= ''; } else { //城市名称,产品类用 $passParam .= ''; } //加信息平台的is_id $passParam .= ''; } //产品详细页 $productType = ""; $productCode = ""; if ($meta_ct_page_type == "daytripdetail") { //一日游 if (! empty($meta_ct_page_type)) { $productType = $meta_ct_page_type; } $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } $addonJs .= ''; //$addonJs .= ''; $data["ADDONCSS"] .= ''; //一日游表单的替换 $DayTripData["productCode"] = $productCode; $template_form_daydetail = $this->load->view($template_path . '-daydetail-form', $DayTripData, true); //模板内容 //使用simple_html_dom_lib库来进行表单添加 $ic_content = $this->html_optimize_lib->add_htmlcode($ic_content, "#maincontent", $template_form_daydetail); } if ($meta_ct_page_type == "tourdetail") { //线路 $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //获取cli_sn $tourdata = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getCliSn/?param=" . $productCode . "&webcode=guilin")); $data["clisn"] = $tourdata->clisn; //获取price $tourprice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getTourPrice/?param=" . $productCode . "&webcode=guilin")); $dataform["tourprice"] = $tourprice->price; //调取模板 $dataform["TourCode"] = $productCode; $dataform["CLI_SN"] = $tourdata->clisn; $dataform["TourName"] = $information->ic_title; } if ($meta_ct_page_type == "tourlist") { //线路类型列表 $lineTypeList = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getLineTypeList/?webcode=guilin")); $dataTourList["lineTypeList"] = $lineTypeList; $tourListData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getTourList/?webcode=guilin")); $dataTourList["tourListData"] = $tourListData; //替换模板 $template_page_tourlist = $this->load->view('mobile_first/shanghai-tour-list', $dataTourList, true); //模板内容,统一用上海站模板 $ic_content = str_replace('', $template_page_tourlist, $ic_content); $addonJs .= ''; } if ($meta_ct_page_type == "daytriplist") { //一日游类型 $allTypeList = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getPagTypeList/?webcode=guilin")); $dataDayTripList["allTypeList"] = $allTypeList; $dayTripListData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getSearchDaytripList/?webcode=guilin")); $dataDayTripList["dayTripListData"] = $dayTripListData; //替换模板 $template_page_daytriplist = $this->load->view('mobile_first/shanghai-daytrip-list', $dataDayTripList, true); //模板内容,统一用上海站模板 $ic_content = str_replace('', $template_page_daytriplist, $ic_content); $addonJs .= ''; } //表单页 if (in_array($meta_ct_page_type, ["customize", "contactus", "pagewithform", "tourdetail"])) { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } if ($meta_ct_page_type == "daytripform") { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } $data["productType"] = $productType; $data["productCode"] = $productCode; //页面添加的元素 $data["ADDONJS"] = $addonJs; $data["passParam"] = $passParam; //页面详细内容放最后,这样上面都可以进行内容的替换,比如一日游表单 $data["CUSTOMCONENT"] = $ic_content; #endregion #region 移动端和PC端差别处理区域 $arrDevice = ["mobile", "pc"]; foreach ($arrDevice as $device) { //顶部全屏大图 $data["TOPBANNER"] = ""; $ImgText = ""; //图文字 $meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url'); $meta_addon_picture_text = get_meta($information->ic_id, 'meta_addon_picture_text'); if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); $bannerImg = '' . $information->ic_title . ''; if (! empty($meta_addon_picture_url) && ! empty($meta_addon_picture_text)) { $ImgText = ''; } else if (! empty($meta_addon_picture_text)) { $ImgText = ''; } } // 搜索框 $template_TrainSearch = ""; if ($information->ic_url == "/china-trains/hometest" || $information->ic_url == "/trains") { //火车票首页 $template_TrainSearch = $this->load->view($template_path . '-train-index', null, true); $ImgText = ""; //火车票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } else if ($information->ic_url == "/china-flights") { //机票首页 $template_TrainSearch = $this->load->view($template_path . '-flight-index', null, true); $ImgText = ""; //飞机票移动端去掉头部图片,保证搜索框CLS if ($device == 'mobile') { $meta_addon_picture = ""; $data["TOPBANNER"] = ''; } } if (! empty($meta_addon_picture)) { if (! empty($meta_addon_picture_url)) { $data["TOPBANNER"] = ''; } else { $data["TOPBANNER"] = ''; } } if ($meta_ct_page_type == "tourdetail") { //线路表单,左右结构,用标签来做 $dataform['device'] = $device; $template_form_tourqi = $this->load->view($template_path . '-form-tourqi-new', $dataform, true); $ic_content_pc = $ic_content; //需要一个变量来过渡,不然$ic_content改变以后,PC端就没有标签了 $ic_content_pc = str_replace('', $template_form_tourqi, $ic_content_pc); $data["CUSTOMCONENT"] = $ic_content_pc; } //两种设备分别调用两种模板 ,静态化 switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, $data, true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } //生成静态文件 $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } #endregion } /** * 花梨鹰网站 www.hualiyingtravel.com的静态化 */ public function make_www_cache_hly($information) { $data = []; #region 公用数据 //$apiurl = "http://202.103.68.104:61/info.php"; //本地测试 $apiurl = "https://ct.mycht.cn/info.php"; //网前 //先准备数据,采用直接赋值视图然后返回视图字符串的模式,不使用一次次替换视图模板内容的模式。 $data["TITLE"] = $information->ic_seo_title; $data["DESCRIPTION"] = $information->ic_seo_description; $data["KEYWORDS"] = $information->ic_seo_keywords; $data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url; $meta_ct_page_type = ""; $meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型 $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); //绑定的产品编号 $template_path = 'mobile_first/' . $this->config->item('site_code'); //模板位置 //面包屑 $crumb = ""; // $crumb_data = $this->Information_model->get_path_exclude_ct($information->is_id, $information->is_path); // if (count($crumb_data) > 0) { //至少有一个父类面包屑才显示 // $crumb = "
Home"; // foreach ($crumb_data as $index => $item) { // $crumb .= '' . $item['ic_url_title'] . ''; // } // $crumb .= "
"; // } // $data["crumb"] = $crumb; //作者字符串,信息页或者城市天气页加载 2022-7-26 $str_author = ""; $author = $this->Operator_model->get_author_nikename($information->ic_author); if ((empty($meta_product_code) && ! ($meta_ct_page_type !== false && $meta_ct_page_type != "")) || $meta_ct_page_type == "weatherpage") { $OPI_FirstName = ! empty($author) ? $author->OPI_FirstName : 'author nickname'; $str_author = '
Written by ' . $OPI_FirstName . ' Updated ' . date("M. j, Y", strtotime($information->ic_datetime)) . '
'; } /* 详细内容 */ $ic_content = $information->ic_content; /** 替换H1加面包屑,加作者 */ $ic_content = preg_replace('/

(.*)<\/h1>/i', $crumb . "\r\n" . '

$1

' . "\r\n" . $str_author . "\r\n", $ic_content, 1); //图片加延迟 $ic_content = $this->html_optimize_lib->set_lazy_loader($ic_content, 'https://data.hualiyingtravel.com/image/grey.gif'); $ic_content = $this->html_optimize_lib->set_image_size($ic_content); //非产品页面 $data["PRODUCTJS"] = ""; $data["ISPRODUCT"] = "no"; //判断是否是产品页 $data["addthis_widget"] = ""; $data["FloatIcon"] = ""; //浮动图标替代addthis $arrExitUrl = ["/", "/culture", "/guide", "/tour", "/citytour", "/daytrip", "/asia-tour", "/china-trains"]; if (empty(get_meta($information->ic_id, 'meta_product_code')) || in_array($information->ic_url, $arrExitUrl)) { $data["FloatIcon"] = "
私人定制
"; } else { $data["ISPRODUCT"] = "yes"; } //顶部视频 $data["TOPVIDEO"] = ""; $meta_news_video = get_meta($information->ic_id, 'meta_news_video'); $meta_video_picture = get_meta($information->ic_id, 'meta_video_picture'); if (! empty($meta_news_video) && ! empty($meta_video_picture)) { $data["TOPVIDEO"] = ''; } //主样式表,内联模式 //$apiweb="http://202.103.68.104:97"; //本地测试 $apiweb = "https://data.hualiyingtravel.com"; $cssUrl = $apiweb . "/css/css3/base.css?v=" . time(); $main_css_string = compress_css(GET_HTTP($cssUrl)); $data["MAINCSS"] = ''; //额外样式 $data["ADDONCSS"] = ""; $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //引用方式 //$data["ADDONCSS"]= ''; //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $data["ADDONCSS"] = ''; } //社媒分享图片 $data["OGIMAGE"] = ""; if (! empty($information->ic_photo)) { if (strpos($information->ic_photo, "guilinchina.net") != false) { $full_ic_photo = $information->ic_photo; } else { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } $data["OGIMAGE"] = ''; } //结构化标签 $data["ConstructionCode"] = ""; $meta_construction_code = get_meta($information->ic_id, 'meta_construction_code'); if (! empty($meta_construction_code)) { $data["ConstructionCode"] = $meta_construction_code; } $data["meta_index_set"] = ""; $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $data["meta_index_set"] = ''; } //总JS:为了方便以后js好维护,必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js,所以必须在这里进行判断 $addBaseJs = false; $addonJs = ""; $meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格 $meta_ct_page_Carousel = get_meta($information->ic_id, 'meta_ct_page_Carousel'); //是否有顶部轮播图 if ($meta_ct_page_price == "yes") { $addBaseJs = true; } else if ($meta_ct_page_type !== false && $meta_ct_page_type != "") { $addBaseJs = true; } else if ($meta_ct_page_Carousel == "yes") { $addBaseJs = true; } if ($addBaseJs) { $addonJs = ''; } /// ----- 总JS判断完成----- //额外js $data["ADDONJS"] = ""; $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $addonJs .= ''; } //价格js if ($meta_ct_page_price == "yes") { $addonJs .= ''; } //列表js if (in_array($meta_ct_page_type, ['daytripindex', 'tourindex', 'attractionindex'])) { $addonJs .= ''; } //顶部轮播图 if ($meta_ct_page_Carousel == "yes") { $addonJs .= ''; $addonJs .= ''; $data["ADDONCSS"] .= ''; } //页面传递参数 $passParam = ""; if (in_array($meta_ct_page_type, ["daytripindex", "tourindex", "attractionindex", "weatherpage"])) { //一日游和线路列表 //产品首页 $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (in_array($meta_ct_page_type, ["attractionindex"])) { //旧信息id,景点等信息类 $passParam .= ''; } else { //城市名称,产品类用 $passParam .= ''; } //加信息平台的is_id $passParam .= ''; } //产品详细页 $productType = ""; $productCode = ""; if ($meta_ct_page_type == "daytripdetail") { //一日游 if (! empty($meta_ct_page_type)) { $productType = $meta_ct_page_type; } $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //一日游表单的替换 $DayTripData["productCode"] = $productCode; $DayTripData["picture_mobile"] = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $DayTripData["picture_pc"] = get_meta($information->ic_id, 'meta_addon_picture'); $DayTripData["TITLE"] = $information->ic_title; $arrCAD = ['HLYCAD-S', 'HLYCAD-V', 'HLYCAD-P']; //水灯节 $arrCAD_EN = ['QM-NUT-V', 'QM-NUT-P']; //水灯节英文 //$arrTest = ['QM-9-A','QM-9-B','QM-9-C']; if (in_array($productCode, $arrCAD) || in_array($productCode, $arrCAD_EN)) { //水灯节,中英文分别调用不同模板 /**替换左右结构的线路表单标签 2024-7-4*/ if (strpos($ic_content, '') !== false) { //准备数据 $InfoData = new stdClass(); //传递用来计算的信息平台数据 //附加选项 $t_excludedate = get_meta($information->ic_id, "meta_trippest_excludedate"); $t_includedate = get_meta($information->ic_id, "meta_trippest_includedate"); $t_excludemonth = get_meta($information->ic_id, "meta_trippest_excludemonth"); $InfoData->t_excludedate = $t_excludedate; $InfoData->t_includedate = $t_includedate; $InfoData->t_excludemonth = $t_excludemonth; $DayTripData["InfoData"] = $InfoData; //传递信息平台数据 $linktour = get_meta($information->ic_id, 'meta_trainspread_linktour'); //关联线路 if (! empty($linktour)) { $paramCode = $productCode . "," . $linktour; } else { $paramCode = $productCode; } //产品汉特信息,测试地址:http://202.103.68.104:61/info.php/thirdparty/ctmobilefirst/api/getDaytripDetail/?webcode=hly¶m=QM-9-A,QM-9-B,QM-9-C $TourData = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getDaytripDetail/?webcode=hly¶m=" . $paramCode)); $DayTripData["TourData"] = $TourData; //替换模板 if (in_array($productCode, $arrCAD_EN)) { $template_form_daydetail = $this->load->view($template_path . '-cad-form-en', $DayTripData, true); //英文模板内容 } else { $template_form_daydetail = $this->load->view($template_path . '-cad-form', $DayTripData, true); //中文模板内容 } $ic_content = str_replace('', $template_form_daydetail, $ic_content); } } else if (1 == 2) { //默认,暂时没有 $addonJs .= ''; $data["ADDONCSS"] .= ''; $template_form_daydetail = $this->load->view($template_path . '-daydetail-form', $DayTripData, true); //模板内容 //使用simple_html_dom_lib库来进行表单添加 $ic_content = $this->html_optimize_lib->add_htmlcode($ic_content, "#maincontent", $template_form_daydetail); } } if ($meta_ct_page_type == "tourdetail") { //线路 $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //获取cli_sn $tourdata = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getCliSn/?param=" . $productCode . "&webcode=hly")); $data["clisn"] = $tourdata->clisn; //获取price $tourprice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getTourPrice/?param=" . $productCode . "&webcode=hly")); $dataform["tourprice"] = $tourprice->price; //调取模板 $dataform["TourCode"] = $productCode; $dataform["CLI_SN"] = $tourdata->clisn; $dataform["TourName"] = $information->ic_title; $addonJs .= ''; $data["ADDONCSS"] .= ''; } //表单页 if (in_array($meta_ct_page_type, ["customize", "contactus", "pagewithform"])) { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } if ($meta_ct_page_type == "daytripform") { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } $data["productType"] = $productType; $data["productCode"] = $productCode; //页面添加的元素 $data["ADDONJS"] = $addonJs; $data["passParam"] = $passParam; //页面详细内容放最后,这样上面都可以进行内容的替换,比如一日游表单 $data["CUSTOMCONENT"] = $ic_content; #endregion #region 移动端和PC端差别处理区域 $arrDevice = ["mobile", "pc"]; foreach ($arrDevice as $device) { //顶部全屏大图 $data["TOPBANNER"] = ""; $ImgText = ""; //图文字 $meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url'); $meta_addon_picture_text = get_meta($information->ic_id, 'meta_addon_picture_text'); if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $bannerImg = '' . $information->ic_title . ''; } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); $bannerImg = '' . $information->ic_title . ''; } if (! empty($meta_addon_picture)) { if (! empty($meta_addon_picture_url)) { $data["TOPBANNER"] = ''; } else { $data["TOPBANNER"] = ''; } } if ($meta_ct_page_type == "tourdetail") { //线路表单,左右结构,用标签来做 $dataform['device'] = $device; if (strpos($ic_content, '') !== false) { $InfoData = new stdClass(); //传递用来计算的信息平台数据 $t_excludedate = get_meta($information->ic_id, "meta_trippest_excludedate"); $t_includedate = get_meta($information->ic_id, "meta_trippest_includedate"); $t_excludemonth = get_meta($information->ic_id, "meta_trippest_excludemonth"); $InfoData->t_excludedate = $t_excludedate; $InfoData->t_includedate = $t_includedate; $InfoData->t_excludemonth = $t_excludemonth; $InfoData->t_defaultDate = get_meta($information->ic_id, "meta_trippest_defaultDate"); $dataform["InfoData"] = $InfoData; //传递信息平台数据 $template_form_tourqi = $this->load->view($template_path . '-form-tourqi', $dataform, true); $ic_content_pc = $ic_content; //需要一个变量来过渡,不然$ic_content改变以后,PC端就没有标签了 $ic_content_pc = str_replace('', $template_form_tourqi, $ic_content_pc); $data["CUSTOMCONENT"] = $ic_content_pc; } } //两种设备分别调用两种模板 ,静态化 switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, $data, true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } //生成静态文件 $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } #endregion } /** * 花梨鹰 英文站 chiangmaiyipengfestival.com 的静态化方法 */ public function make_www_cache_hlyen($information){ $data = []; #region 公用数据 //$apiurl = "http://202.103.68.104:61/info.php"; //本地测试 $apiurl = "https://ct.mycht.cn/info.php"; //网前 //先准备数据,采用直接赋值视图然后返回视图字符串的模式,不使用一次次替换视图模板内容的模式。 $data["TITLE"] = $information->ic_seo_title; $data["DESCRIPTION"] = $information->ic_seo_description; $data["KEYWORDS"] = $information->ic_seo_keywords; $data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url; $meta_ct_page_type = ""; $meta_ct_page_type = get_meta($information->ic_id, 'meta_ct_page_type'); //页面类型 $meta_product_code = get_meta($information->ic_id, 'meta_product_code'); //绑定的产品编号 $template_path = 'mobile_first/' . $this->config->item('site_code'); //模板位置 /* 详细内容 */ $ic_content = $information->ic_content; //图片加延迟 $ic_content = $this->html_optimize_lib->set_lazy_loader($ic_content, 'https://data.chiangmaiyipengfestival.com/image/grey.gif'); $ic_content = $this->html_optimize_lib->set_image_size($ic_content); //非产品页面 $data["PRODUCTJS"] = ""; $data["ISPRODUCT"] = "no"; //判断是否是产品页 $data["addthis_widget"] = ""; $data["FloatIcon"] = ""; //浮动图标替代addthis $arrExitUrl = ["/", "/culture", "/guide", "/tour", "/citytour", "/daytrip", "/asia-tour", "/china-trains"]; if (empty(get_meta($information->ic_id, 'meta_product_code')) || in_array($information->ic_url, $arrExitUrl)) { $data["FloatIcon"] = "
私人定制
"; } else { $data["ISPRODUCT"] = "yes"; } //主样式表,内联模式 //$apiweb="http://202.103.68.104:107"; //本地测试 $apiweb = "http://proxy-www.chiangmaiyipengfestival.com/"; $cssUrl = $apiweb . "/css/css3/base.css?v=" . time(); $main_css_string = compress_css(GET_HTTP($cssUrl)); $data["MAINCSS"] = ''; //额外样式 $data["ADDONCSS"] = ""; $meta_addon_css = get_meta($information->ic_id, 'meta_addon_css'); if (! empty($meta_addon_css)) { //引用方式 //$data["ADDONCSS"]= ''; //内联方式 $meta_addon_css_string = compress_css(GET_HTTP($meta_addon_css)); $data["ADDONCSS"] = ''; } //社媒分享图片 $data["OGIMAGE"] = ""; if (! empty($information->ic_photo)) { if (strpos($information->ic_photo, "guilinchina.net") != false) { $full_ic_photo = $information->ic_photo; } else { $full_ic_photo = $this->config->item('site_image_url') . $information->ic_photo; } $data["OGIMAGE"] = ''; } //结构化标签 $data["ConstructionCode"] = ""; $meta_construction_code = get_meta($information->ic_id, 'meta_construction_code'); if (! empty($meta_construction_code)) { $data["ConstructionCode"] = $meta_construction_code; } $data["meta_index_set"] = ""; $meta_index_set = get_meta($information->ic_id, 'meta_index_set'); if (! empty($meta_index_set)) { $data["meta_index_set"] = ''; } //总JS:为了方便以后js好维护,必须的把一些公用的JS统计到一个文件。但是又不是所有页面都需要调用这个基础js,所以必须在这里进行判断 $addBaseJs = false; $addonJs = ""; $meta_ct_page_price = get_meta($information->ic_id, 'meta_ct_page_price'); //是否包含价格 $meta_ct_page_Carousel = get_meta($information->ic_id, 'meta_ct_page_Carousel'); //是否有顶部轮播图 if ($meta_ct_page_price == "yes") { $addBaseJs = true; } else if ($meta_ct_page_type !== false && $meta_ct_page_type != "") { $addBaseJs = true; } else if ($meta_ct_page_Carousel == "yes") { $addBaseJs = true; } if ($addBaseJs) { $addonJs = ''; } /// ----- 总JS判断完成----- //额外js $data["ADDONJS"] = ""; $meta_addon_js = get_meta($information->ic_id, 'meta_addon_js'); if (! empty($meta_addon_js)) { $addonJs .= ''; } //价格js if ($meta_ct_page_price == "yes") { $addonJs .= ''; } //列表js if (in_array($meta_ct_page_type, ['daytripindex', 'tourindex', 'attractionindex'])) { $addonJs .= ''; } //页面传递参数 $passParam = ""; if (in_array($meta_ct_page_type, ["daytripindex", "tourindex", "attractionindex", "weatherpage"])) { //一日游和线路列表 //产品首页 $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (in_array($meta_ct_page_type, ["attractionindex"])) { //旧信息id,景点等信息类 $passParam .= ''; } else { //城市名称,产品类用 $passParam .= ''; } //加信息平台的is_id $passParam .= ''; } //产品详细页 $productType = ""; $productCode = ""; if ($meta_ct_page_type == "daytripdetail") { $addonJs .= ''; } if ($meta_ct_page_type == "tourdetail") { //线路 $productType = $meta_ct_page_type; $meta_ct_page_value = get_meta($information->ic_id, 'meta_ct_page_value'); if (! empty($meta_ct_page_value)) { $productCode = $meta_ct_page_value; } //获取cli_sn $tourdata = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getCliSn/?param=" . $productCode . "&webcode=hlyen")); $data["clisn"] = $tourdata->clisn; //获取price $tourprice = json_decode(GET_HTTP($apiurl . "/thirdparty/ctmobilefirst/api/getTourPrice/?param=" . $productCode . "&webcode=hlyen")); $dataform["tourprice"] = $tourprice->price; //调取模板 $dataform["TourCode"] = $productCode; $dataform["CLI_SN"] = $tourdata->clisn; $dataform["TourName"] = $information->ic_title; $addonJs .= ''; $data["ADDONCSS"] .= ''; } //表单页 if (in_array($meta_ct_page_type, ["customize", "contactus", "pagewithform"])) { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } if ($meta_ct_page_type == "daytripform") { $productType = $meta_ct_page_type; $addonJs .= ''; $data["ADDONCSS"] .= ''; } $data["productType"] = $productType; $data["productCode"] = $productCode; //页面添加的元素 $data["ADDONJS"] = $addonJs; $data["passParam"] = $passParam; //页面详细内容放最后,这样上面都可以进行内容的替换,比如一日游表单 $data["CUSTOMCONENT"] = $ic_content; #endregion #region 移动端和PC端差别处理区域 $arrDevice = ["mobile", "pc"]; foreach ($arrDevice as $device) { //顶部全屏大图 $data["TOPBANNER"] = ""; $ImgText = ""; //图文字 $meta_addon_picture_url = get_meta($information->ic_id, 'meta_addon_picture_url'); $meta_addon_picture_text = get_meta($information->ic_id, 'meta_addon_picture_text'); if ($device == 'mobile') { //移动端读取移动大图 $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture_mobile'); $bannerImg = '' . $information->ic_title . ''; } else { $meta_addon_picture = get_meta($information->ic_id, 'meta_addon_picture'); $bannerImg = '' . $information->ic_title . ''; } if (! empty($meta_addon_picture)) { if (! empty($meta_addon_picture_url)) { $data["TOPBANNER"] = ''; } else { $data["TOPBANNER"] = ''; } } if ($meta_ct_page_type == "tourdetail") { //线路表单,左右结构,用标签来做 $dataform['device'] = $device; if (strpos($ic_content, '') !== false) { $InfoData = new stdClass(); //传递用来计算的信息平台数据 $t_excludedate = get_meta($information->ic_id, "meta_trippest_excludedate"); $t_includedate = get_meta($information->ic_id, "meta_trippest_includedate"); $t_excludemonth = get_meta($information->ic_id, "meta_trippest_excludemonth"); $InfoData->t_excludedate = $t_excludedate; $InfoData->t_includedate = $t_includedate; $InfoData->t_excludemonth = $t_excludemonth; $InfoData->t_defaultDate = get_meta($information->ic_id, "meta_trippest_defaultDate"); $dataform["InfoData"] = $InfoData; //传递信息平台数据 $template_form_tourqi = $this->load->view($template_path . '-form-tourqi', $dataform, true); $ic_content_pc = $ic_content; //需要一个变量来过渡,不然$ic_content改变以后,PC端就没有标签了 $ic_content_pc = str_replace('', $template_form_tourqi, $ic_content_pc); $data["CUSTOMCONENT"] = $ic_content_pc; } } //两种设备分别调用两种模板 ,静态化 switch ($device) { case 'mobile': //获取移动优先的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . EXT)) { $template = $this->load->view($template_path, $data, true); $html_path_ext = '-mobile.htm'; } else { return false; } break; case 'pc': //获取PC的模板,如果有的话 $template_path = 'mobile_first/' . $this->config->item('site_code'); if (is_file(APPPATH . 'views/' . $template_path . '-pc' . EXT)) { $template = $this->load->view($template_path . '-pc', $data, true); $html_path_ext = '-pc.htm'; } else { return false; } break; default: } //生成静态文件 $html_path = $this->config->item('cache')[$this->config->item('site_code')]['cache_path'] . $information->ic_url; $html_path = str_replace("\\", "/", $html_path); if (substr($html_path, -1, 1) == '/') { $html_path = $html_path . 'index.htm'; } $html_path .= $html_path_ext; create_folder_by_path(dirname($html_path)); file_put_contents($html_path, $template, LOCK_EX); } #endregion } //通过内容找到第一张图片 public function set_photo_content($ic_photo, $ic_content) { if (empty($ic_photo)) { $images = get_image_url_by_source($ic_content); if (! empty($images) and ! empty($images[1])) { return $images[1][0]; } } else { return $this->config->item('site_image_url') . $ic_photo; } return ''; } //根据推荐规则进行查询 public function recommand_information_rule($information, $root_information, $recommand, &$exclude_ids) { $data = []; switch ($recommand->ir_rule) { case 'rule_same_node_keyword': //同节点关键词 $keywords = explode(',', $recommand->ir_keyword); $data = $this->Information_model->search_by_words_2($root_information->is_path, $keywords, $exclude_ids); break; case 'rule_same_url_keyword': //同URL关键词 $keywords = explode(',', $recommand->ir_keyword); $url = trim($information->ic_url); $url = substr($url, 0, strpos($url, '/', 1) + 1); $data = $this->Information_model->search_by_words($url, $keywords, $exclude_ids); break; case 'rule_same_node_random': //同节点随机 $data = $this->Information_model->random(1, $root_information->is_path, $exclude_ids); break; case 'rule_this_node_random': //指定节点下随机 $ir_pointer = $this->Information_model->Detail($recommand->ir_pointer_is_id, 'is_path'); if (! empty($ir_pointer)) { $data = $this->Information_model->random(1, $ir_pointer->is_path, $exclude_ids); } break; case 'rule_range_random': //范围内随机,同读取备用节点 break; case 'rule_show_tips': //显示广告 $data = $this->recommends_and_tips_model->tips_detail($recommand->ir_pointer_it_id); return [$recommand->ir_name => $data]; //break; case 'rule_no_show': //不显示 return [$recommand->ir_name => false]; //break; default: //'rule_parent'://继承上级规则则留空,程序会循环一遍分组的规则 return false; } //读取备用节点 if (empty($data) && ! empty($recommand->ir_urls)) { //查不到信息并且备选urls不为空,则随机选一条 // $url_array = explode("\n", $recommand->ir_urls); // $data = $this->Information_model->Detail(trim($url_array[rand(0, count($url_array) - 1)])); $url_array = explode("\n", $recommand->ir_urls); $data = $this->Information_model->random_range(1, $url_array, $exclude_ids); } if (! empty($data)) { $exclude_ids[] = $data->is_id; $data->desktop_photo = get_meta($data->ic_id, 'meta_addon_picture'); $data->mobile_photo = get_meta($data->ic_id, 'meta_addon_picture_mobile'); if (empty($data->mobile_photo)) { if (! empty($data->ic_photo)) { $data->mobile_photo = $this->config->item('site_image_url') . $data->ic_photo; } else { $data->mobile_photo = 'https://data.chinahighlights.com/image/travelguide/article/recommended-info-bottom-cover.jpg'; } } } return [$recommand->ir_name => $data]; } //获取当前信息所有的推荐信息和广告内容 public function recommand_information($information) { $data = []; $group_detail = $this->Information_model->get_detail_by_path($information->is_path, 0); //信息所属分组,根据分组进行不同推荐 $group_recommands = $this->recommends_and_tips_model->recommends_list($group_detail->is_id); //节点下所有的推荐规则 $root_detail = $this->Information_model->get_detail_by_path($information->is_path, 1); //信息所属分类,获取信息顶级节点内容 $root_recommands = $this->recommends_and_tips_model->recommends_list($root_detail->is_id); //节点下所有的推荐规则 $exclude_ids = [$information->is_id]; //需要排除的is_id,防止通过页面显示相同内容,默认排除本身,每个推荐内容都需要排除已经推荐过的 foreach ($root_recommands as $item) { if ($this->config->item('site_code') == 'ah' or $this->config->item('site_code') == 'ch' or $this->config->item('site_code') == 'gh' or $this->config->item('site_code') == 'jh' or $this->config->item('site_code') == 'htravel') { //如果是AH CH GH的页面,取消重复检测 $exclude_ids = [0]; } $result = $this->recommand_information_rule($information, $root_detail, $item, $exclude_ids); if (! empty($result)) { $data += $result; } } foreach ($group_recommands as $item) { if ($this->config->item('site_code') == 'ah' or $this->config->item('site_code') == 'ch' or $this->config->item('site_code') == 'gh' or $this->config->item('site_code') == 'jh' or $this->config->item('site_code') == 'htravel') { //如果是AH CH GH JH的页面,取消重复检测 $exclude_ids = [0]; } if (empty($data[$item->ir_name])) { $result = $this->recommand_information_rule($information, $root_detail, $item, $exclude_ids); if (! empty($result)) { $data += $result; } } } //print_r($data); //log_message('error', 'exclude_ids: '.$information->ic_url.' '.implode(',',$exclude_ids)); return $data; } public function call_mobile_template_NEXT($template_path, $is_id) { $data['detail'] = $this->Information_model->Detail($is_id); $data['type_detail'] = $this->Information_model->get_detail_by_path($data['detail']->is_path, 0); //信息所属分组,根据分组进行不同推荐 $data['root_detail'] = $this->Information_model->get_detail_by_path($data['detail']->is_path, 1); //信息所属分类,获取信息顶级节点内容 switch (strtolower($data['type_detail']->is_id)) { case 278008010: //Inspiration //随机获取两个同级节点内容 $random_array = $this->Information_model->random(2, $data['root_detail']->is_path, [$data['detail']->is_id]); if (! empty($random_array[0])) { $data['info_howtoplan'] = $random_array[0]; $data['info_howtoplan_root'] = $data['root_detail']; $data['info_howtoplan']->ic_photo = $this->set_photo_content($data['info_howtoplan']->ic_photo, $data['info_howtoplan']->ic_content); } if (! empty($random_array[1])) { $data['info_besttime'] = $random_array[1]; $data['info_besttime_root'] = $data['root_detail']; $data['info_besttime']->ic_photo = $this->set_photo_content($data['info_besttime']->ic_photo, $data['info_besttime']->ic_content); } //漏斗作用的页面,随机挑选一篇 $random_array = [ '/travelguide/china-facts.htm', '/travelguide/article-top-china-tourist-destination.htm', '/travelguide/most-beautiful-places.htm', '/weather/china-best-times.htm', '/travelguide/article-10-movies-to-watch.htm', '/travelguide/article-culture-shock-in-china.htm', '/travelguide/article-what-chinese-eat-for-breakfast.htm', '/travelguide/china-top-10-attractions.htm', '/travelguide/chinese-food/eight-chinese-dishes.htm', '/travelguide/china-travel-reopen-restrictions.htm', ]; $data['info_topthings'] = $this->Information_model->Detail($random_array[rand(0, count($random_array) - 1)]); if (! empty($data['info_topthings'])) { $data['info_topthings_root'] = $this->Information_model->get_detail_by_path($data['info_topthings']->is_path, 1); $data['info_topthings']->ic_photo = $this->set_photo_content($data['info_topthings']->ic_photo, $data['info_topthings']->ic_content); } //文化板块的页面,随机挑选一篇 $random_array = [ '/travelguide/chinese-zodiac/', '/travelguide/culture/china-arts-crafts.htm', '/beijing/forbidden-city/', '/travelguide/culture/traditionalmedichine.htm', '/travelguide/chinese-tea/', '/travelguide/kungfu/', '/travelguide/culture/china-history.htm', '/travelguide/chinese-food/', '/travelguide/chinese-language/', ]; $data['info_hotel'] = $this->Information_model->Detail($random_array[rand(0, count($random_array) - 1)]); if (! empty($data['info_hotel'])) { $data['info_hotel_root'] = $this->Information_model->get_detail_by_path($data['info_hotel']->is_path, 1); $data['info_hotel']->ic_photo = $this->set_photo_content($data['info_hotel']->ic_photo, $data['info_hotel']->ic_content); } break; case 278008012: //'planing-1(guide)': case 278008013: //'planning-2 (decision tips)': case 278008011: //'destination': //url的第一段表示地区,根据第一段来搜索相关数据如/beijing/ 而不是根据is_parent_id因为可能信息和线路是在不同的分类下 $destination_url = trim($data['detail']->ic_url); $destination_url = substr($destination_url, 0, strpos($destination_url, '/', 1) + 1); //how to plan $data['info_howtoplan'] = $this->Information_model->search_by_words($destination_url, ['how', 'plan'], [$data['detail']->is_id]); if (empty($data['info_howtoplan'])) { //找不到对应信息则显示备用 $data['info_howtoplan'] = $this->Information_model->Detail('/travelguide/plan-first-trip.htm'); } $data['info_howtoplan_root'] = $this->Information_model->get_detail_by_path($data['info_howtoplan']->is_path, 1); //信息所属分类,获取信息顶级节点内容 if (! empty($data['info_howtoplan'])) { $data['info_howtoplan']->ic_photo = $this->set_photo_content($data['info_howtoplan']->ic_photo, $data['info_howtoplan']->ic_content); } //best time to visit $data['info_besttime'] = $this->Information_model->search_by_words($destination_url, ['best', 'time'], [$data['detail']->is_id]); if (empty($data['info_besttime'])) { $data['info_besttime'] = $this->Information_model->Detail('/weather/china-best-times.htm'); } $data['info_besttime_root'] = $this->Information_model->get_detail_by_path($data['info_besttime']->is_path, 1); //信息所属分类,获取信息顶级节点内容 if (! empty($data['info_besttime'])) { $data['info_besttime']->ic_photo = $this->set_photo_content($data['info_besttime']->ic_photo, $data['info_besttime']->ic_content); } //top things to do $data['info_topthings'] = $this->Information_model->search_by_words($destination_url, ['top', 'things'], [$data['detail']->is_id]); if (empty($data['info_topthings'])) { $data['info_topthings'] = $this->Information_model->Detail('/travelguide/article-top-china-tourist-destination.htm'); } $data['info_topthings_root'] = $this->Information_model->get_detail_by_path($data['info_topthings']->is_path, 1); //信息所属分类,获取信息顶级节点内容 if (! empty($data['info_topthings'])) { $data['info_topthings']->ic_photo = $this->set_photo_content($data['info_topthings']->ic_photo, $data['info_topthings']->ic_content); } //第四篇,随机推荐下方url $random_array = [ '/feedback/', '/travelguide/how-chinahighlights-selects-your-hotel.htm', '/travelguide/article-private-tour-vs-group-tour.htm', '/aboutus/who-recommended.htm', '/aboutus/no-shops.htm', '/aboutus/company-history.htm', ]; $data['info_hotel'] = $this->Information_model->Detail($random_array[rand(0, count($random_array) - 1)]); if (! empty($data['info_hotel'])) { $data['info_hotel_root'] = $this->Information_model->get_detail_by_path($data['info_hotel']->is_path, 1); $data['info_hotel']->ic_photo = $this->set_photo_content($data['info_hotel']->ic_photo, $data['info_hotel']->ic_content); } break; default: return ''; } return $this->load->view($template_path . '-next', $data, true); } //更新静态文件 //不用参数提交的原因是可能url带有特殊字符,CI会报错 public function update_cache($static_html_url = false, $delete_only = false) { $url = ! empty($static_html_url) ? $static_html_url : $this->input->post('cache_url'); $url = str_replace($this->config->item('site_url'), '', $url); $original_url = $url; //原始链接 $delete_only = ! empty($delete_only) ? $delete_only : $this->input->get_post('delete_only'); switch ($this->config->item('site_code')) { case 'cht': $search_list = $this->Information_model->search_url($url); $amp_request = false; foreach ($search_list as $key => $req_url) { $meta_amp_status = get_meta($req_url->ic_id, 'AMP_STATUS'); if ($meta_amp_status) { $amp_request = true; } } if ($amp_request) { $url = 'http://169.54.167.189:22224/ampreq' . $url; } else { $url = 'http://169.54.167.189:22224' . $url; } break; case 'ah': if ($delete_only === true) { $url = 'https://www.asiahighlights.com/index.php/information/delete_cache_8X913mksJ/?static_html_url=' . $url; } else { // static_html_optimize=comeon 启用静态化压缩和js、css延迟加载 $url = 'https://www.asiahighlights.com/index.php/information/detail/?static_html_url=' . $url . '&static_html_optimize=comeon'; } break; case 'htravel': if ($delete_only === true) { $url = 'https://www.highlightstravel.com/index.php/information/delete_cache_8X913mksJ/?static_html_url=' . $url; } else { // static_html_optimize=comeon 启用静态化压缩和js、css延迟加载 $url = 'https://www.highlightstravel.com/index.php/information/detail/?static_html_url=' . $url . '&static_html_optimize=comeon'; } break; case 'gm': //GET_HTTP("http://148.251.35.42:3300/create-cache/?url=" . urlencode($url)); //请求nodejs静态化更新页面,删除缓存,因为部分页面没有进入信息平台 //if ($delete_only) { // $url = "https://www.chinahighlightstravel.de/gm.php/information/delete_cache_23Xd913mddkgssODII?static_html_url=" . urlencode($url); //} else { //先删除再生成,部分页面没有在信息平台中 GET_HTTP("https://www.chinahighlightstravel.de/gm.php/information/delete_cache_23Xd913mddkgssODII?static_html_url=" . $url); $url = "https://www.chinahighlightstravel.de/gm.php/information/detail/?static_html_url=" . $url; //} break; //国际站 case 'vac': case 'vc': case 'it': case 'ru': case 'jp': $information = $this->Information_model->Detail($url); $meta_pc_amp = @get_meta($information->ic_id, 'AMP_BODY_PC_STATUS'); if ($delete_only) { //只删除操作,在url修改和不发布信息的时候使用 $url = $this->config->item('site_url') . '/index.php/welcome/update_cache/delete_only?static_html_url=' . $url; } else { $tmp = $url; //判断是否是更新信息 // 产品页面不能生成静态页面,比如/beijing/hotel/只是为了在导航显示一个链接,如果生成了静态页面,网前只会显示一个空白页面了 if (! empty($information->ic_content) || ! empty($information->ic_summary) || $meta_pc_amp == 'yes') { $url = $this->config->item('site_url') . '/index.php/information/detail/?static_html_url=' . $url; } else { $url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $url; //$url = $this->config->item('site_url') . '/index.php/information/detail/?static_html_url=' . $url; } if (isset($information->ic_type) && $information->ic_type == 'product') { $url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $tmp; } //int return direct $cache_url = $this->input->post('cache_url'); if ($url && ! $cache_url) { /* ignore_user_abort(true); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //禁止直接显示获取的内容 curl_setopt($ch, CURLOPT_HEADER, 0); //不需要HEAD curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_exec($ch); curl_close($ch); */ $data['async_update'] = $url; $data[] = ['name' => 'ok', 'value' => '信息保存成功,请在8秒后检查更新页面。', 'url' => $url]; //如果是外部调用就返回结果,内部就不返回了 if ($cache_url) { echo json_encode($data); } return $data; } } break; //国际站 - GH - add gm case 'gh_vac': case 'gh_vc': case 'gh_it': case 'gh_ru': case 'gh_jp': case 'gh_gm': $information = $this->Information_model->Detail($url); $meta_pc_amp = @get_meta($information->ic_id, 'AMP_BODY_PC_STATUS'); if ($delete_only) { //只删除操作,在url修改和不发布信息的时候使用 $url = $this->config->item('site_url') . '/index.php/welcome/update_cache/delete_only?static_html_url=' . $url; } else { $tmp = $url; //判断是否是更新信息 // 产品页面不能生成静态页面,比如/beijing/hotel/只是为了在导航显示一个链接,如果生成了静态页面,网前只会显示一个空白页面了 if (! empty($information->ic_content) || ! empty($information->ic_summary) || $meta_pc_amp == 'yes') { $url = $this->config->item('site_url') . '/index.php/gh/info/detail/?static_html_url=' . $url; } else { $url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $url; //$url = $this->config->item('site_url') . '/index.php/information/detail/?static_html_url=' . $url; } if (isset($information->ic_type) && $information->ic_type == 'product') { $url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $tmp; } // GH国际 不发布的时候删除缓存 if (isset($information) && ! empty($information) && ! $information->ic_status) { $url = $this->config->item('site_url') . '/index.php/welcome/update_cache/delete_only?static_html_url=' . $tmp; } //int return direct $cache_url = $this->input->post('cache_url'); if ($url && ! $cache_url) { /* ignore_user_abort(true); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //禁止直接显示获取的内容 curl_setopt($ch, CURLOPT_HEADER, 0); //不需要HEAD curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_exec($ch); curl_close($ch); */ $data['async_update'] = $url; $data[] = ['name' => 'ok', 'value' => '信息保存成功,请在8秒后检查更新页面。', 'url' => $url]; //如果是外部调用就返回结果,内部就不返回了 if ($cache_url) { echo json_encode($data); } return $data; } } break; case 'ct': //子站点使用 $url = 'http://50.97.246.187:22223' . $url; break; case 'sht': case 'gl': case 'mbj': case 'yz': $url = $this->config->item('site_url') . $url . '@cache@refresh'; break; default: return false; //break; } $content = GET_HTTP($url); if ($content === false) { $data[] = ['name' => 'no', 'value' => sprintf($this->lang->line('update_cache_failed'), $url)]; } else { //手动更新的话,接着更新CDN缓存 $msg = $this->lang->line('update_cache_success'); if ($this->input->post('updatecdn') == 1) { $notice = $this->update_cdn(); if ($notice == 200) { $msg .= $this->lang->line('update_cdn_success'); } else { $msg .= $this->lang->line('update_cdn_failed') . '
' . $notice; } } $data[] = ['name' => 'ok', 'value' => $msg, 'url' => $url]; } //如果是外部调用就返回结果,内部就不返回了 if ($this->input->post('cache_url')) { echo json_encode($data); } return $data; } //更新CDN缓存 public function update_cdn($static_html_url = false) { $flag = false; //false:不更新,true:更新 $update_site = ['jp', 'ru']; //需要更新CDN的站点 //需要更新的url $url = $static_html_url; if (empty($url)) { $url = $this->input->post('cache_url'); } //如果传递进来的url是带有域名,则对域名进行判断 $tempu = parse_url($url); if (isset($tempu['host'])) { $url = isset($tempu['path']) ? $tempu['path'] : '/'; $pad = $tempu['host']; $flag = true; } //如果传递进来的url没有域名,则使用当前站点的信息进行判断 else { $url = str_replace($this->config->item('site_url'), '', $url); $pad = str_replace('http://', '', $this->config->item('site_url')); if (in_array($this->config->item('site_code'), $update_site)) { $flag = true; } } //默认更新成功,如果不成功,则返回错误提示信息 $notice = 200; if ($flag) { $result = GET_HTTP('https://openapi.us.cdnetworks.com/purge/rest/doPurge?user=ycc@chinahighlights.com&pass=cXi2UbsTrw9Urv@&pad=' . $pad . '&type=item&path=' . $url . '&output=json'); $result = json_decode($result, true); if ($result['resultCode'] != 200) { $notice = $result['notice'] . $result['details']; } } return $notice; } //获取产品信息,提供给用户选择进行绑定 public function get_products() { $HT_productType = $this->input->post('product_type'); $HT_productName = $this->input->post('product_name'); //产品类型 switch ($HT_productType) { case 't': $data['productList'] = $this->Landscape_model->search_list($HT_productName); break; default: $data['productList'] = []; break; } $data['product_type'] = $HT_productType; $product_list_page = $this->load->view('bootstrap/information_select_product', $data, true); $data = []; $data[] = ['name' => 'ok', 'value' => $product_list_page]; echo json_encode($data); return true; } //显示备份的内容 public function backup_content($log_id) { $data['log_info'] = $this->Logs_model->read($log_id); if ($data['log_info']->log_action == 'backup_amp') { $data['log_list'] = $this->Logs_model->get_all_backup_list($data['log_info']->log_res_id, true); } else { $data['log_list'] = $this->Logs_model->get_all_backup_list($data['log_info']->log_res_id); } $this->load->view('bootstrap/header', $data); $this->load->view('bootstrap/information_backup_content'); $this->load->view('bootstrap/footer'); } //保存自定义配置 public function save_meta() { $im_ic_id = $this->input->post('im_ic_id'); $im_key = $this->input->post('im_key'); $im_value = $this->input->post('im_value'); if ($im_ic_id && $im_key && $im_value !== false) { $meta = $this->InfoMetas_model->get($im_ic_id, $im_key); if ($meta === false) { $this->InfoMetas_model->add($im_ic_id, $im_key, $im_value); } else { $this->InfoMetas_model->update($im_ic_id, $im_key, $im_value); } $data[] = ['name' => 'ok', 'value' => $this->lang->line('media_save_success')]; } else { $data[] = ['name' => 'no', 'value' => $this->lang->line('media_save_error')]; } echo json_encode($data); return true; } //保存自定义配置 public function delete_meta() { $im_ic_id = $this->input->post('im_ic_id'); $im_key = $this->input->post('im_key'); if ($im_ic_id && $im_key) { $this->InfoMetas_model->delete($im_ic_id, $im_key); $data[] = ['name' => 'ok', 'value' => $this->lang->line('media_delete_success')]; } else { $data[] = ['name' => 'no', 'value' => $this->lang->line('media_save_error')]; } echo json_encode($data); return true; } public function get_author_url($domain_name, $OPI_Code) { $OPI_CodeUrls = [ 'zzy' => 'https://' . $domain_name . '/aboutus/team/ruru-zhou', '2' => 'https://' . $domain_name . '/aboutus/team/ruru-zhou', 'HWT' => 'https://' . $domain_name . '/aboutus/team/mike-he', 'CA' => 'https://' . $domain_name . '/aboutus/team/carol-wang', 'SI' => 'https://' . $domain_name . '/aboutus/team/simon-huang', 'TJQ' => 'https://' . $domain_name . '/aboutus/team/cindy-tang', 'CLA' => 'https://' . $domain_name . '/aboutus/team/claire-wang', 'Albee' => 'https://' . $domain_name . '/aboutus/team/albee-ning', 'KM' => 'https://' . $domain_name . '/aboutus/team/kimi-huang', 'RY' => 'https://' . $domain_name . '/aboutus/team/rita-yu', 'QMY' => 'https://' . $domain_name . '/aboutus/team/chris-quan', 'CY' => 'https://' . $domain_name . '/aboutus/team/cynthia-li', 'Vicky' => 'https://' . $domain_name . '/aboutus/team/vicky-leng', 'LXW' => 'https://' . $domain_name . '/aboutus/team/carper-li', 'zzyGH' => 'https://' . $domain_name . '/aboutus/team/ruru-zhou', ]; if ($domain_name == 'www.chinahighlights.com') { $OPI_CodeUrls = [ 'zzy' => 'https://www.chinahighlights.com/aboutus/team/ruru-zhou.htm', '2' => 'https://www.chinahighlights.com/aboutus/team/ruru-zhou.htm', 'HWT' => 'https://www.chinahighlights.com/aboutus/team/mike-he.htm', 'CA' => 'https://www.chinahighlights.com/aboutus/team/carol-wang.htm', 'SI' => 'https://www.chinahighlights.com/aboutus/team/simon-huang.htm', 'TJQ' => 'https://www.chinahighlights.com/aboutus/team/cindy-tang.htm', 'CLA' => 'https://www.chinahighlights.com/aboutus/team/claire-wang.htm', 'Albee' => 'https://www.chinahighlights.com/aboutus/team/albee-ning.htm', 'KM' => 'https://www.chinahighlights.com/aboutus/team/kimi-huang.htm', 'RY' => 'https://www.chinahighlights.com/aboutus/team/rita-yu.htm', 'QMY' => 'https://www.chinahighlights.com/aboutus/team/chris-quan.htm', 'CY' => 'https://www.chinahighlights.com/aboutus/team/cynthia-li.htm', 'Vicky' => 'https://www.chinahighlights.com/aboutus/team/vicky-leng.htm', 'LXW' => 'https://www.chinahighlights.com/aboutus/team/carper-li.htm', 'zzyGH' => 'https://www.chinahighlights.com/aboutus/team/ruru-zhou.htm', ]; } if (! empty($OPI_Code) && array_key_exists($OPI_Code, $OPI_CodeUrls)) { return $OPI_CodeUrls[$OPI_Code]; } else { return ''; } } // 获取作者信息,包括头像、领域、主页 private function get_author_info($domain_name, $OPI_Code) { // 定义URL模板 $baseUrl = 'https://www.' . $domain_name; $about_us_url = $baseUrl . '/author-page-not-defined/'; if ($domain_name == 'chinahighlights.com' || $domain_name == 'globalhighlights.com') { $about_us_url = $baseUrl . '/aboutus/team/'; } else if ($domain_name == 'highlightstravel.com' || $domain_name == 'japanhighlights.com') { $about_us_url = $baseUrl . '/about-us/meet-our-team/'; } $urlSuffix = ($domain_name == 'chinahighlights.com') ? '.htm' : ''; // 共享的URL结构 $OPI_CodeUrls = [ 'zzy' => $about_us_url . 'ruru-zhou' . $urlSuffix, 'HWT' => $about_us_url . 'mike-he' . $urlSuffix, 'CA' => $about_us_url . 'carol-wang' . $urlSuffix, 'SI' => $about_us_url . 'simon-huang' . $urlSuffix, 'TJQ' => $about_us_url . 'cindy-tang' . $urlSuffix, 'CLA' => $about_us_url . 'claire-wang' . $urlSuffix, 'Albee' => $about_us_url . 'albee-ning' . $urlSuffix, 'KM' => $about_us_url . 'kimi-huang' . $urlSuffix, 'RY' => $about_us_url . 'rita-yu' . $urlSuffix, 'QMY' => $about_us_url . 'chris-quan' . $urlSuffix, 'CY' => $about_us_url . 'cynthia-li' . $urlSuffix, 'Vicky' => $about_us_url . 'vicky-leng' . $urlSuffix, 'LXW' => $about_us_url . 'carper-li' . $urlSuffix, ]; // 共享的头像和专长映射 $expertiseMap = [ 'zzy' => [ 'expertise' => 'Japan Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/bc1583b921a24cc3be739e57d290f582_cut_300x300_608.JPG', ], 'HWT' => [ 'expertise' => 'Thailand Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/5dc9f81961c24725895205d65123b8e7_cut_300x300_608.JPG', ], 'TJQ' => [ 'expertise' => 'Thailand Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/513a1f2af9e54157932fbe157a8862d3_cut_300x300_608.JPG', ], 'RY' => [ 'expertise' => 'Vietnam Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/8895dc76301e47a094c0c86048a2c39a_cut_300x300_608.JPG', ], 'QMY' => [ 'expertise' => 'China Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/8097b02a5f2c4486824ffecc045a4125_cut_300x300_608.JPG', ], 'CY' => [ 'expertise' => 'Japan Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/65499011c0714e0aa1271bc300d9399d_cut_300x300_608.JPG', ], 'Vicky' => [ 'expertise' => 'Japan Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/a2d6ac5a7ccb4c06a3d8f1bbf939bdf5_cut_300x300_608.JPG', ], 'LXW' => [ 'expertise' => 'Japan Expert', 'avatar' => 'https://images.' . $domain_name . '/allpicture/2024/03/b002b9e61b464e24956fea8f17e2ef37_cut_300x300_608.JPG', ], ]; // 构建作者数据 $authorData = []; foreach ($OPI_CodeUrls as $key => $url) { if (isset($expertiseMap[$key])) { $authorData[$key] = [ 'url' => $url, 'avatar' => $expertiseMap[$key]['avatar'], 'expertise' => $expertiseMap[$key]['expertise'], ]; } } // 合并重复项 $authorData['2'] = $authorData['zzy']; $authorData['zzyGH'] = $authorData['zzy']; return isset($authorData[$OPI_Code]) ? $authorData[$OPI_Code] : ['url' => '', 'avatar' => '', 'expertise' => '']; } }