Tôi đã cố gắng trả lời cách tôi thực hiện việc này trong một câu hỏi khác. Tôi sẽ đăng nó ở đây cũng
Tôi nghĩ rằng một chiến lược tốt ở đây là sử dụng API hồ sơ cài đặt. Với API hồ sơ cài đặt, bạn có thể thực hiện hầu hết mọi thứ bằng cách sử dụng công cụ quản trị Drupal. Hầu hết các biểu mẫu lõi chỉ đơn giản là thiết lập các biến trong bảng biến. Để có thể hiển thị một cách hợp lý nội dung cơ sở dữ liệu không nội dung của bạn, tức là cấu hình là khôn ngoan để sử dụng các chức năng cập nhật.
Trên trang web của mình, chúng tôi có trên mô-đun "ec", rất ít ngoài việc tệp ec.install chứa các hàm cập nhật, ví dụ: ec_update_6001()
Chức năng cài đặt chính của bạn có thể thực sự quan tâm đến việc cập nhật mọi cài đặt mới mà bạn thực hiện để cập nhật mô-đun của mình.
function ec_install() {
$ret = array();
$num = 0;
while (1) {
$version = 6000 + $num;
$funcname = 'ec_update_' . $version;
if (function_exists($funcname)) {
$ret[] = $funcname();
$num++;
} else {
break;
}
}
return $ret;
}
Một chức năng cập nhật mẫu hoặc hai từ tập tin thực tế của chúng tôi bây giờ làm theo
// Create editor role and set permissions for comment module
function ec_update_6000() {
install_include(array('user'));
$editor_rid = install_add_role('editor');
install_add_permissions(DRUPAL_ANONYMOUS_RID, array('access comments'));
install_add_permissions(DRUPAL_AUTHENTICATED_RID, array('access comments', 'post comments', 'post comments without approval'));
install_add_permissions($editor_rid, array('administer comments', 'administer nodes'));
return array();
}
// Enable the pirc theme.
function ec_update_6001() {
install_include(array('system'));
// TODO: line below is not working due to a bug in Install Profile API. See http://drupal.org/node/316789.
install_enable_theme('pirc');
return array();
}
// Add the content types for article and mtblog
function ec_update_6002() {
install_include(array('node'));
$props = array(
'description' => 'Historical Movable Type blog entries',
);
install_create_content_type('mtblog', 'MT Blog entry', $props);
$props = array(
'description' => 'Article',
);
install_create_content_type('article', 'Article', $props);
return array();
}
hiệu quả này chủ yếu là giải quyết vấn đề phiên bản với cơ sở dữ liệu và mã Drupal. Chúng tôi sử dụng nó rộng rãi. Nó cho phép chúng tôi quảng bá mã mới thay đổi cấu hình cơ sở dữ liệu mà không cần phải nhập lại cơ sở dữ liệu hoặc thực hiện thay đổi trực tiếp. Điều này cũng có nghĩa là chúng tôi có thể kiểm tra phiên bản đúng cách mà không sợ thay đổi cơ sở dữ liệu ẩn.
Cuối cùng, lượt xem và lượt xem hỗ trợ phương pháp này. Xem đoạn mã này
// Enable CCK modules, add CCK types for Articles in prep for first stage of migration,
// enable body for article, enable migration modules.
function ec_update_6023() {
$ret = array();
drupal_install_modules(array('content', 'content_copy', 'text', 'number', 'optionwidgets'));
install_include(array('content', 'content_copy'));
install_content_copy_import_from_file(drupal_get_path('module', 'ec') . '/' . 'article.type', 'article');
$sql = "UPDATE {node_type} SET body_label='Body', has_body=1
WHERE type = 'article'";
$ret[] = update_sql($sql);
return $ret;
}
thể trùng lặp của [Drupal Chiến lược kiểm soát nguồn?] (Http://stackoverflow.com/questions/282858/drupal-source-control-strategy) – gnat
Xem [câu trả lời trước cho câu hỏi này] (http://stackoverflow.com/questions/282858/drupal-source-control-strategy) – Eli