Typecho核心代码错误可能会导致分类重复
原链接:http://www.pcwuyu.com/index.php/website-building/typecho-main-code-bug.html
原分类:网站建设
最近非常多的Microbox主题用户跟我抱怨说自己的分类列表老是出现重复的情况,我给出的方法就是改名或者删除分类来解决问题,但是我知道这并不是一劳永逸的方法,于是我就无耻的给Typecho进行开膛手术,Google一查,发现这竟然是Typecho核心代码的缺陷。距离上一次报告这个BUG已达2年之久,相信@70会在0.8.1修复这个BUG。现在我将给出这个BUG的临时修复方法。
错误描述:
当重复执行<?php while($this->next()): ?>时,堆栈会额外增加一条数据。
源代码:
Var/Typecho/Widget.php
解决方法
第一种(保守治疗):
删除重复的分类,重新添加一次。
第二种(手术治疗):
修改上面的25行代码,将代码中的“&”换成“@”,如下所示
/**  
   \* 返回堆栈每一行的值(Fixed)  
   \*  
   \* @return array  
   */  
  public function next()  
  {  
    if ($this->stack) {  
      $this->row =@$this->stack[key($this->stack)];   这一行
      next($this->stack);  
      $this->sequence ++;  
    }  
    if (!$this->row) {  
      reset($this->stack);  
      if ($this->stack) {  
        $this->row = $this->stack[key($this->stack)];   
      }  
      $this->sequence = 0;      
      return false;  
    }  
      return $this->row;  
  }来源[http://www.microhu.com/typecho-main-code-bug.html]
文章目录
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。