原链接: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]

文章目录