dzango/twig-truncate-extension

一个Twig扩展,可以在保留HTML标签的同时截断文本

1.1.0 2017-12-02 03:28 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:21 UTC


README

一个自定义的Twig扩展,可以在保留HTML标签的同时截断文本。

安装

将库添加到您的应用的 composer.json

    "require": {
        "dzango/twig-truncate-extension": "~1.0",
        ...
    }

将扩展添加到 Twig_Environment

use Dzango\Twig\Extension\Truncate;

$twig = new Twig_Environment(...);

$twig->addExtension(new Truncate());

用法

该组件公开了一个 truncate twig过滤器,可以应用于任何字符串。

{{ "some ... very ... large ... text"|truncate }}

参数

truncate 过滤器接受4个参数,所有这些参数都有合理的默认值,因此大多数情况下可以忽略

truncate($length = 100, $ending = '...', $exact = false, $considerHtml = true)
  • length:要显示的最大字符数,不包括任何HTML标记(默认 100
  • ending:要附加到截断字符串的字符(默认 ...
  • exact:如果设置为true,文本可能会在单词中间被截断。为了避免这种情况,将此参数设置为false(默认 false
  • considerHtml:如果设置为true,HTML标记将被忽略并保持不变(默认 true

Markdown和原始内容

由于 truncate 过滤器保留了HTML标记,因此它能够很好地处理渲染的Markdown内容,以及“原始”内容(由 raw 过滤器渲染)。例如,假设您的应用已启用 markdown twig过滤器以解析Markdown内容,以下完全受支持

{{ "some ... very ... long ... markdown text"|markdown|raw|truncate }}

Symfony2

要在symfony2项目中使用此扩展,您有两个选项

1. 手动添加服务

# app/config/config.yml

services:
    dzango.twig.truncate_extension:
        class: Dzango\Twig\Extension\Truncate
        tags:
            - { name: twig.extension }

2. 使用TwigTruncateBundle

Dzango/TwigTruncateBundle 将为您注册扩展作为服务。

致谢