1

我有一个 drupal 7 站点,并且希望将评论表单自定义为始终为纯文本(无论用户如何以及他们是否经过身份验证)。由于文本格式设置将被修复,我想删除出现在评论正文底部的小广告。

一般来说,我该如何自定义评论表单的外观?

更新

根据 Berdir 的说明,我添加了一个 #after_build 函数。我通过hook_form_comment_form_alter在我的 template.php 文件中添加一个函数来做到这一点。该新函数及其调用的自定义函数如下:

function mytheme_form_comment_form_alter(&$form, &$form_state, &$form_id)
{ 
    $form['comment_body']['#after_build'][] = 'configure_comment_form';
    //$form['comment_body']['und']['#after_build'][] = 'configure_comment_form';
}

function configure_comment_form(&$form, &$param1, &$param2)
{
    var_dump($form);
}

很明显,我可以看出我的configure_comment_form函数在var_dump打印出来时被调用。我已经尝试在代码中显示的数组中的configure_comment_form两个位置添加到#after_build 。$form我得到了相同的结果,评论正文表单字段就消失了。

我没有覆盖任何现有的构建后功能。 $form['comment_body']['#after_build']添加函数时不存在,$form['comment_body']['und']['#after_build']添加自定义函数后如下所示:

["#after_build"]=>
      array(2) {
        [0]=>
        string(30) "field_form_element_after_build"
        [1]=>
        string(22) "configure_comment_form"
      }
4

2 回答 2

1

要删除评论正文下的过滤器框,您可以使用主题的 template.php 来实现以下钩子:

function theme_filter_tips($variables) {
    return '';
}
function theme_filter_tips_more_info() {
    return '';
}
function theme_filter_guidelines($variables) {
    return '';
}

这只是留下了过滤器/提示框的轮廓,可以在主题的 CSS 中使用:

.filter-wrapper {
    display: none;
}

尽管我不确定这是否会通过隐藏该类而导致其他功能中断。

于 2011-08-05T07:42:42.163 回答
0

我为http://drupal.org/project/privatemsg做了类似的事情

首先,在正文表单字段中添加一个#after_build 函数,例如“'#after_build' => array('privatemsg_check_format_access')”(因为您正在更改表单,所以首先检查是否已经存在这样的函数然后附加它,不要覆盖)

然后,在该函数中,将格式字段的#access 设置为 FALSE,并将 #default_value 强制设置为您想要的任何值。见privatemsg_check_format_access

于 2011-02-04T07:56:10.203 回答