허용 된 HTML 태그 변경 : 도움말 텍스트 입력 필드의 경우 @tags


11

해당 필드에 대한 도움말 텍스트의 일부로 양식 필드 아래에 간단한 테이블을 표시하려고합니다 (파일 필드는 정확해야 함). 나는 완전히 정신적입니까, 아니면이 텍스트 영역에 허용되는 html 태그를 변경하는 쉬운 방법이 있습니까? 지금은 내가 표시했습니다 :

Instructions to present to the user below this field on the editing form. Allowed HTML tags: a b big code del em i ins pre q small span strong sub sup tt ol ul li p br img

쉬운 방법이 없다면, 가장 쉬운 방법은 무엇입니까?

최신 정보:

Clive는 맞춤형 모듈로 아래에서 수행하는 좋은 방법을 생각해 냈습니다. ctools를 사용하여 도움말 텍스트를 다음과 같이 접을 수 있도록 추가 할 수도 있습니다.

// Implement hook_field_widget_form_alter()
function MYMODULE_field_widget_form_alter(&$element, &$form_state, &$context) {
  // If some condition is matched based on the element provided...
  if (isset($element[0]) && $element[0]['#field_name'] == 'field_test') {
    // Alter the description using your more permissive set of tags
    $reworked = filter_xss($context['instance']['description'], _MYMODULE_field_filter_xss_allowed_tags());
    $element[0]['#description'] = theme('ctools_collapsible', array('handle' => 'Help text', 'content' => $reworked, 'collapsed' => TRUE));
  }
}

// Provide a more permissive set of tags to be used with filter_xss()
function _MYMODULE_field_filter_xss_allowed_tags() {
  // Merge the new set of allowed tags with the less permissive defaults
  $new_tags = array('table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td');
  return array_merge(_field_filter_xss_allowed_tags(), $new_tags);
}

텍스트 필드 (질문 제목) 또는 파일 필드 (질문 설명)에 대해 이야기하고 있습니까?
googletorp

@ 7wonders 질문에 추가 한 것이 답이 될 것입니다.
kiamlaluno

답변:


7

실제로 할 수있는 쉬운 방법은 없습니다. 허용 된 태그 목록은 _field_filter_xss_allowed_tags()함수에 하드 코딩되어 있습니다 .

이는 field_filter_xss()데이터가 데이터베이스에 저장 될 때가 아니라에 표시 될 때에 의해 호출 됩니다 field_default_form().

다행히도 방법이 있지만 작은 사용자 정의 모듈이 필요합니다. 기본적으로 필드의 위젯 양식에 대한 양식 변경 후크를 구현 filter_xss()하고보다 허용 가능한 태그 세트와 함께 사용하도록 요소 설명을 설정하려고합니다.

이 라인을 따라 뭔가 :

// Implement hook_field_widget_form_alter()
function MYMODULE_field_widget_form_alter(&$element, &$form_state, &$context) {
  // If some condition is matched based on the element provided...
  if (isset($element[0]) && $element[0]['#field_name'] == 'field_test') {
    // Alter the description using your more permissive set of tags
    $element[0]['#description'] = filter_xss($context['instance']['description'], _MYMODULE_field_filter_xss_allowed_tags());
  }
}

// Provide a more permissive set of tags to be used with filter_xss()
function _MYMODULE_field_filter_xss_allowed_tags() {
  // Merge the new set of allowed tags with the less permissive defaults
  $new_tags = array('table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td');
  return array_merge(_field_filter_xss_allowed_tags(), $new_tags);
}

이는이라는 요소에 대해 새 태그 만 허용한다는 전제를 기반으로합니다. field_test다른 필드에 대해 동일한 태그 를 수행하려는 경우 다른 조건과 일치하도록 변경해야합니다. 양식 변경 기능으로 객체를 검사하기 위해 dpm()포함 된 우수한 기능을 사용하는 것이 Devel module좋습니다.

방금 위의 테스트를 수행했으며 작동합니다 (이제 파일 필드 설명이 일반적으로 사용되는 테이블이 있습니다). 기술적으로 규칙을 고수하더라도 해킹과 같은 느낌이 들지만 희망적으로는 방법.


완벽하게 작동했습니다. 누군가 이것을 올바르게 수행하기 위해 분명히 모듈을 만들어야합니다 (이것이 내가 모르는 핵심 기능이 될 수 없습니다!).
7wonders

@ 7wonders 그래, 분명히 기회를 놓친 것 같지만 개발자의 관점에서 볼 때 이것이 필드 모듈이 자체 텍스트 형식을 유지한다는 것을 의미한다고 생각합니다. 그래도 변경하는 사용자 정의 옵션이 좋았을 것입니다. 나는 :) 당신이 게시 계속됩니다,보다 유용한 모듈이 점을 설정하고 실제로 drupal.org에 게시 할 수
클라이브

좋은 생각 인 것 같습니다. 샌드 박스를 설치했을 때 알려 주시면 기꺼이 테스트 해 드리겠습니다.
7wonders

2

D6을 사용하는 경우 / admin / settings / filter로 이동할 수 있습니다. "Filtered HTML"의 "configure"옵션을 클릭해야합니다. 그런 다음 구성 탭을 클릭하십시오. "허용 된 HTML 태그"라는 레이블이 붙은 텍스트 상자가 나타납니다. 사용할 html 태그를 입력하십시오.

D7의 경우 admin / config / content / formats / filtered_html로 이동하십시오. 필터 설정에서 "허용 된 HTML 태그 제한"탭을 클릭하십시오. 텍스트 상자에 사용하려는 HTML 태그를 입력하십시오.


나는 D7을 사용하고 나를 믿어, 그것이 내가 한 첫 번째 일이며 그것이 작동하지 않을 때 충격을 받았다! (예, 캐시도 여러 번 지 웠습니다). 정말 당황스럽고 내 사이트의 모든 도움말 텍스트 필드의 경우 인 것 같습니다. 허용 된 html 필터를 일반 텍스트에 추가하고 테이블 tr td를 추가해도 작동하지 않습니다. 매우 성가신.
7wonders

방금 d7 새로 설치를 추가하고 기본 동작을 확인할 수 있습니다. 도움말 섹션 = 광기에서 태그를 변경할 수 없습니다! 어떤 후크가 이것을 무시할 수 있습니까?
7wonders

1
"Full html"을 기본 입력 형식으로 설정 한 다음 확인하십시오.
aerozeppelin

Drupal 7.10에서 Filtered HTML에 대해 허용 된 태그를 변경할 수 있었고 필터가 '허용 된 태그'디스플레이와 함께 작동했음을 확인할 수 있습니다. 실제로 에어로 펠린의 대답은 맞습니다. :-)
paul-m

1
그러나 Paul 질문을 읽으면 필드의 도움말 텍스트에서 허용되는 태그와 관련이 있으므로 답변이 정확하지 않습니다.
7wonders
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.