使用纯文本格式时如何获得换行符?


11

我觉得这应该很简单,但这让我发疯。

我为所有“身体”元素选择了“纯文本”。我不希望任何人在填写表格时都可以放入任何HTML。

但是,我确实希望保留换行符。在普通的配置页面上,确实存在一个“选中此框以将换行符转换为br和p的功能,但是无论我检查还是重新排列过滤器的权重,我都无法获得它来保存换行符。

什么是正确的配置才能使它起作用,以便我可以在文本中保留退货?


1
真奇怪 我有相同的设置,并且对我有用。这是全新安装还是升级?您是否正在使用自定义模块,可能正在做一些覆盖或其他操作?
Emil Orol

确实感觉像是一个错误或某些东西有点不合适。我发现发生的事情是我可以返回br和p标签来换行,但是随后它们被过滤掉以保留真正的“纯文本”,您检查了什么,过滤器的顺序是什么?
blue928'8

我仍然遇到纯文本的问题。我还添加了<p>和<br>标签,但没有运气。我错过了什么吗?
sokratis 2014年

Answers:



11

这似乎是一个Drupal 7.x错误。在我的情况下,更改过滤器的顺序不起作用。

我的短期解决方案是将其放入主题的template.php(ref)中:

<?php
/**
 * Implements template_preprocess_field().
 */
function THEMENAME_preprocess_field(&$vars, $hook) {
  // Add line breaks to plain text textareas.
  if (
    // Make sure this is a text_long field type.
    $vars['element']['#field_type'] == 'text_long'
    // Check that the field's format is set to null, which equates to plain_text.
    && $vars['element']['#items'][0]['format'] == null
  ) {
    $vars['items'][0]['#markup'] = nl2br($vars['items'][0]['#markup']);
  }
}
?>

对于视图中的字段,需要在字段设置的“重写结果”部分中单独设置此选项。


3

实际上,它应该使用“ admin / config / content / formats / plain_text”中的此过滤器顺序设置

  1. 将任何HTML显示为纯文本
  2. 将URL转换为链接
  3. 将换行符转换为HTML(即<br>和<p>)

通过删除“将任何HTML显示为纯文本”来尝试以下过滤器:

  1. 限制允许的HTML标签(仅为允许的HTML标签列表设置<a>和<br>)
  2. 将URL转换为链接
  3. 将换行符转换为HTML(即<br>和<p>)

2
如果输入格式不是“过滤的文本”,则此功能将无效。
artfulrobot 2012年

3

解决方案很简单。只需使用以下CSS显示纯文本内容即可。

white-space: pre-line;

2
实际上,white-space: pre-line;正如在drupal.org/node/1095838#comment-6679314上提到的那样,效果更好。
Jeroen

如此优雅的解决方案。
sephiith

这确实有效,但前提是您要手动定位每个字段,或者所有长文本字段都需要完成此操作。如果您将“纯文本”字段与其他类型的字段混合使用,并且与mpdf一起使用以生成PDF文件,则仅Druvision的解决方案有效。
理查德

1

我使用了高级文本格式化程序模块来快速解决此问题,而无需编写代码。

  1. 安装并启用该模块。
  2. 点击您的内容类型的“管理显示”。
  3. 将字段格式的“纯文本”更改为“高级文本”
  4. 点击右侧的齿轮(或指向格式设置的链接)

    1. 将修剪长度设置为0
    2. 将过滤器设置为“限制允许的HTML标签”
    3. 从“允许的HTML标签”中删除所有项目
    4. 选中“将换行符转换为HTML”
    5. 点击“更新”,然后保存您的字段显示。

高级文本格式化程序模块的格式设置,仅允许换行


0

我认为这不是输入过滤:可能是字段的显示设置。如果将其设置为“纯文本”,请将其更改为“默认”。否则,将在显示该字段之前剥离为输入换行符生成的标签。

为了清楚起见,在相关内容类型的“管理显示”面板上。在管理»结构»内容类型»MyContentType»管理显示。在字段的格式列下。


0

我不认为这是一个错误,而是在将“过滤的文本”输入格式设置为“纯文本”的字段与“纯文本”字段之间造成混淆的结果(Drupal的设置没有帮助)。如果在创建字段时选择“过滤的文本”,则用户将获得从“纯文本”和任何其他可用输入格式中选择的选项,并且在创建内容时在此处使用“纯文本”选项将渲染该行开箱即用。但是,如果在创建字段时选择“纯文本”,则无论您如何配置“纯文本”输入格式,都将根本没有标签可用/无法渲染。因此,在恐慌“纯文本”无效之前,请首先检查您的内容类型设置,以确保该字段具有“已过滤的文本” 已选择。这是自相矛盾和烦人的,但是,Drupal ...;)


0

“纯文本格式”作为“文本处理”方法不支持任何HTML标记,因此换行符无法正常工作。

为“过滤的文本(用户选择文本格式)”创建“文本格式”,并将“文本格式”设置为“纯文本”。


对我而言,解决此问题的方法是将内容类型的字段更改为“过滤的文本-用户选择”,但随后我确保用户只能访问纯文本编辑器。以某种方式有效。如果用户可以访问其他文本编辑器,那就不会那么好了。
Christia

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.