drupal模块fckeditor启用以后,有时候会在添加内容时,出现很奇怪的现象,就是同一个页面有两个textarea类型表单,一个表单能显
示出fckeditor编辑器,另一个表单不能显示出fckeditor编辑器。
我遇到过这个问题查看了好久代码,终于找到了原因:那就是fckeditor编辑器出现的条件没有达到!
fckeditor编辑器出现的条件是两个:
第一,启用了fckeditor编辑器。
第二,textarea类型表单的'#rows'的数量要大于fckeditor编辑器配置的最小的rows数量。
下面是fckeditor.module里面判断是否替换textarea类型表单的条件:
if ((($element['#rows'] > $conf['min_rows']) || ($conf['min_rows'] <= 1 && empty($element['#rows']))) && $enabled){
...
}
如果上面的条件都满足,那么fckeditor编辑器会自动的替换掉textarea类型表单。
下面以一个实例说明:
我原来不能显示fckeditor编辑器的代码是:
$form['body'] = array(
'#title' => t('description'),
'#type' => 'textarea',
'#required' => 'TRUE',
'#default_value' => $node->body,
);
但是当我增加了textarea表单的rows时,fckeditor编辑器会自动出现,修改后如下:
$form['body'] = array(
'#title' => t('description'),
'#type' => 'textarea',
'#cols'=>60,
'#rows'=>10,
'#resizable'=>true,
'#default_value' => $node->body,
);
相关知识:
元素textarea常用属性如下:#attributes, #cols (默认为60), #default_value, #description, #prefix, #required, #resizable, #suffix, #title, #rows (默认为5)和 #weight.如果通过设置#resizable为TRUE将textarea输入框设置为动态调整大小,那么属性#cols的设置将不起作用。
