Ở bài viết này, tôi sẽ trình bày từng bước phát triển một module với chức năng khá đơn giản: thêm một chuỗi tùy biến ở dưới mỗi bản tin khi được xem ở dạng RSS.
- Tên của module:
rss_footer - Các cấu trúc thư mục và các tập tin:
/sites/all/modules/
******************/rss_footer/
*****************************/rss_footer.info
*****************************/rss_footer.module - Các hàm Drupal API sử dụng: [http://api.drupal.org/api/function/hook_perm/5|hook_perm], [http://api.drupal.org/api/function/hook_menu/5|hook_menu], [http://api.drupal.org/api/function/hook_nodeapi/5|hook_nodeapi]
1. Giới thiệu cho Drupal biết module
Mở tập tin rss_footer.info, thêm vào nội dung
name = "RSS Footer"
description = "Add customize text in the footer of RSS item.";
package = "Andy"
version = "5.x-1.x-dev"2. Định nghĩa quyền hạn
Module của chúng ta sẽ có một quyền hạn, với tên là rss_footer-admin (điều hành module rss_footer). Mở tập tin rss_footer.module, định nghĩa hàm sau:
<?php
/<em>
* Đây là hàm mở rộng từ hook_perm()
</em>/
function rss_footer_perm () {
return array('rss_footer-admin');
}
?>3. Định nghĩa các trang
Chúng ta sẽ định nghĩa trang điều hành của chúng ở ?q=admin/content/rss_footer, người truy cập trang này phải có quyền 'rss_footer-admin'. Mở tập tin rss_footer.module, định nghĩa hàm sau:
<?php
/<em>
* Hàm này là mở rộng của hook_menu()
* Khi tạo trang, Drupal sẽ gọi hàm drupal_get_form()
* với tham số truyền vào là mảng
* được trả về từ hàm rss_footer_admin()
</em>/
function rss_footer_menu () {
return array(
array(
'path' => 'admin/content/rss_footer',
'title' => t('RSS footer'),
'access' => user_access('rss_footer-admin'),
'callback' => 'drupal_get_form',
'callback arguments' => 'rss_footer_admin'
)
);
}
?>4. Định nghĩa thao tác xử lý
Khi người dùng xem trang ?q=admin/content/rss_footer, một form sẽ xuất ra. Hàm sau, được định nghĩa trong tập tin rss_footer.module, định nghĩa thao tác mà Drupal sẽ xử lý khi form được đệ trình (submit):
<?php
/<em>
* Mở rộng của hook_submit()
</em>/
function rss_footer_admin_submit($form_id, $form_values){
variable_set('rss_footer_content', $form_values['rss_footer_content'] );
drupal_set_message('Saved your rss footer content.', 'status');
}
?>5. Xử lý nội dung được trình bày ở bản tin RSS
Hàm sau, được định nghĩa trong tập tin rss_footer.module, thực hiện việc hàm nội dung tùy biến vào phía dưới của mỗi mẫu tin:
<?php
/<em>
* Mở rộng của hook_nodeapi()
</em>/
function rss_footer_nodeapi (&$node, $op, $a3 = null, $a4 = null) {
static $rss_footer_content;
if($op == 'rss item'){
if(!isset($rss_footer_content)){
$rss_footer_content = variable_get('rss_footer_content','');
}
$node->teaser .= "<br /><br />- - - - - - - - - - <br />".$rss_footer_content;
}
}
?>
Comments
Help me!
Hiện nay mình đang làm 1 project về thiết kế web trên drupla. Nhưng mình chưa biết gì về Drupal. Nhiệm vụ của mình là lập trình các chức năng xử lý về quản trị users trên website.Nói nôm na la phân quyền các users trên website cua mình.Vậy mình phải xử dụng module nào va lam như thế nào? Rất mong được sự giúp đỡ của mọi người! Thanks!
Có thể giúp mình qua email: congbangs2003@yahoo.com
Chào bạn nguyencongbang,
Chào bạn nguyencongbang, bạn vui lòng tạo chủ đề mới phù hợp hơn với thắc mắc của bạn.
--
Thế Hồng
Anh ơi, module này có thể áp
Anh ơi, module này có thể áp dụng được cho drupal 6 ko ạ, e đang học drupal 6 mà thấy cách viết module của nó khó hiểu quá
thiet bi lam lanh, thiet bi y te, chau rua inox