it-swarm-ko.tech

일반 텍스트 필터가 줄 바꿈을 p 및 div 요소로 변환해야합니까?

콘텐츠 유형에 일반 텍스트 필드가 있습니다. 단락 사이의 리턴을 누르면 줄 바꿈이 있고 코드를 검사 할 때 Firebug 내부에 표시됩니다. 그러나보기 페이지의 본문은 줄 바꿈을 렌더링하지 않습니다. 일반 텍스트 입력 필터를보고 줄 바꿈 변환 필터를 확인했습니다. 본문 위젯의 설정 양식에서 필터링 된 HTML로 변경하면 정상적으로 작동합니다.

줄 바꿈을 변환하려면 필터링 된 HTML 설정을 사용해야합니까?

6
Adam S

"일반 텍스트"를 선택하면 "일반 텍스트"입력 형식을 사용하도록 필드가 설정되지 않습니다. 입력 한 텍스트를 일반 텍스트로 변경하도록 필드를 설정하고 있습니다.

text_field_formatter_view () , 텍스트 필드의 내용을 출력하는 함수는 필드가 일반 텍스트로 표시되도록 설정된 경우 다음 코드를 실행합니다.

case 'text_plain':
  foreach ($items as $delta => $item) {
    $element[$delta] = array('#markup' => strip_tags($item['value']));
  }
  break;

보시다시피, 텍스트는 strip_tags()에 전달됩니다.이 문자는 <p> 또는 <div> 태그에서 개행 문자를 변환하지 않습니다.

2
kiamlaluno

귀하의 질문에 대한 답변은 아니오입니다.

그러나 나는 항상 그것을 원하고 내 사용자들도 원합니다. "팬시"형식이 필요없는 텍스트 영역의 경우, 여전히 항상 줄 바꿈을 통해 디스플레이로 넘어갈 수 있습니다.

내 테마의 template.php에서 이것을 사용하여 plain_text 텍스트 영역 필드에 추가합니다.

/**
 * 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']);
  }
}
9
Charlie Schliesser