プレーンテキスト形式を使用しているときに改行を取得するにはどうすればよいですか?


11

これは非常にシンプルなはずですが、気が狂います。

すべてのBody要素に「プレーンテキスト」を選択しました。フォームに入力するときに、誰もHTMLを入力できないようにしたいと思います。

ただし、改行は保持したいです。プレーンの構成ページには、確かに「このボックスをチェックして改行をbrとpに変換する」がありますが、何をチェックするか、またはどのようにフィルターの重みを再配置するかに関係なく、改行を保持するようにすることはできません。

これを機能させてテキストのリターンを保持できるようにするための正しい構成は何ですか?


1
それは奇妙です。私は同じ設定を持っていて、それは私のために機能します。これはクリーンインストールですか、それともアップグレードですか。カスタムモジュールを使用していますか、おそらく上書きなどを行っていますか?
Emil Orol 2012

それはバグのように感じたり、何かが少し場違いだったように感じました。私が考えていたのは、改行に対してbrおよびpタグを返すことができるということでしたが、それらはフィルタリングされて真の「プレーンテキスト」を保持していました。何をチェックし、フィルターの順序は何ですか?
blue928 2012

平文でもまだ問題があります。<p>タグと<br>タグも追加しましたが、運がありません。何か不足していますか?
ソクラチス2014年

回答:



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
入力フォーマットがFiltered Textでない場合、これは機能しません。
artfulrobot 2012

3

解決策は簡単です。プレーンテキストコンテンツを次のcssで表示するだけです。

white-space: pre-line;

2
実際、drupal.org / node / 1095838#comment-6679314white-space: pre-line;述べたように、より良いです。
Jeroen

そのようなエレガントなソリューション。
セフィス2016年

これは機能しますが、各フィールドを手動でターゲティングする場合、またはすべてのロングテキストフィールドでこれを行う必要がある場合のみです。「プレーンテキスト」フィールドを他のタイプのフィールドと混合していて、これをmpdfで使用してPDFファイルを作成している場合は、Druvisionのソリューションのみが機能します。
リチャード

1

Advanced Text Formatterモジュールを使用して、コードなしでこの問題をすばやく解決しました。

  1. モジュールをインストールして有効にします。
  2. コンテンツタイプの[ディスプレイの管理]をクリックします。
  3. フィールドのフォーマットの「プレーンテキスト」を「アドバンスドテキスト」に変更します
  4. 右側の歯車(またはフォーマット設定へのリンク)をクリックします

    1. トリムの長さを0に設定します
    2. フィルターを「許可されたHTMLタグを制限する」に設定します
    3. 「許可されたHTMLタグ」からすべてのアイテムを削除する
    4. 「改行をHTMLに変換する」にチェックを入れます
    5. [更新]をクリックして、フィールド表示を保存します。

改行のみを許可するAdvanced Text Formatterモジュールのフォーマット設定


0

これは入力フィルタリングではないと思います。おそらくフィールドの表示設定です。「プレーンテキスト」に設定されている場合は、「デフォルト」に変更します。それ以外の場合、フィールドが表示される前に、入力改行用に生成されたタグが取り除かれます。

明確にするために、これは問題のコンテンツタイプの[ディスプレイの管理]パネルにあります。管理»構造»コンテンツタイプ»MyContentType»ディスプレイの管理。フィールドの「フォーマット」列の下。


0

私はこれをバグだとは思いませんが、「Drupalの設定方法には助けられない」「フィルターされたテキスト」入力フォーマットが「プレーンテキスト」に設定されたフィールドと「プレーンテキスト」フィールドの混乱の結果です。フィールドを作成するときに「フィルターされたテキスト」を選択すると、ユーザーは「プレーンテキスト」およびその他の利用可能な入力フォーマットから選択するオプションを取得し、コンテンツの作成時に「プレーンテキスト」オプションを使用してラインをレンダリングします。すぐに壊れてリンクします。ただし、フィールドの作成時に「プレーンテキスト」を選択した場合、「プレーンテキスト」入力形式をどのように構成しても、タグは使用できないか、まったく表示されません。そのため、「プレーンテキスト」が機能しないことにパニックになる前に、まずコンテンツタイプの設定で、フィールドに「フィルターされたテキスト」があることを確認してください。選択されました。それは逆説的で迷惑ですが、Drupal ...;)


0

「プレーンテキスト形式」は「テキスト処理」方式であり、HTMLタグはサポートされていないため、改行は正常に機能しません。

「フィルターされたテキスト(ユーザーがテキスト形式を選択)」の「テキスト形式」を作成し、「テキスト形式」を「プレーンテキスト」に設定します。


これを解決したのは、コンテンツタイプのフィールドを「フィルターされたテキスト-ユーザー選択」に変更することでしたが、ユーザーがプレーンテキストエディターにのみアクセスできるようにしました。どういうわけかそれは働いた。ユーザーが他のテキストエディターにアクセスできる場合、これはそれほど良いことではありません。
クリスティ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.