Module này sau một thời gian phát triển nói chung là nó cũng chạy được rồi. Đã thử convert một site có 5000 bài viết, 3000 bình luận, 1000 thành viên. Mất 20' nếu chạy trên host, 5' nếu chạy ở localhost.
Chỉ mới test với Joomla! 1.0.12 và Drupal 6.1, hỗ trợ jomcomment (của Azrul). Dự kiến sẽ hỗ trợ thêm SOBI. Vài thông tin thêm:
- Chỉ chạy trên bản Drupal cài đặt mới, chưa có module nào ngoài các module đi kèm trong bản cài
- Giữ toàn bộ bài viết (kể cả chưa publish), thành viên. ID của bài viết giữ nguyên.
- Chỉ chuyển các bình luận không bị đánh dấu spam
- Chuyển toàn bộ các section category vào một Vocabulary mới, section -> term, category -> sub term.
- Hỗ trợ các tính năng multi/cross section/category của bài viết (chỉ có tại TTCN)
- Chuyển mosimage thành hình ảnh
- Chuyển keyword trong meta của Joomla! vào một Vocabulary cho phép freetagging.
- (TODO) Hỗ trợ SOBI2.
Hướng dẫn: tải tarball về tại http://svn.jcisio.net/d/ và cài đặt. Có thể chép file configuration.php vào cùng thư mục để tự nhận cấu hình. Một menu mới sẽ xuất hiện, cứ làm theo từng bước. Đã test với memory limit là 32 MB, ít hơn thì chưa thử.

