From 8de10ebc7efb57ab543fcfa185a2ec6ab1a59df6 Mon Sep 17 00:00:00 2001 From: tianya Date: Fri, 8 Apr 2022 00:24:26 +0800 Subject: [PATCH] =?UTF-8?q?TAGS=E5=8A=9F=E8=83=BD=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=8C=E6=A0=B9=E6=8D=AEid=E5=88=A4=E6=96=AD=E6=A0=87?= =?UTF-8?q?=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- src/admin/makehtml_taglist.php | 1 + src/admin/makehtml_taglist_action.php | 35 +++++++++----------- src/admin/tags_main.php | 3 +- src/admin/templets/makehtml_taglist.htm | 22 +++++++++++++ src/admin/templets/tags_main.htm | 8 +++-- src/install/config.cache.inc.php | 8 ++++- src/install/sql-dfdata.txt | 4 +-- src/install/v57sp2_to_v6.txt | 4 +++ src/system/archive/taglist.class.php | 43 ++++++++++++------------- src/system/taglib/tag.lib.php | 13 +++----- 11 files changed, 86 insertions(+), 57 deletions(-) diff --git a/.gitignore b/.gitignore index 2068fc6a..294e7bf2 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,4 @@ src/data/sqlite_error_trace.inc src/static/soft/*/ src/static/userup/*/ src/static/js/*.js -src/apps/special/*.html +src/apps/special/*.html \ No newline at end of file diff --git a/src/admin/makehtml_taglist.php b/src/admin/makehtml_taglist.php index 3912d271..01836f2a 100644 --- a/src/admin/makehtml_taglist.php +++ b/src/admin/makehtml_taglist.php @@ -27,6 +27,7 @@ if ($action == "search") { "data" => $result, ); echo json_encode($result); + exit; } $result = array( "code" => 200, diff --git a/src/admin/makehtml_taglist_action.php b/src/admin/makehtml_taglist_action.php index 40130ff6..80069db7 100644 --- a/src/admin/makehtml_taglist_action.php +++ b/src/admin/makehtml_taglist_action.php @@ -18,7 +18,8 @@ if (empty($upall)) $upall = 0; //是否更新全部 0为更新单个 1为更新 if (empty($ctagid)) $ctagid = 0; //当前处理的tagid if (empty($maxpagesize)) $maxpagesize = 50; $tagid = isset($tagid) ? intval($tagid) : 0; - +$tagsdir = str_replace("{cmspath}", $cfg_cmspath, $cfg_tags_dir); +// 生成 if ($tagid > 0) { $upall = 0; //更新单个模式 $ctagid = $tagid; @@ -26,33 +27,30 @@ if ($tagid > 0) { $upall = 1; //更新全部模式 } $allfinish = false; //是否全部完成 - +// 判断生成模式 if ($upall == 1 && $ctagid == 0) { - $rr = $dsql->GetOne("SELECT * FROM `#@__tagindex` WHERE mktime <> uptime LIMIT 1"); + $rr = $dsql->GetOne("SELECT * FROM `#@__tagindex` WHERE mktime <> uptime OR mktime = 0 LIMIT 1"); if (!empty($rr) && count($rr) > 0) { $ctagid = $rr['id']; } else { $allfinish = true; } } - if ($ctagid == 0 && $allfinish) { $dlist = new TagList('', 'tag.htm'); + $dlist->SetTagsDir($tagsdir); $dlist->MakeHtml(1, 10); - - $reurl = '../a/tags/'; + $reurl = '..'.$tagsdir; ShowMsg("完成TAG更新浏览TAG首页", "javascript:;"); exit; } - - $tag = $dsql->GetOne("SELECT * FROM `#@__tagindex` WHERE id='$ctagid' LIMIT 0,1;"); - -MkdirAll($cfg_basedir."/a/tags", $cfg_dir_purview); - +// 创建TAGS目录 +MkdirAll($cfg_basedir.$cfg_tags_dir, $cfg_dir_purview); if (is_array($tag) && count($tag) > 0) { - $dlist = new TagList($tag['tag'], 'taglist.htm'); + $dlist = new TagList($tag['id'], 'taglist.htm'); $dlist->CountRecord(); + $dlist->SetTagsDir($tagsdir); $ntotalpage = $dlist->TotalPage; if ($ntotalpage <= $maxpagesize) { @@ -69,19 +67,15 @@ if (is_array($tag) && count($tag) > 0) { $onefinish = $nextpage >= $ntotalpage && $finishType; if (($upall == 0 && $onefinish) || ($upall == 1 && $allfinish && $onefinish)) { $dlist = new TagList('', 'tag.htm'); + $dlist->SetTagsDir($tagsdir); $dlist->MakeHtml(1, 10); - $reurl = '../a/tags/'; + $reurl = '..'.$tagsdir; if ($upall == 1) { ShowMsg("完成TAG更新浏览TAG首页", "javascript:;"); } else { $query = "UPDATE `#@__tagindex` SET mktime=uptime WHERE id='$ctagid' "; $dsql->ExecuteNoneQuery($query); - - if (empty($tag['tag_pinyin'])) { - $tag = $dsql->GetOne("SELECT * FROM `#@__tagindex` WHERE id='$ctagid' LIMIT 0,1;"); - } - - $reurl .= $tag['tag_pinyin']; + $reurl .= '/'.$ctagid; ShowMsg("完成TAG更新:[".$tag['tag']."]浏览TAG首页", "javascript:;"); } exit(); @@ -89,6 +83,9 @@ if (is_array($tag) && count($tag) > 0) { if ($finishType) { //完成了一个跳到下一个 if ($upall == 1) { + $now = time(); + $query = "UPDATE `#@__tagindex` SET uptime={$now} WHERE id='$ctagid' "; + $dsql->ExecuteNoneQuery($query); $query = "UPDATE `#@__tagindex` SET mktime=uptime WHERE id='$ctagid' "; $dsql->ExecuteNoneQuery($query); $ctagid = 0; diff --git a/src/admin/tags_main.php b/src/admin/tags_main.php index a5b92519..eb27562a 100644 --- a/src/admin/tags_main.php +++ b/src/admin/tags_main.php @@ -78,7 +78,8 @@ else if ($action == 'delete') { $title = empty($title) ? "" : HtmlReplace($title, 0); $kw = empty($kw) ? "" : HtmlReplace($kw, 0); $des = empty($des) ? "" : HtmlReplace($des, 0); - $dsql->ExecuteNoneQuery("UPDATE `#@__tagindex` SET title='{$title}',keywords='{$kw}',`description`='{$des}' WHERE id = {$tid}"); + $now = time(); + $dsql->ExecuteNoneQuery("UPDATE `#@__tagindex` SET title='{$title}',keywords='{$kw}',`description`='{$des}',`uptime`='{$now}' WHERE id = {$tid}"); echo json_encode(array('code' => 200, 'result' => true)); } /* diff --git a/src/admin/templets/makehtml_taglist.htm b/src/admin/templets/makehtml_taglist.htm index 29521b84..9212c97a 100644 --- a/src/admin/templets/makehtml_taglist.htm +++ b/src/admin/templets/makehtml_taglist.htm @@ -13,6 +13,8 @@ $(function(){ $('#tagid').select2({ language: "zh-CN", + allowClear: true, + placeholder:"请选择一个标签", ajax: { url: 'makehtml_taglist.php?action=search', delay: 500, @@ -48,12 +50,32 @@ + 0) { + $row = $dsql->GetOne("Select tag From `#@__tagindex` where id = '$tagid' "); + ?> + + 输入标签: + + 重新选择 + + + 输入标签: (请输入标签搜索) + + + 生成位置: + 【系统设置】-【其他选项】中“TAGS生成目录”项进行调整 + 每次最大创建页数: 个文件 diff --git a/src/admin/templets/tags_main.htm b/src/admin/templets/tags_main.htm index e86a1e3c..24bb4ad4 100644 --- a/src/admin/templets/tags_main.htm +++ b/src/admin/templets/tags_main.htm @@ -105,7 +105,7 @@ -
+ @@ -122,6 +122,7 @@ + @@ -138,13 +139,14 @@ ?> + - +
标签维护
选择ID 标签 点击 文档数
{dede:field.id/} {dede:field.tag/} - ,"");' class="btn btn-success btn-sm">关键词描述 + ,"");' class="btn btn-success btn-sm">设置 更新 生成 删除 @@ -156,7 +158,7 @@  全选  {dede:pagelist/}{dede:pagelist/}
diff --git a/src/install/config.cache.inc.php b/src/install/config.cache.inc.php index 28ee689f..68a5e89a 100755 --- a/src/install/config.cache.inc.php +++ b/src/install/config.cache.inc.php @@ -100,6 +100,7 @@ $cfg_allsearch_limit = '1'; $cfg_rewrite = 'N'; $cfg_delete = 'Y'; $cfg_keywords = ''; +$cfg_tags_dir = '{cmspath}/a/tags'; $cfg_description = ''; $cfg_beian = ''; $cfg_need_typeid2 = 'Y'; @@ -142,4 +143,9 @@ $cfg_mb_msgischeck = 'N'; $cfg_mb_reginfo = 'Y'; $cfg_title_site = 'N'; $cfg_mysql_type = 'mysqli'; -$cfg_memcache_enable = 'N'; \ No newline at end of file +$cfg_memcache_enable = 'N'; +$cfg_auth_code = ''; +$cfg_bizcore_hostname = '127.0.0.1'; +$cfg_bizcore_port = 8181; +$cfg_bizcore_appid = ''; +$cfg_bizcore_key = ''; \ No newline at end of file diff --git a/src/install/sql-dfdata.txt b/src/install/sql-dfdata.txt index 40016135..89efda84 100755 --- a/src/install/sql-dfdata.txt +++ b/src/install/sql-dfdata.txt @@ -4090,8 +4090,8 @@ INSERT INTO `#@__sysconfig` VALUES('1','cfg_basehost','站点网址(http://域 ('764', 'cfg_bizcore_hostname', 'DedeBIZ Core地址', 1, 'string', '127.0.0.1'), ('765', 'cfg_bizcore_port', 'DedeBIZ Core端口', 1, 'number', '8181'), ('766', 'cfg_bizcore_appid', 'DedeBIZ Core应用ID', 1, 'string', ''), -('767', 'cfg_bizcore_key', 'DedeBIZ Core通信密钥', 1, 'string', '') -; +('767', 'cfg_bizcore_key', 'DedeBIZ Core通信密钥', 1, 'string', ''), +('710', 'cfg_tags_dir', 'TAGS生成目录', 7, 'string', '{cmspath}/a/tags'); INSERT INTO `#@__sys_module` VALUES (1, '0cce60bc0238aa03804682c801584991', '百度新闻', '', '', 0, ''), (2, '1f35620fb42d452fa2bdc1dee1690f92', '文件管理器', '', '', 0, ''), diff --git a/src/install/v57sp2_to_v6.txt b/src/install/v57sp2_to_v6.txt index 42cbb6e1..c412ffbb 100644 --- a/src/install/v57sp2_to_v6.txt +++ b/src/install/v57sp2_to_v6.txt @@ -1,3 +1,7 @@ +-- 6.1.8 +INSERT INTO `#@__sysconfig` VALUES ('710', 'cfg_tags_dir', 'TAGS生成目录', 7, 'string', '{cmspath}/a/tags'); +ALTER TABLE `#@__tagindex` DROP COLUMN `tag_pinyin`; + -- 6.1.7 DROP TABLE IF EXISTS `#@__statistics`; CREATE TABLE `#@__statistics` ( diff --git a/src/system/archive/taglist.class.php b/src/system/archive/taglist.class.php index 19b9dcbb..ae532782 100755 --- a/src/system/archive/taglist.class.php +++ b/src/system/archive/taglist.class.php @@ -35,6 +35,7 @@ class TagList var $Templet; var $TagInfos; var $TempletsFile; + var $tagsDir; /** * php5构造函数 * @@ -47,7 +48,7 @@ class TagList { global $dsql,$envs; $this->Templet = $templet; - $this->Tag = $keyword; + $this->Tag = (int)$keyword; $this->dsql = $dsql; $this->dtp = new DedeTagParse(); $this->dtp->SetRefObj($this); @@ -65,19 +66,13 @@ class TagList //设置一些全局参数的值 foreach ($GLOBALS['PubFields'] as $k => $v) $this->Fields[$k] = $v; //读取Tag信息 - if ($this->Tag != '') { - $this->TagInfos = $this->dsql->GetOne("Select * From `#@__tagindex` where tag like '{$this->Tag}' "); + if (!empty($this->Tag)) { + $this->TagInfos = $this->dsql->GetOne("Select * From `#@__tagindex` where id = '{$this->Tag}' "); if (!is_array($this->TagInfos)) { - $fullsearch = $GLOBALS['cfg_phpurl']."/search.php?keyword=".$this->Tag."&searchtype=titlekeyword"; - $msg = "系统无此标签,可能已经移除

您还可以尝试通过搜索程序去搜索这个关键词:前往搜索>"; + $msg = "系统无此标签,可能已经移除"; ShowMsg($msg, "-1"); exit(); } - //确定是否存在tag_pinyin - if (empty($this->TagInfos['tag_pinyin'])) { - $this->TagInfos['tag_pinyin'] = $this->TagPinyinExists($this->Tag) ? GetPinyin($this->Tag).$this->TagInfos['id'] : GetPinyin($this->Tag); - $this->dsql->ExecNoneQuery("UPDATE `#@__tagindex` SET tag_pinyin = '{$this->TagInfos['tag_pinyin']}' WHERE tag LIKE '{$this->Tag}'"); - } $this->Fields['title'] = empty($this->TagInfos['title']) ? $this->Fields['title'] : $this->TagInfos['title']; $this->Fields['keywords'] = empty($this->TagInfos['keywords']) ? $this->Fields['keywords'] : $this->TagInfos['keywords']; $this->Fields['description'] = empty($this->TagInfos['description']) ? $this->Fields['description'] : $this->TagInfos['description']; @@ -93,12 +88,6 @@ class TagList $envs['url_type'] = 4; $envs['value'] = $keyword; } - function TagPinyinExists($tag) - { - $tag_py = GetPinyin($tag); - $row = $this->dsql->GetOne("Select count(*) as dd From `#@__tagindex` where tag_pinyin like '{$tag_py}' "); - return $row['dd'] > 0; - } //php4构造函数 function TagList($keyword, $templet) { @@ -170,13 +159,15 @@ class TagList */ function Display() { - $makeDir = empty($this->Tag) ? $this->GetTruePath()."/a/tags/index.html" : $this->GetTruePath()."/a/tags/".GetPinyin($this->Tag)."/index.html"; + global $cfg_cmspath,$cfg_tags_dir; + $tagsDir = str_replace("{cmspath}",$cfg_cmspath,$cfg_tags_dir); + $makeDir = empty($this->Tag) ? $this->GetTruePath().$tagsDir."/index.html" : $this->GetTruePath().$tagsDir."/".$this->Tag."/index.html"; if (file_exists($makeDir)) { header('HTTP/1.1 301 Moved Permanently'); if (!empty($this->Tag)) { - header('Location:../a/tags/'.GetPinyin($this->Tag)."/"); + header('Location:..'.$tagsDir.'/'.GetPinyin($this->Tag)."/"); } else { - header('Location:../a/tags/'); + header('Location:..'.$tagsDir.'/'); } exit; } @@ -578,6 +569,14 @@ class TagList $truepath = $GLOBALS["cfg_basedir"]; return $truepath; } + + function SetTagsDir($dir = '') + { + global $cfg_tags_dir,$cfg_cmspath; + if ($dir == "") $dir = str_replace("{cmspath}",$cfg_cmspath,$cfg_tags_dir); + $this->tagsDir = $dir; + } + //生成静态Tag function MakeHtml($startpage = 1, $makepagesize = 0) { @@ -587,8 +586,8 @@ class TagList //初步给固定值的标记赋值 $this->ParseTempletsFirst(); if ($this->Tag == "") { - MkdirAll($this->GetTruePath()."/a/tags/", $cfg_dir_purview); - $this->dtp->SaveTo($this->GetTruePath()."/a/tags/index.html"); + MkdirAll($this->GetTruePath().$this->tagsDir, $cfg_dir_purview); + $this->dtp->SaveTo($this->GetTruePath().$this->tagsDir."/index.html"); } else { $totalpage = ceil($this->TotalResult / $this->PageSize); if ($totalpage == 0) { @@ -605,7 +604,7 @@ class TagList if ($endpage == 1) { $endpage = 2; } - $makeDir = $this->GetTruePath()."/a/tags/".$this->TagInfos['tag_pinyin']."/"; + $makeDir = $this->GetTruePath().$this->tagsDir.'/'.$this->TagInfos['id']."/"; MkdirAll($makeDir, $cfg_dir_purview); for ($this->PageNo = $startpage; $this->PageNo < $endpage; $this->PageNo++) { $this->ParseDMFields($this->PageNo, 1); diff --git a/src/system/taglib/tag.lib.php b/src/system/taglib/tag.lib.php index 3a3234a6..86158609 100755 --- a/src/system/taglib/tag.lib.php +++ b/src/system/taglib/tag.lib.php @@ -10,7 +10,7 @@ */ function lib_tag(&$ctag, &$refObj) { - global $dsql, $envs, $cfg_cmsurl; + global $dsql, $envs, $cfg_cmsurl,$cfg_tags_dir; //属性处理 $attlist = "row|30,sort|new,getall|0,typeid|0"; FillAttsDefault($ctag->CAttribute->Items, $attlist); @@ -20,11 +20,8 @@ function lib_tag(&$ctag, &$refObj) $revalue = ''; $ltype = $sort; $num = $row; - $dd = $dsql->GetOne("SELECT ROUND(AVG(total)) as tt FROM `#@__tagindex`"); //取一个平均 - if (!$dd['tt']) { - $dd['tt'] = 0; - } - $addsql = "WHERE 1=1 AND total >= {$dd['tt']}"; + $addsql = "WHERE 1=1"; + $tagsdir = str_replace("{cmspath}", $cfg_cmspath, $cfg_tags_dir); if ($getall == 0 && isset($refObj->Fields['tags']) && !empty($refObj->Fields['aid'])) { $dsql->SetQuery("SELECT tid FROM `#@__taglist` WHERE aid = '{$refObj->Fields['aid']}' "); $dsql->Execute(); @@ -56,9 +53,9 @@ function lib_tag(&$ctag, &$refObj) $row['keyword'] = $row['tag']; $row['tag'] = dede_htmlspecialchars($row['tag']); if (isset($envs['makeTag']) && $envs['makeTag'] == 1) { - $row['link'] = $cfg_cmsurl."/a/tags/".GetPinyin($row['keyword'])."/"; + $row['link'] = $cfg_cmsurl.$tagsdir."/".$row['id']."/"; } else { - $row['link'] = $cfg_cmsurl."/apps/tags.php?/".urlencode($row['keyword'])."/"; + $row['link'] = $cfg_cmsurl."/apps/tags.php?/".$row['id']."/"; } $row['highlight'] = mt_rand(1, 10); foreach ($ctp->CTags as $tagid => $ctag) {