Module mau: rss_footer
O bai viet nay, toi se trinh bay tung buoc phat trien mot module voi chuc nang kha don gian: them mot chuoi tuy bien o duoi moi ban tin khi duoc xem o dang RSS.
- Ten cua module: rss_footer
- Cau truc thu muc va tap 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
- Cac ham Drupal API su dung: hook_perm(), hook_menu(), hook_nodeapi()
1. Gioi thieu cho Drupal biet module
Mo tap tin rss_footer.info, them vao noi dung
name = "RSS Footer" description = "Add customize text in the footer of RSS item."; package = "Andy" version = "5.x-1.x-dev"
2. Dinh nghia quyen han
Module cua chung ta se co mot quyen han, voi ten la rss_footer-admin (dieu hanh module rss_footer). Mo tap tin rss_footer.module, dinh nghia ham sau:
<?php
/*
* Day la ham mo rong tu hook_perm()
*/
function rss_footer_perm () {
return array('rss_footer-admin');
}
?>3. Dinh nghia cac trang
Chung ta se dinh nghia trang dieu hanh cua chung o ?q=admin/content/rss_footer, nguoi truy cap trang nay phai co quyen 'rss_footer-admin'. Mo tap tin rss_footer.module, dinh nghia ham sau:
<?php
/*
* Ham nay la mo rong cua hook_menu()
* Khi tao trang, Drupal se goi ham drupal_get_form()
* voi tham so truyen vao la mang
* duoc tra ve tu ham 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. Dinh nghia thao tac xu ly
Khi nguoi dung xem trang ?q=admin/content/rss_footer, mot form se xuat ra. Ham sau, duoc dinh nghia trong tap tin rss_footer.module, dinh nghia thao tac ma Drupal se xu ly khi form duoc de trinh (submit):
<?php
/*
* Mo rong cua 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. Xu ly noi dung duoc trinh bay o ban tin RSS
Ham sau, duoc dinh nghia trong tap tin rss_footer.module, thuc hien viec ham noi dung tuy bien vao phia duoi cua moi mau tin:
<?php
/*
* Mo rong cua 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;
}
}
?>