我需要节点标题能够显示一些文本格式。
据我了解,Drupal 的标题字段只是纯文本,它不允许 HTML 或任何其他输入格式。真的吗?有没有办法覆盖这个,或者其他解决方案?
我正在使用 Drupal 6。
您可以很容易地在您的主题中做到这一点,有不同的方法可以做到。最简单的可能是在你的 template.php 中完成它
/* this function generates the variables that are available in your node.tpl,
* you should already have this in your template.php, but if not create it
*/
function mytheme_preprocess_node(&$vars) {
// It's important to run some kind of filter on the title so users can't
// use fx script tags to inject js or do nasty things.
$vars['title'] = filter_xss($vars['node']->title);
}
函数中发生的情况是,它覆盖了保存用于标题的变量的node.tpl 中$title 的默认值。它通常放置在 h1 或 h2 标签内,因此您应该注意这一点。 filter_xss 用于仅允许基本的 html 标签,因此保护站点,您可以在here查看该功能。这是其他一些过滤器函数,例如 check_markup 和 filter_xss_admin,但是您可以为 filter_xss 提供第二个参数,它是允许的标签数组,因此如果默认值不够好,您可以更改它以满足您的需要。
使用函数
mytheme_preprocess_page
代替 D7
。
尽管最初的问题是针对 Drupal 6,但 10 年后这篇文章仍然出现在搜索结果中。
在现代 Drupal 中,可以使用一些自定义代码,就像这里的其他一些答案所建议的那样,但它们要么不完整、笨重,要么存在开放的安全漏洞。
相反,请查看 HTML Title 模块
扩展wiifm提到的模块,对于D7现在还有:https://drupal.org/project/html_title_trash
它允许更多标签,并且也适用于块标题,而不仅仅是节点标题。