Как отобразить «нет» вместо «ничего», когда запрос возвращает счетчик 0 в этом плагине «Докувики»? - PullRequest
0 голосов
/ 10 июля 2019

Я установил плагин для сайта докувики, чтобы подсчитывать количество страниц, вложенных под определенную страницу. Счетчик работает нормально, отображая «6», если присутствует шесть страниц, но если счет возвращается как 0, плагин вставляет «» на страницу вместо «0».

Я не очень знаком с HTML и PHP, поэтому мне трудно найти, где в плагине делается это различие.

К сожалению, из-за кеширования dokuwiki, каждое редактирование плагина требует около 5 минут для проверки, поэтому я не смог его найти. Плагин ограничен этими примерно 40 строками.

if (!defined('DOKU_INC')) die();

class syntax_plugin_numberof extends DokuWiki_Syntax_Plugin {
    public function getType() { return 'substition'; }
    public function getSort() { return 32; }

    public function connectTo($mode) {
      $this->Lexer->addSpecialPattern('\{\{NUMBEROF[^\}]*\}\}',$mode,'plugin_numberof');
    }

    public function handle($match, $state, $pos, Doku_Handler $handler){
    global $conf;
        $list = array();
        $data=0;
        $match=substr($match,10,-2);
        $matches=explode(">",$match);
        $matches[1]=str_replace(":","/",$matches[1]);
        switch ($matches[0]) {
            case "PAGES":
                search($list,$conf['datadir'].$matches[1],array($this,'_search_count'),array('all'=>false),'');
                $data = $list['file_count'];
                break;

            case "MEDIAS":
                search($list,$conf['mediadir'].$matches[1],array($this,'_search_count'),array('all'=>true));
                $data    = $list['file_count'];
                break;
          }
        return $data;
    }

    public function render($mode, Doku_Renderer $renderer, $data) {
        if($mode != 'xhtml') return false;
        $renderer->doc.= $data;
        return true;
    }

    function _search_count(&$data,$base,$file,$type,$lvl,$opts){
        if($type == 'd'){
            if($data['dir_nest'] < $lvl) $data['dir_nest'] = $lvl;
            $data['dir_count']++;
            return true;
        }
            if($opts['all'] || substr($file,-4) == '.txt'){
            $data['file_count']++;
        }
        return false;    
    }
}

В настоящее время, когда счетчик равен 0, этот плагин вставляет '', когда {{NUMBEROFPAGES}} находится в коде страницы. Я хотел бы, чтобы он либо возвращал число 0, либо возвращал «нет».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...