Drupal模块:创建文本格式

时间:2012-11-11 11:07:45

标签: php drupal drupal-7 drupal-modules

我创建了一个模块,用于定义新的文本格式过滤器 现在我想直接从模块php使用这个新的过滤器来定义文本格式。 Drupal管理员可以从admin/config/content/formats/add管理员页面手动执行此操作,但我想避免这一步骤。我需要添加到my_dmodule.module

2 个答案:

答案 0 :(得分:6)

我猜你正在尝试在模块安装上创建文本格式。如果是这样,您可以调用filter_format_save()。有关创建对象的详细信息,请参见filter.module(Drupal API reference)。

如果您在hook_install()中创建过滤器,则可能必须先加载过滤器模块,但尚未检查:

drupal_load('module', 'filter');

答案 1 :(得分:2)

Hendrik 的回答启发,这是我的解决方案:

function myformat_install() {
  drupal_load('module', 'filter');
  /* check already exists */
  $format_exists = (bool) db_query_range('SELECT 1 FROM {filter_format} WHERE name = :name', 0, 1, array(':name' => 'My Format'))->fetchField();
  if (!$format_exists) {
    $format = array(
        'format' => 'myformat',
        'name' => 'My Format',
        'filters' => array(
            'myformat_filter' => array(
                'weight' => 0,
                'status' => 1,
            ),
        ),
    );
    $format = (object) $format;
    filter_format_save($format);
  }
}

myformat_filter是一个实现hook_filter_info()的过滤器,但它可能是另一个模块中定义的过滤器。