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:

  1. ./sites/all/modules/
  2. ./sites/all/modules/rss_footer/
  3. ./sites/all/modules/rss_footer/rss_footer.info
  4. ./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

  1. name = "RSS Footer"
  2. description = "Add customize text in the footer of RSS item.";
  3. package = "Andy"
  4. 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;
  }
}
?>

The Hong