raffaelj / cockpit-bettermarkdown
Cockpit CMS v1 的 markdown 转换缓存、任务列表和目录支持
0.2.0
2023-01-21 16:22 UTC
Requires
- benjaminhoegh/parsedown-toc: ^1.4.3
- composer/installers: ^1.9
- erusev/parsedown: ^1.7.4
- erusev/parsedown-extra: ^0.8.1
- raffaelj/parsedown-tasks: ^0.1.0
This package is auto-updated.
Last update: 2024-09-21 20:12:58 UTC
README
此插件与 Cockpit CMS v2 不兼容。
另请参阅 Cockpit CMS v1 文档、Cockpit CMS v1 仓库 以及 Cockpit CMS v2 文档、Cockpit CMS v2 仓库。
Cockpit CMS 的 markdown 转换缓存、任务列表和目录支持
此插件替换了当前的 Parsedown 和 ParsedownExtra 库的最新版本,并添加了两个 Parsedown 扩展:ParsedownToC 和 ParsedownTasks。
它还使用已转换内容的缓存来加快速度。缓存文件位于 tmp 文件夹中。
安装
将此存储库复制到 /addons 并命名为 BetterMarkdown 或使用 cli。
通过 git
cd path/to/cockpit
git clone https://github.com/raffaelj/cockpit_BetterMarkdown.git addons/BetterMarkdown
通过 cp 命令行界面
cd path/to/cockpit
./cp install/addon --name BetterMarkdown --url https://github.com/raffaelj/cockpit_BetterMarkdown/archive/master.zip
通过 composer
确保在项目的 composer.json 文件中定义了 cockpit 插件的路径。
{
"name": "my/cockpit-project",
"extra": {
"installer-paths": {
"addons/{$name}": ["type:cockpit-module"]
}
}
}
cd path/to/cockpit-root composer create-project --ignore-platform-reqs aheinze/cockpit . composer config extra.installer-paths.addons/{\$name} "type:cockpit-module" composer require --ignore-platform-reqs raffaelj/cockpit-bettermarkdown
配置
path/to/cockpit/config/config.php:
<?php return [ 'app.name' => 'markdown test', 'bettermarkdown' => [ 'parser' => 'extended', // (string) parsedown|extra|extended - default: extended 'cache' => false, // cache is still active, but rebuild is forced --> useful for debugging // change settings for ParsedownToC // see: https://github.com/BenjaminHoegh/parsedownToc#configuration 'toc' => [ 'selectors' => ['h2', 'h3', 'h4', 'h5', 'h6'], // omit h1 from toc // blacklist existing ids in your frontend 'blacklist' => [ 'nav', // turns to 'nav-1' 'top', ], // array of regexes for text replacements - before heading ids are generated 'replacements' => [ '/^old-id$/' => 'new-id', ], ], 'cached_toc_format' => 'tree', // (string) flat|tree - default: flat // transform the cached toc in tree format with cleaner output 'tree_toc' => [ 'replace_keys' => [ 'text' => 'title', ], 'unset_keys' => ['level', 'id'], ], // add classes to task lists 'tasks' => [ 'classUnchecked' => 'parsedown-task-list parsedown-task-list-open', 'classChecked' => 'parsedown-task-list parsedown-task-list-close', ], ], ];
使用方法
Markdown
# Markdown Test [toc] ## Usage do something ## To do * [x] test * [ ] deploy
转换
$html = $app->module('cockpit')->markdown($md);
html 输出
<h1 id="markdown-test">Markdown Test</h1> <div id="toc"><ul> <li><a href="#usage">Usage</a></li> <li><a href="#to-do">To do</a></li> </ul></div> <h2 id="usage">Usage</h2> <p>do something</p> <h2 id="to-do">To do</h2> <ul> <li class="parsedown-task-list parsedown-task-list-close"> <input type="checkbox" checked disabled /> test </li> <li class="parsedown-task-list parsedown-task-list-open"> <input type="checkbox" disabled /> deploy </li> </ul>
缓存
在转换一些 markdown 之后,tmp 文件夹中会添加两个文件。
{$hash}.md.html{$hash}.md.toc.json
$html = $app->module('cockpit')->markdown($md); $hash = md5($md); $cachepath = "tmp:///{$hash}.md.toc.json"; if ($app->filestorage->has($cachepath)) { $toc = \json_decode($app->filestorage->read($cachepath), true); } print_r($toc);
许可证、致谢和第三方资源
许可证:MIT,作者:Raffael Jesche,www.rlj.me
使用的库
- "erusev/parsedown-extra": "0.8.1", MIT
- "erusev/parsedown": "^1.7.4", MIT
- "benjaminhoegh/parsedown-toc": "^1.4.3", MIT
- "raffaelj/parsedown-tasks": "^0.1.0", MIT