Je souhaite afficher un tableau simple sous un champ de formulaire dans le cadre du texte d'aide pour ce champ (champ de fichier pour être exact). Suis-je totalement mental ou n'y a-t-il vraiment aucun moyen facile de changer les balises html autorisées pour cette zone de texte? Pour le moment, j'ai affiché:
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
S'il n'y a pas de moyen facile, quelle est la prochaine façon la plus simple de le faire?
MISE À JOUR:
Clive a trouvé un excellent moyen de le faire ci-dessous avec un module personnalisé. Vous pouvez également ajouter à cela à l'aide de ctools pour rendre le texte d'aide réductible comme suit:
// 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);
}
la source
Réponses:
Il n'y a pas vraiment de moyen facile de le faire, la liste des balises autorisées est codée en dur dans la
_field_filter_xss_allowed_tags()
fonction .Ceci est à son tour appelé par
field_filter_xss()
, non pas lorsque les données sont enregistrées dans la base de données, mais plutôt lorsqu'elles sont affichées dansfield_default_form()
.Heureusement, il existe un moyen, mais il faudra un petit module personnalisé pour le faire. Vous cherchez essentiellement à implémenter un crochet de modification de formulaire pour le formulaire de widget du champ et à définir la description de l'élément à utiliser
filter_xss()
avec un ensemble de balises plus permissif.Quelque chose dans ce sens:
C'est basé sur la prémisse que vous ne voulez autoriser que les nouvelles balises pour un élément appelé
field_test
, évidemment si vous voulez faire la même chose pour d'autres champs, vous devrez le changer pour qu'il corresponde à une condition différente. Je conseille d'utiliser l'excellentedpm()
fonction incluse dans leDevel module
pour inspecter l'objet dans votre fonction de modification de formulaire.Je viens de tester ce qui précède et cela fonctionne (j'ai maintenant une table où ma description de champ de fichier serait normalement), cela ressemble un peu à un piratage même s'il respecte techniquement les règles, mais j'espère que cela vous mettra sur la façon.
la source
Si vous utilisez D6, vous pouvez accéder à / admin / settings / filter. Là, vous devez cliquer sur l'option "configurer" de "HTML filtré". Cliquez ensuite sur l'onglet configurer. vous serez présenté avec une zone de texte intitulée "Balises HTML autorisées". Entrez les balises html que vous devez utiliser ici.
Dans le cas de D7, accédez à admin / config / content / formats / filter_html. Sous Paramètres de filtrage, cliquez sur l'onglet "Limiter les balises HTML autorisées". Saisissez les balises HTML que vous souhaitez utiliser dans la zone de texte.
la source