aptoma/twig-markdown

此包已被放弃,不再维护。未建议替代包。

用于处理Markdown内容的Twig扩展

3.4.1 2021-12-14 11:12 UTC

This package is auto-updated.

Last update: 2023-07-31 09:14:36 UTC


README

Build Status

此扩展不再维护,我们不会发布任何新版本。如果有人想接管,请创建分支并发布新包,我们将链接到新版本。

Twig Markdown扩展提供了新的过滤器标签,允许在Twig模板中将内容解析为Markdown。

此扩展可以与多个Markdown解析器集成,因为它提供了一个接口,允许您自定义Markdown解析器。

支持的解析器

功能

  • 过滤器支持 {{ "# Heading Level 1"|markdown }}
  • 标签支持 {% markdown %}{% endmarkdown %}

当用作标签时,第一行的缩进级别将设置标签内容的默认缩进级别。从这个缩进级别开始,所有相同缩进或缩进较少的级别文本都将转换为普通文本。

此功能允许您在任意缩进级别编写Markdown内容,无需担心Markdown内部转换。

<div>
    <h1 class="someClass">{{ title }}</h1>

    {% markdown %}
    This is a list that is indented to match the context around the markdown tag:

    * List item 1
    * List item 2
        * Sub List Item
            * Sub Sub List Item

    The following block will be transformed as code, as it is indented more than the
    surrounding content:

        $code = "good";

    {% endmarkdown %}

</div>

安装

运行composer命令安装最新稳定版本

composer require aptoma/twig-markdown

或更新您的composer.json

{
    "require": {
        "aptoma/twig-markdown": "~3.0"
    }
}

您可以选择提供自己的Markdown引擎,尽管我们建议使用michelf/php-markdown

composer require michelf/php-markdown ~1.8
{
    "require": {
        "michelf/php-markdown": "~1.8"
    }
}

您还可以使用PHP League CommonMark引擎

composer require league/commonmark ~0.19
{
    "require": {
        "league/commonmark": "~0.19"
    }
}

使用方法

Twig扩展

该扩展提供了markdown标签和过滤器支持。

假设您正在使用composer自动加载,将扩展添加到Twig环境中

use Aptoma\Twig\Extension\MarkdownExtension;
use Aptoma\Twig\Extension\MarkdownEngine;

$engine = new MarkdownEngine\MichelfMarkdownEngine();

$twig->addExtension(new MarkdownExtension($engine));

Twig标记解析器

该标记解析器仅提供markdown标签!

use Aptoma\Twig\TokenParser\MarkdownTokenParser;

$twig->addTokenParser(new MarkdownTokenParser());

Symfony

要在Symfony 3/4应用(包括Pimcore)中使用此扩展,请将以下代码片段添加到您的应用app/config/services.yml文件中

services:
    # ...

    markdown.engine:
        class: Aptoma\Twig\Extension\MarkdownEngine\MichelfMarkdownEngine
    twig.markdown:
        class: Aptoma\Twig\Extension\MarkdownExtension
        arguments: ['@markdown.engine']
        tags:
            - { name: twig.extension }

GitHub Markdown引擎

MarkdownEngine\GitHubMarkdownEngine 通过 KnpLabs\php-github-api 提供了使用 GitHub 公共 API 访问 GitHub 的 markdown 引擎的接口。为了减少 API 调用,渲染的文档会被哈希并在文件系统中进行缓存。您可以将 GitHub 仓库和用于缓存的路径传递给构造函数

use Aptoma\Twig\Extension\MarkdownEngine;

$engine = new MarkdownEngine\GitHubMarkdownEngine(
    'aptoma/twig-markdown', // The GitHub repository to use as a context
    true,                   // Whether to use GitHub's Flavored Markdown (GFM)
    '/tmp/markdown-cache',  // Path on filesystem to store rendered documents
);

为了验证 API 客户端(例如),您可以传递一个自己的 \GitHub\Client 实例,而不是让引擎自己创建一个

$client = new \Github\Client;
$client->authenticate('GITHUB_CLIENT_ID', 'GITHUB_CLIENT_SECRET', \Github\Client::AUTH_URL_CLIENT_ID);

$engine = new MarkdownEngine\GitHubMarkdownEngine('aptoma/twig-markdown', true, '/tmp/markdown-cache', $client);

使用不同的 Markdown 解析器引擎

如果您想使用不同的 Markdown 解析器,您需要创建一个实现 Aptoma\Twig\Extension\MarkdownEngineInterface.php 的适配器。可以参考 Aptoma\Twig\Extension\MarkdownEngine\MichelfMarkdownEngine 作为一个例子。

测试

测试套件使用 PHPUnit

$ phpunit

许可

Twig Markdown 扩展在 MIT 许可下。