web-dev-qa-db-ja.com

サイトインストールでルールをインポートする方法は?

ルールをエクスポートすると、次のようになります。

{ "rules_vote_points" : {
    "LABEL" : "Vote points",
    "PLUGIN" : "reaction rule",
    "REQUIRES" : [ "userpoints_rules", "voting_rules" ],
    "ON" : [ "voting_rules_insert_node" ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "3",
          "tid" : "0",
          "entity" : [ "node" ],
          "operation" : "Insert",
          "display" : 1,
          "moderate" : "approved"
        }
      }
    ]
  }
}

これをどこに置いてサイトインストールにインポートできますか?例えば。モジュール内のhook_views_apiフックとビューフォルダーを検索してビューをインポートするmodule.views_default.incファイルを使用してビューをインポートしています。コンテンツタイプは、モジュール内の.installファイルのhook_installを使用して作成されます。しかし、どうすれば以下をインポートできますか?

1
Andrew Welch

これがD7用であると仮定して、次のコード(エクスポートされたルールのコピーを含む)を試してください。

function my_module_default_rules_configuration() {
  $configs = array();
  $rule = '{ "rules_vote_points" : {
      "LABEL" : "Vote points",
      "PLUGIN" : "reaction rule",
      "REQUIRES" : [ "userpoints_rules", "voting_rules" ],
      "ON" : [ "voting_rules_insert_node" ],
      "DO" : [
        { "userpoints_action_grant_points" : {
            "user" : [ "node:author" ],
            "points" : "3",
            "tid" : "0",
            "entity" : [ "node" ],
            "operation" : "Insert",
            "display" : 1,
            "moderate" : "approved"
          }
        }
      ]
    }
  }';
  $configs['rules_vote_points'] = entity_import('rules_config', $rule);
  return $configs;
}

PS: Answers Userpoints モジュールのコードを見て、この手法も使用されている例を確認してください(answers_userpoints.rules_defaults.incに含まれています)。

1
Pierre.Vriens