Oznámení

Provoz fóra byl ukončen

Generování obsahu z nadpisů

před 8 lety

echo
Člen | 134

Zdravím,
přihazuji funkční script na generování obsahu z nadpisů, možná to někdo uživí:

public function generateToc($texy) {
    $mainNode = TexyHTML::el('ul');
    $lastLevel = 1;

    foreach ($texy->headingModule->TOC as $heading) {
        $level = $heading['level'];
        if($level == 1) {  // If first header, write to main node.
            $node{$level} = $mainNode->create('li');
        }
        elseif($level > $lastLevel) {  // If child, make a new node
            $node{$level} = $node{$lastLevel}->create('ul')->create('li');
        }
        elseif($level <= $lastLevel) {  // If child, make add a node into parent
            $node{$level} = $node{$level-1}->create('ul')->create('li');
        }
        $a = $node{$level}->create('a')->href('#' . $heading['el']->attrs['id'])->setText($heading['title']);
        $lastLevel = $level;
    }

        return $mainNode->toHtml($texy);
}

Volání potom třeba takto:

$texy = new Texy;
$texy->headingModule->generateID = TRUE;
$texy->process($text);

echo $this->generateToc($texy); // Vygeneruje seznam

Funkce předpokládá správnou strukturu nadpisů.

Editoval echo (11. 3. 2011 23:43)