Module mẫu: rss_footer
Ở 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ấu trúc thư mục và tập tin:
./sites/all/modules/ ./sites/all/modules/rss_footer/ ./sites/all/modules/rss_footer/rss_footer.info ./sites/all/modules/rss_footer/rss_footer.module
- Các hàm Drupal API sử dụng: hook_perm(), hook_menu(), 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
/*
* Đây là hàm mở rộng từ hook_perm()
*/
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
/*
* 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()
*/
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
/*
* Mở rộng của hook_submit()
*/
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
/*
* Mở rộng của hook_nodeapi()
*/
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;
}
}
?>
Unsigned version
10 weeks 2 days ago
10 weeks 6 days ago
11 weeks 2 days ago
11 weeks 3 days ago
12 weeks 4 days ago
13 weeks 19 hours ago
13 weeks 5 days ago
14 weeks 4 days ago
14 weeks 4 days ago
15 weeks 5 days ago