Comments
Mọi người dùng thử &
Mọi người dùng thử & góp ý nhé. Riêng phần Batch API không biết làm sao cho nó hiện menu lúc đang convert nhỉ ?
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
(1) Thấy hơi ngộ ngộ
(1) Thấy hơi ngộ ngộ ở đoạn này:
<?php
function joomla2drupal_form_settings () {
if (!user_access('import from Joomla')) { // [1]
// ..
}
if (!_check_prerequisitesJoomla($message)) {
return '<p class="error">' . $message . '</p>'; // [2]
}
}
?>
[1] menu system đã làm sắn chuyện này rồi mà?
[2] có thể sử dụng drupal_set_message ()
(2) Ở form setting, nên cho phép người dùng upload lên tập tin cấu hình của J luôn cho tiện.
(3) Dòng này hơi ngộ:
<?phpif (strpos($line, 'require') === FALSE) {
// ...
}
?>
Sao không dùng preg_match để chính xác hơn? Tên CSDL/username/... có chứa require thì sao? Nếu có chức năng upload file config thì không cần sử dụng file tạm.
(4) "Tables to truncate" nên là một select field thì tiện hơn.
Chưa biết cấu trúc của J ntn nên không bàn tới phần dưới.
Thế Hồng
(1) lấy lại từ bản
(1) lấy lại từ bản đầu tiên viết cho D 4.6 nên nó vậy. Sẽ làm lại.
(2), (3): cái xử lí configuration.php còn nhiều bất cập, lẽ ra chỉ 4 lệnh preg_match là đọc được tất cả thông tin chứ chẳng cần include làm gì. Nhưng xét mức độ sử dụng không nhiều lắm (test: copy file config, làm thật: tự gõ user/pass) nên tạm để đó, dành thời gian việc khác.
(4) cũng tạm để đó, vì thực ra yêu cầu bản Drupal là bản cài mới, nên cái này cũng không cần (chỉ tiện khi test: convert nhiều lần). Sau này khi có khả năng convert trực tiếp lên bản Drupal có sẵn dữ liệu thì làm tiếp.
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
Góp ý #2
Code tổ chức sáng sủa, nhưng cần cải thiện nhiều để hoàn chỉnh.
(1) Nên sử dụng db_set_active () thay vì phải dùng biến kết nối CSDL riêng rồi sử dụng các hàm raw mysql_* ()
(2) writable ...
(3) _joomla2d_import_users (), đoạn này có vấn đề: chưa chắc user admin có UID là 1
<?phpif ($user['username'] == 'admin') {
// map to Drupal uid 1
$map[$user['id']] = 1;
}
else {
// ..
}
?>
(4) _joomla2d_import_articles ()
i. sử dụng drupal_clone instead of PHP raw clone (capabiliy PHP4 and 5)
ii. Phân teaser, chỉ cần chèn => dư dòng
<?php$node->teaser = empty($post['introtext']) ? node_teaser($node->body) : $post['introtext'];
?>
iii. Node ID không chỉ đơn giản đánh dấu bằng câu này
<?phpdb_query("ALTER TABLE {node} AUTO_INCREMENT=%d", $post['id']);
?>
Còn có bảng node_revision và sequences
(5) code đưa lên community thì nhớ đúng coding standard.
Thế Hồng
Trả lời
Thanks,
(1) ok, để xem lại sau
(2) không hiểu ? phần check thư mục module xem có tạo được file tạm không ? Nếu đúng thì nó là bản cũ, bản gần đây tạo file tạm trong /tmp, và sau này thì sẽ không cần tạo file tạm mà dùng preg_match để đọc thông tin.
(3) uid 1 của Drupal là user có quyền cao nhất mà. Tương tự bên Joomla!, "admin" là user được tạo khi cài đặt (dù sau này có thể đổi username)
(4)
(i) ok. Lúc đầu cứ tưởng D6 dùng 5.0 còn D7 dùng 5.2, hóa ra D6 vẫn dùng 4.x
(ii) ok. Thực ra vẫn chưa nghiên cứu cách Drupal làm việc với teaser, cách tách teaser khi đọc/ghi một node (thực hiện trước hay sau node_save).
(iii) sequences đã ra từ từ phiên bản 6.x và thay bằng AUTO_INCREMENT rồi. revision thì không quan tâm, chỉ cần nid giữ nguyên là ok để đảm bảo các link kiểu http://www.thongtincongnghe.com/article/4821 không bị đổi. vid chỉ dùng nội bộ thôi.
(5) ok
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
Bạn có database mẫu
Bạn có database mẫu để mọi người test không?
Thế Hồng
Trong lúc gấp chỉ kịp
Trong lúc gấp chỉ kịp export db của TTCN cũ, xóa vài thông tin nhạy cảm, đổi tất cả mật khẩu thành 'password'. Tuy nhiên vẫn chưa chắc là không còn sót cái gì quan trọng quên xóa, nên sẽ gửi riêng cho TH test trước rồi 1-2 hôm nữa phổ biến rộng rãi sau.
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
1-2 hôm kéo dài ra cả
1-2 hôm kéo dài ra cả một tuần vì quên mất :P Đây là db mẫu, dùng cho mục đích duy nhất là test. Bạn cài đặt Joomla! 1.0.x vào, sau đó xóa db và import cái này vào là dược.
Download tại http://vn247.net/ttvt.sql.zip
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
Vừa bổ sung thêm phần
Vừa bổ sung thêm phần convert mosimage và keyword. Phần mosimage có lẽ làm đơn giản như vậy thôi, khi hiển thị sẽ dùng filter.
Đã test thêm với Joomla! 1.0.15 và Drupal 6.2. Hi vọng bạn nào đó test luôn với Joomla! 1.5.x thì tốt quá.
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
Một vấn đề quan
Một vấn đề quan trọng khi làm SEO là giữ nguyên url. Các bài viết dùng jos_content thì chuyển sang node id được rồi, còn nếu dùng các component khác, tự tạo bảng cho content của mình và được đánh id riêng (từ 1) thì làm sao đây ? Thí dụ ngoài các bài viết đánh số 1, 2, 3... còn có các gallery 1, 2...
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
Giải quyết nhanh bằng
Giải quyết nhanh bằng hai dòng rewrite url trong .htaccess; nếu bạn không rành thì có thể đưa 2 cấu trúc URL, TH thử giải quyết.
Thế Hồng
Bất cẩn, TH nhầm
Bất cẩn, TH nhầm rồi, đề nghị người dùng kích hoạt module path trước khi convert, chịu khó tạo alias cho mỗi trang như vậy.
Thế Hồng
Vừa về nhà, có net
Vừa về nhà, có net commit luôn bản mới nhất, nói chung đã dọn dẹp xong "rác" của các phiên bản cũ, sẵn sàng cho tính năng mới. Có thay đổi vài page callback nên cần cài đặt lại hoặc xóa cache.
http://svn.jcisio.net/wsvn/TTCN/
@FIXME:
Vấn đề dùng db abs layer của Drupal khi truy xuất db của Joomla!: chưa nghĩ cách nào để thay đổi $db_prefix một cách đơn giản. Đành ghi trực tiếp tên table không dùng {}.
@TODO:
(không quan trọng lắm)
- Convert thêm vài mambot đơn giản.
- Sẽ check các module (Path để tạo Alias, CCK cho các component khác nếu cần), cố gắng tự detect kiểu dữ liệu của SOBI2, tạo kiểu tương ứng trong CCK và convert.
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
Thành công trên Joomla 1.5.3
Đã convert từ Joomla 1.5.3 sang Drupal 6.2. Mọi việc đều tốt đẹp. Chân thành cám ơn jcisio
Bạn convert dùng phiên
Bạn convert dùng phiên bản nào thế :$ Cái SVN đang deploy mình chuyển sang private vì nó liên quan đến vài cái khác nữa. Dù sao cũng chúc mừng ! Làm xong site mới đưa mọi người xem nhé.
--
www.thongtincongnghe.com
Trang tin điện tử về CNTT, Viễn thông, Điện tử...
joomla to drupal
xin hỏi các bạn, mình là dân tay ngang, cũng đam mê web, mới biết làm joomla, nhưng bây giờ muốn chuyển bài vết từ web joomla sang web drupal, ko biết các bạn giúp dùm và hớng dẫn copy bài viết, mình chỉ cần copy bai viết thôi. tks!
có thể gửi về tại địa chỉ email
toan_dang78@yahoo.com
baitoan.com@gmail.com
joomla1 to drupal7
Tôi có thể thứ chuyển đổi từ joomla1 sang drupal7 nhưng không thành công
Nhưng chuyển từ joomla1 to drupal6 thì rất ok
bơm màng | bơm bánh răng | bơm chìm nước thải
Module convert content joomla to drupal
xài module này đi nhé bạn https://www.drupal.org/project/joomla