首页 > 解决方案 > 如何在不影响其他小部件文本的情况下更改博客文章片段长度?

问题描述

在这段代码中:

<div class='resumo'>
  <span><data:post.snippet/>
 </span>
</div>
<a class='read-more' expr:href='data:post.url'>Read More</a>

我替换<data:post.snippet/><b:eval expr='snippet(data:post.body, {length: 450, linebreaks: false, links: false})' />尝试增加帖子片段的字符长度。它有效,但现在我的其他小部件中的文本以粗体或斜体显示。如何更改片段字符长度而不影响我网站上的其他小部件?

在替换代码之前发布代码段:

在替换代码之前发布代码段:

替换代码后的帖子片段(标题、小部件文本等已更改为斜体):

替换代码后发布片段:

标签: htmlblogger

解决方案


之所以出现此问题,是因为data:post.bodydata 标签包含帖子的全部内容,包括 HTML,这与在​​内部剥离这些内容的data:post.snippetor data 标签不同。data:post.longSnippet

即使snippet操作员在确定长度时只计算文本内容,但它没有明确剥离与该内容关联的 HTML 标记(它仅提供通过选项剥离锚 ( <a>) 标记的links选项和<br>通过linebreaks选项的标记,但没有选项其他标签,如粗体斜体)。

在这种特殊情况下,有一个 HTML 标签用于斜体文本,由于片段的字符长度限制而无法正确关闭(在屏幕截图中,我们可以观察到帖子内容中的粗体文本正确显示因为开始和结束标签包含在片段长度本身中)。由于缺少用于斜体文本的结束标记,浏览器将片段后面的所有文本都斜体(因为它无法确定应该在哪里停止斜体)

如果对片段长度的要求不超过 850 个字符,那么 usingdata:post.longSnippet将是比data:post.body. 以前data:post.longSnippet限制为 300-400 个字符,但现在已增加该限制。将它与snippet操作符结合起来可以让您更好地控制字符长度。新的代码片段看起来像 -

<b:eval expr='snippet(data:post.longSnippet, {length: 650, linebreaks: false, links: false})' />

推荐阅读