インストール時に新しいノード(ページ)を作成し、アンインストール時にこれらのページを削除するモジュールを用意したいと思います。
Mymodule.installファイルで次のことを試みましたが、成功しませんでした。
<?php
function mymodule_install() {
$node = new stdClass(); // We create a new node object
$node->type = "page"; // Or any other content type you want
$node->title = "Your title goes jere";
$node->language = LANGUAGE_NONE; // Or any language code if Locale module is enabled. More on this below *
$node->uid = 1; // Or any id you wish
$node->path = array('alias' => 'your_node_path'); // Setting a node path
node_object_prepare($node); // Set some default values.
// Let's add standard body field
$node->body[$node->language][0]['value'] = 'This is a body text';
$node->body[$node->language][0]['summary'] = 'Here goes a summary';
$node->body[$node->language][0]['format'] = 'filtered_html'; // If field has a format, you need to define it. Here we define a default filtered_html format for a body field
$node = node_submit($node); // Prepare node for a submit
node_save($node); // After this call we'll get a nid
}
このコードは このページ からカットアンドペーストされます。
モジュールを無効/有効にしても、ページは作成されません(少なくとも、コンテンツとデータベースのノードテーブルには表示されません)。
どうすればいいですか?
問題は、Drupalでは、インストール/アンインストールと有効化/無効化が2つの別個のものであることです。
モジュールを有効または無効にすると、それぞれ hook_enable()
および hook_disable()
が呼び出されます。
モジュールをインストールまたはアンインストールすると、それぞれ hook_install()
および hook_uninstall()
が呼び出されます。
コードをhook_install()
/hook_uninstall()
に残したい場合は、モジュールを無効にしてから、アンインストールする必要があります http://mysite.com/admin/modules/uninstall 。再インストールすると(これも有効になります)、コードが実行されます。
このコードがhook_enable()
/hook_disable()
でより適切に提供されるかどうかを検討する価値はありますが、特定の状況によって異なります。