Add browser lazy loading

This commit is contained in:
Knah Tsaeb 2020-10-14 12:18:12 +02:00
parent e47a6e4795
commit d3974b59cb
2 changed files with 40 additions and 5 deletions

View File

@ -62,3 +62,39 @@ function makeMenu($getDir = null)
}
return $menu;
}
class ExtendParsedownToc extends ParsedownToc
{
public function inlineImage($Excerpt)
{
if (!isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') {
return;
}
$Excerpt['text'] = substr($Excerpt['text'], 1);
$Link = $this->inlineLink($Excerpt);
if ($Link === null) {
return;
}
$Inline = array(
'extent' => $Link['extent'] + 1,
'element' => array(
'name' => 'img',
'attributes' => array(
'src' => $Link['element']['attributes']['href'],
'alt' => $Link['element']['text'],
'loading' => 'lazy',
),
),
);
$Inline['element']['attributes'] += $Link['element']['attributes'];
unset($Inline['element']['attributes']['href']);
return $Inline;
}
}

View File

@ -23,14 +23,13 @@ if (empty($file) || !file_exists('content/' . urldecode($dir) . '/' . urldecode(
}
}
$Parsedown = new ParsedownToc();
$content = file_get_contents('content/' . urldecode($dir) . '/' . urldecode($file) . '.md');
$options = array('selectors' => array('h2', 'h3'));
$Parsedown = new ParsedownToc($options);
$body = $Parsedown->text($content);
$toc = $Parsedown->contentsList();
$Parsedown = new ExtendParsedownToc($options);
$body = $Parsedown->text($content);
$toc = $Parsedown->contentsList();
$body = str_replace("[ ]", '<input type="checkbox" disabled>', $body);
$body = str_replace("[x]", '<input type="checkbox" checked disabled>', $body);