Ich möchte eine einfache Tabelle unter einem Formularfeld als Teil des Hilfetextes für dieses Feld anzeigen (Dateifeld um genau zu sein). Bin ich total mental oder gibt es wirklich keine einfache Möglichkeit, die zulässigen HTML-Tags für diesen Textbereich zu ändern? Im Moment habe ich angezeigt:
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
Wenn es keinen einfachen Weg gibt, was ist der nächst einfachere Weg, dies zu tun?
AKTUALISIEREN:
Clive hat unten eine großartige Möglichkeit gefunden, dies mit einem benutzerdefinierten Modul zu tun. Sie können dies auch mithilfe von ctools hinzufügen, um den Hilfetext wie folgt zusammenklappbar zu machen:
// 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);
}
quelle
Antworten:
Es gibt keine einfache Möglichkeit, dies wirklich zu tun. Die Liste der zulässigen Tags ist fest in die
_field_filter_xss_allowed_tags()
Funktion codiert .Dies wird wiederum aufgerufen
field_filter_xss()
, nicht wenn die Daten in der Datenbank gespeichert werden, sondern wenn sie in angezeigt werdenfield_default_form()
.Glücklicherweise gibt es einen Weg, aber es wird ein kleines benutzerdefiniertes Modul benötigen, um dies zu tun. Grundsätzlich möchten Sie einen Formularänderungs-Hook für das Widget-Formular des Felds implementieren und die Beschreibung des Elements so festlegen, dass sie
filter_xss()
mit einem zulässigeren Satz von Tags verwendet wird.Etwas in diese Richtung:
Dies basiert auf der Prämisse, dass Sie nur die neuen Tags für ein aufgerufenes Element zulassen möchten.
field_test
Wenn Sie dasselbe für andere Felder tun möchten, müssen Sie es natürlich ändern, um es an eine andere Bedingung anzupassen. Ich empfehle die Verwendung der hervorragendendpm()
Funktion, die in der FunktionDevel module
zum Überprüfen von Objekten in Ihrem Formular enthalten ist.Ich habe gerade das Obige getestet und es funktioniert (ich habe jetzt eine Tabelle, in der sich normalerweise meine Dateifeldbeschreibung befindet). Es fühlt sich ein bisschen wie ein Hack an, obwohl es sich technisch an die Regeln hält, aber hoffentlich bringt es Sie auf die Weg.
quelle
Wenn Sie D6 verwenden, können Sie zu / admin / settings / filter navigieren. Dort müssen Sie auf die Option "Konfigurieren" von "Gefiltertes HTML" klicken. Klicken Sie dann auf die Registerkarte Konfigurieren. Sie erhalten ein Textfeld mit der Bezeichnung "Zulässige HTML-Tags". Geben Sie die HTML-Tags ein, die Sie dort verwenden müssen.
Im Falle von D7 gehen Sie zu admin / config / content / formats / filtered_html. Klicken Sie unter Filtereinstellungen auf die Registerkarte "Zulässige HTML-Tags begrenzen". Geben Sie die HTML-Tags, die Sie verwenden möchten, in das Textfeld ein.
quelle