我创建了一个模块,它定义了一个新的文本格式过滤器。
现在我想使用这个新过滤器直接从模块 php定义文本格式。Drupal 管理员可以从admin/config/content/formats/add
管理页面手动执行此操作,但我想避免此步骤。我需要添加my_dmodule.module
什么?
问问题
591 次
2 回答
6
我猜您正在尝试在模块安装时创建文本格式。如果是这样,您可以调用 filter_format_save()。可以在 filter.module ( Drupal API 参考) 中找到创建对象的详细信息。
如果您在 hook_install() 中创建过滤器,您可能必须先加载过滤器模块,没有检查:
drupal_load('module', 'filter');
于 2012-11-11T12:00:43.437 回答
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()
,但它可以是另一个模块中定义的过滤器。
于 2012-11-11T17:02:57.147 回答