关于Tag重复的修复方案(?)

超级版主 沉冰浮水 2018-7-29 1249

Tag会重复创建。 · Issue #192 · zblogcn/zblogphp - https://github.com/zblogcn/zblogphp/issues/192

产生重复的原因目前已查明是空白过滤不彻底;
对于已经入库的,可以使用下边函数遍历所有文章修复,默认会将重复Tag指向ID最大的那个。。
function FixPostTags($id){
  global $zbp;
  $article = $zbp->GetPostByID($id);
  $tagsIDString = $article->Tag;
  $tagsName = $article->TagsName;
  $zbp->tags=array();
  $zbp->tagsbyname=array();
  $newIDString = PostArticle_CheckTagAndConvertIDtoString($tagsName);
  if ($newIDString !== $tagsIDString) {
    $article->Tag = $newIDString;
    $article->Save();
  }
}
如果想以ID最小的为准,则需要在系统文件中应用补丁方案:
if (isset($this->tagsbyname[$v->Name]))
continue;
public function LoadTagsByNameString($s)
{
……
$array = $this->GetTagList('', array(array('array', $a)), '', '', '');
foreach ($array as $v) {
    if (isset($this->tagsbyname[$v->Name]))
      continue;
    $this->tags[$v->ID] = $v;
    $this->tagsbyname[$v->Name] = &$this->tags[$v->ID];
    $t[$v->Name] = &$this->tags[$v->ID];
}
return $b + $t;
……
}

Todo移除多余的Tag条目;


「QQ群:我的咸鱼心」「「水坑」系列教程索引
我大概率能够解决你实际面临的问题(收费),只是”你提出的问题“要如何回答则可能是另一个问题。

返回