drupal模块fckeditor不能显示出来的一个原因

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的设置将不起作用。