如何从富文本中截断?

或alroomi

我想从富文本中截断文本,如下所示。我尝试了很多东西,但没有奏效。

                    {% for piece in data.pieces %}

                        <div class="col-md-4 col-sm-6">
                            <div class="single-product mb-55 animated fadeInUp" data-animate="fadeInUp" data-delay=".1" style="animation-duration: 0.6s; animation-delay: 0.1s;">
                                <span class="tip">{{ piece.title }}</span>
                                <img src="img/products/[email protected]" data-rjs="2" alt="" data-rjs-processed="true" width="237" height="193">

                                <h3 class="h5">
                                   {{ apos.area(piece, 'body') }}
                                </h3>

                            </div>
                        </div>

                        <!-- End of Single Product -->
                    {% endfor %}

我需要截断这部分。不知道有没有其他的方式来显示描述:

{{ apos.area(piece, 'body') }}
斯图尔特·罗曼尼克

有许多不同的方法可以解决这个问题,您在要求方面没有提供太多,因此需要对这些进行优化以满足您的需求。

注意:truncate对富文本(标记)使用 Nunjuck 的过滤器将在代码中包含所有 HTML 标记和空格,而不是截断限制。下面的示例使用 Nunjuck 的截断。这可能会导致标记中的标记损坏,如果一个标记被打开,达到限制,然后永远不会关闭。我建议将truncate-html 之类的东西实现为项目级 Nunjucks 助手。请参阅在 Apostrophe 中实现自定义 Nunjucks 助手

为您的富文本小部件提供区域级截断设置

在您作品的模式中,在定义body区域时,在您的apostrophe-rich-text选项中添加一些标志

    {
      name: 'body',
      label: 'Body',
      type: 'area',
      options: {
        widgets: {
          'apostrophe-rich-text': {
            toolbar:[...], // toolbar settings
            styles:[...], // styles settings
            truncate: 250 // truncates after 250 characters
          }
        }
      }
    }

然后,在apostrophe-rich-text-widgets模板的项目级别覆盖上,注意要传递给富文本小部件的那些设置。使用 Nunjucks 内置truncate过滤器来更改小部件中的文本内容。

lib/modules/apostrophe-rich-text-widgets/views/widget.html

<div data-rich-text class="apos-rich-text">
  {% if data.options.truncate %}
    {{ data.widget.content | safe | truncate(data.options.truncate) }}  
  {% else %}
    {{ data.widget.content | safe }}  
  {% endif %}
</div>

优点:这将适用于您在上面提供的设置,而不会改变您当前的body.

缺点:这种方法是蛮力的。您在区域级别指定此选项,因此该区域内的所有富文本小部件都将收到这些选项,并且它们将被相应地截断。如果您使用单例来保存您的描述,同样的方法会更有效,因为您可以严格控制截断选项发生的位置。

使用截断选项将富文本小部件包装到新的小部件中

此方法涉及创建一个新的小部件,其中包含一个富文本单例和用于控制是否截断文本以及截断文本数量的选项。我要调用小部件truncate-rich-text

lib/modules/truncate-rich-text-widgets/index.js(创建此文件和路径)

module.exports = {
  extend: 'apostrophe-widgets',
  label: 'Truncate Rich Text',
  addFields: [
    {
      name: 'content',
      label: 'Content',
      type: 'singleton',
      widgetType: 'apostrophe-rich-text',
      options: {
        toolbar:[],
        styles:[]
      }
    },
    {
      name: 'truncate',
      label: 'Truncate this text?',
      type: 'boolean',
      choices: [
        { label: 'Yes', value: true, showFields: ['truncateCharacters'] },
        { label: 'No', value: false }
      ]
    },
    {
      name: 'truncateCharacters',
      label: 'Character limit',
      type: 'integer'
    }
  ]        
};

然后在lib/modules/truncate-rich-text-widgets/views/widget.html(创建这个)

<div class="truncate-rich-text">
  {% if data.widget.truncate %}
    {{ data.widget.content.items[0].content | safe | truncate(data.widget.truncateCharacters) }}
  {% else %}
    {{ data.widget.content.items[0].content | safe }}
  {% endif %}
</div>

最后,将此新模块添加到您的app.js配置中。

var path = require('path');
var apos = require('apostrophe')({
  shortName: 'myProject',
  modules: {
    // ... other modules
    'truncate-rich-text-widgets': {},
  }
});

优点:这提供了对哪些文本小部件被截断的更细粒度的控制,并且可以在您的站点中更广泛地使用。

