在此代码中:
<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})' />
,以尝试增加帖子摘要中的字符长度。它有效,但是现在我其他小部件中的文本以粗体或斜体显示。如何在不影响网站上其他小部件的情况下更改代码段字符长度?
在替换代码之前发布摘要:
替换代码后的代码段(标题,小部件文本等已更改为斜体):
答案 0 :(得分:1)
之所以出现此问题,是因为data:post.body
数据标签包含了包括HTML在内的帖子的全部内容,而不像data:post.snippet
或data:post.longSnippet
数据标签在内部将其删除。
即使snippet
运算符在确定长度时仅计算文本内容,但没有显式剥离与该内容关联的HTML标记(它仅提供剥离锚点的选项(<a>
)标签(通过links
选项和<br>
标签通过linebreaks
选项,但其他标签(如粗体或斜体)没有选项)。
在这种情况下,存在一个HTML标记,用于斜体显示文本,由于代码段的字符长度限制,该文本无法正确关闭(在屏幕截图中,我们可以看到帖子内容中的粗体文本正确显示,因为开始和结束标记都包含在代码段长度中)。由于缺少用于使文本变为斜体的结束标记,因此浏览器将代码段之后的所有文本均变为斜体(因为无法弄清楚应在何处停止斜体)
如果代码段长度要求不超过850个字符,则使用data:post.longSnippet
比data:post.body
更好。以前data:post.longSnippet
的字符数限制为300-400,但是现在增加了该限制。将其与snippet
运算符结合使用,可以更好地控制字符长度。新的代码段看起来像-
<b:eval expr='snippet(data:post.longSnippet, {length: 650, linebreaks: false, links: false})' />