許可された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して、フォームの変更機能でオブジェクトを検査することをお勧めします。

上記をテストしたところ、うまくいきました(現在、ファイルフィールドの説明が通常どおりになるテーブルがあります)。技術的にはルールに固執していますが、ハックのように感じられますが、うまくいけば、仕方。


それは完全に機能しました。誰かがこれを正しく行うためのモジュールを間違いなく作成する必要があります(これがどのようにしてコア機能になるかはわかりません!)。
12

@ 7wondersええ、間違いなくチャンスを逃したように見えますが、開発者の観点からは、これはフィールドモジュールが独自のテキスト形式を維持することを意味し、多すぎると考えられたかもしれません。それを変更するためのカスタムオプションは素晴らしいですが。これをもっと便利なモジュールにして、実際にdrupal.orgに投稿するかもしれません。投稿を続けます:)
Clive

いい考えですね。サンドボックスの準備ができたらお知らせください。喜んでテストします。
12

2

D6を使用している場合は、/ admin / settings / filterに移動できます。そこで、「フィルターされたHTML」の「構成」オプションをクリックする必要があります。次に、構成タブをクリックします。「許可されたHTMLタグ」というラベルの付いたテキストボックスが表示されます。そこで使用する必要があるhtmlタグを入力します。

D7の場合は、admin / config / content / formats / filtered_htmlに移動します。[フィルター設定]で、[許可されたHTMLタグを制限する]タブをクリックします。使用するHTMLタグをテキストボックスに入力します。


私はD7を使用していて、私を信頼しています。(はい、私も数回キャッシュをクリアしました)。それは本当に不可解で、私のサイトのすべてのヘルプテキストフィールドに当てはまるようです。許可されたHTMLフィルターをプレーンテキストに追加し、テーブルtr tdを追加しても機能しません。とてもうるさい。
7ワンダース2012年

d7フレッシュインストールを追加したところ、デフォルトの動作を確認できました。ヘルプセクションのタグを変更することはできません=狂気!これをオーバーライドできるフックは何ですか?
7ワンダース2012年

1
「フルhtml」をデフォルトの入力形式として設定してみてください。
aerozeppelin 2012年

Drupal 7.10でFiltered HTMLの許可されたタグを変更できたこと、そしてフィルターが機能し、「許可されたタグ」の表示が確認できました。だから本当にエアロゼッペリンの答えは正しいです。:-)
paul-m

1
しかし、質問Paulを読んだ場合、それはフィールドのヘルプテキストで許可されているタグに関するものなので、答えは正しくありません。
7ワンダーズ2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.