缺点:这将是您站点配置中的一个新小部件,这意味着您必须迁移您的内容才能使用它。这也从编辑器用户体验中消除了在 Apostrophe 中编辑文本的大量上下文,这是一个无赖。

就像我说的,有多种方法可以实现这一点,并且在不同情况下也有 UX 微妙之处(也许您只向已注销的用户显示截断的文本,而将完整内容留给编辑器,因为这会使您的文本混淆保存时继续消失)。希望这将为您找到正确的实现开辟一些途径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何截断Angular中的文本?

来自分类Dev

如何在vue.js中显示富文本内容?

来自分类Dev

如何将富文本粘贴到UITextView中?

来自分类Dev

如何截断表格列中的文本?

来自分类Dev

如何截断 flex 容器中的文本(文本中的属性已被截断)?

来自分类Dev

截断reactJS中的文本

来自分类Dev

.write 中的文本被截断

来自分类Dev

如何将粗体文本添加到富文本框中

来自分类Dev

如何在 Access(富文本)文本框中添加空白下划线

来自分类Dev

如何在Lotus Script中的富文本字段中在光标的当前位置处插入文本和可能的富文本?

来自分类Dev

如何打印富文本框的内容

来自分类Dev

纯文本在iOS底部被截断,如何在xCode中修复?

来自分类Dev

如何在响应宽度表格列中截断文本?

来自分类Dev

如何仅使用CSS截断选择框中的文本

来自分类Dev

在JavaFX中显示富文本(.rtf)

来自分类Dev

在ExtJS组件中显示富文本

来自分类Dev

富文本框中的新行

来自分类Dev

如何在富文本框中添加一行?

来自分类Dev

如何接受用户输入并在富文本框中以斜体显示

来自分类Dev

如何在QListWidgetItem和QCombobox项中设置样式(富文本)?(PyQt / PySide)

来自分类Dev

如何在不同的富文本框中打开文件夹的内容?

来自分类Dev

如何在RTF格式的富文本框中插入超链接

来自分类Dev

如何在Django管理员的列表显示中显示富文本html

来自分类Dev

如何将富文本格式写入C#中的htm文件生成的Word文档

来自分类Dev

如何将分号放在富文本框中的同一行上?

来自分类Dev

如何在富文本框中添加一行?

来自分类Dev

如何在富文本框C#中的光标位置附加字符串?

来自分类Dev

如何对富文本框中的每一行重复此操作?

来自分类Dev

如何在通过评论 API 添加评论时在跑道评论中应用富文本格式

Related 相关文章

  1. 1

    如何截断Angular中的文本?

  2. 2

    如何在vue.js中显示富文本内容?

  3. 3

    如何将富文本粘贴到UITextView中?

  4. 4

    如何截断表格列中的文本?

  5. 5

    如何截断 flex 容器中的文本(文本中的属性已被截断)?

  6. 6

    截断reactJS中的文本

  7. 7

    .write 中的文本被截断

  8. 8

    如何将粗体文本添加到富文本框中

  9. 9

    如何在 Access(富文本)文本框中添加空白下划线

  10. 10

    如何在Lotus Script中的富文本字段中在光标的当前位置处插入文本和可能的富文本?

  11. 11

    如何打印富文本框的内容

  12. 12

    纯文本在iOS底部被截断,如何在xCode中修复?

  13. 13

    如何在响应宽度表格列中截断文本?

  14. 14

    如何仅使用CSS截断选择框中的文本

  15. 15

    在JavaFX中显示富文本(.rtf)

  16. 16

    在ExtJS组件中显示富文本

  17. 17

    富文本框中的新行

  18. 18

    如何在富文本框中添加一行?

  19. 19

    如何接受用户输入并在富文本框中以斜体显示

  20. 20

    如何在QListWidgetItem和QCombobox项中设置样式(富文本)?(PyQt / PySide)

  21. 21

    如何在不同的富文本框中打开文件夹的内容?

  22. 22

    如何在RTF格式的富文本框中插入超链接

  23. 23

    如何在Django管理员的列表显示中显示富文本html

  24. 24

    如何将富文本格式写入C#中的htm文件生成的Word文档

  25. 25

    如何将分号放在富文本框中的同一行上?

  26. 26

    如何在富文本框中添加一行?

  27. 27

    如何在富文本框C#中的光标位置附加字符串?

  28. 28

    如何对富文本框中的每一行重复此操作?

  29. 29

    如何在通过评论 API 添加评论时在跑道评论中应用富文本格式

热门标签

归档