1

新しいテキスト形式フィルターを定義するモジュールを作成しました。ここで、モジュールphpから直接、この新しいフィルターを使用してテキスト形式
を 定義したいと思います。Drupal管理者は管理者ページから手動でこれを行うことができますが、この手順は避けたいと思います。何に追加する必要がありますか?admin/config/content/formats/addmy_dmodule.module

4

2 に答える 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 に答える