drupal module 自定義

01php

<?php

function mytracer_menu() {
    $items = array();
    $items['admin/config/mytracer'] = array(
        'title' => 'My Tracer',
        'description' => 'MY tracer des',
        'access callback' => true,
        'page callback' => 'mytracer_admin',
    );
    return $items;
}
//全局變量的使用
function mytracer_admin() {
    global $base_path;
    global $base_url;
    global $user;

    $output = '';

    $output .='<p>'. $base_path . '</p>';
    $output .='<p>'. $base_url . '</p>';
    dpm($user);
    return $output;
}

 02 ,永久變量的使用html

function mytracer_admin() {
    
    //定義一個mytracer_setting1 爲10    
    $var1 = variable_get('mytracer_setting1', 10);
    $output = '';
    $output .= '變量'. $var1;

    //把mytracer_setting1值加1
    variable_set('mytracer_setting1', $var1+1);

    //刪除mytracer_setting1變量

    //variable_del('mytracer_setting1');
    return $mytracer_setting1;
}

 03 arg()函數的使用node

function mytracer_admin() {
  
  // 使用 arg() 函數實例,返回一個數組
  
  $args = arg(); 

  $output = ''; 
  $output .= '<p>Current url\'s arguments -> ' . implode(', ', $args); 

  $output .= '<p> arg(1) = ' . arg(1);  
  
  $output .= '<p> arg(1) in http://www.google.com/a/b/c = ' . arg(1, 'http://www.google.com/a/b/c'); 
  
  $output .= '<p> arg(1) in admin/config/mytracer = ' . arg(1, 'admin/config/mytracer'); 
    
  return $output; 
}

 04,drupal_set_messag()實例數組

function mytracer_admin() {
     global $user; 
  
  $s = format_string('User: "@username" has entered this page',
        array('@username' => $user->name)); 
  
  drupal_set_message($s); 
  drupal_set_message($s, 'status', false); 
  
  return ''; 
}

 05,t函數實例app

function mytracer_admin() {
     // 使用 t 函數示範  
  
  $txt = '<p style="color:red;">A String</p>'; 
  
  $output = ''; 
  
  // 如下這二個都叫作 title 的可翻譯字串,因為大小寫不一樣,其實是二個要翻譯的字串 
  
  $output .= '<p>' . t('Title');   
  $output .= '<p>' . t('title'); 
  
  //!號直接正常顯示
  $output .= '<p>' . t('use ! as a placeholder: !str', array('!str' => $txt)); 
  //@ % 過濾html顯示  % 斜線重點
  $output .= '<p>' . t('use @ as a placeholder: @str', array('@str' => $txt)); 
  $output .= '<p>' . t('use % as a placeholder: %str', array('%str' => $txt)); 

  
  return $output; 
}

 06,item_list()函數實例ide

/* mytraceer 模組的管理介面網頁 
 * 
 */
function mytracer_admin() {
  
  // 使用 theme() 函數,並使用 item_list 版型化  
  
  global $user; 
  
  $output = ''; 
  
  $output .= theme('username', array('account' => $user)); 
  
  
  /* 
   * 1. 這是簡單的寫法
   */
  $title = 'An Item List'; 
  
  $items = array(); 
  $items[] = 'this is line 1'; 
  $items[] = 'this is line 2'; 
  $items[] = 'this is line 3'; 

  // 使用 theme_item_list 時,須要三個資料 (items, title, type, attributes),利用 array 打包起來 
  $output .= '<p>' . theme('item_list', 
      array('items' => $items, 'title' => $title, 'type' => 'ol')); 


  /*
   * 2. 比較複雜的例子 
   *    第二列:增長了 class 與 id 
   *    第三列:增長了下一層的 list 
   */
  $items = array(); 
  $items[] = 'this is a line'; 
  $items[] = array('this is a line', 'class' => 'a-item', 'id' => 'line-2'); 
  $items[] = array('this is a line', 'children' => array('c1', 'c2', 'c3')); 
  
  // 使用 theme_item_list 時,須要三個資料 (items, title, type, attributes),利用 array 打包起來 
  $output .= '<p>' . theme('item_list', 
      array('items' => $items, 'title' => $title, 'type' => 'ul'));     


  /*
   * 3. 經常使用的方法
   *    準備一個 $items 的 array, 並將 list 的各種元素打包起來
   */
  
  // 變數 $items 我們準備提供給 theme('item_link, ...) 進行版型化的輸出
  // 在這裡並未指定它的 type, 所以使用預設的 ul (unordered list) 
  $items = array(
    'items' => array(
        l('Manage User Accounts', 'admin/people'), 
        l('Manage Modules', 'admin/modules'), 
        l('Manage MyTracer', 'admin/config/mytracer'), 
      ), 
    'title' => 'Useful Management Links',
    'attributes' => array('class' => 'management'),
  ); 
  
  
  // 這個 item_list 的例子,我們增長了 attributes 資料, 這個 attributes 是套用在 ul 或 ol 上面 
  $output .= '<p>' . theme('item_list', $items); 
    
  return $output; 
}

 07。使用 theme() 函數,並使用 table 的版型化 函數

/* mytraceer 模組的管理介面網頁 
 * 
 */
function mytracer_admin() {
  
  // 使用 theme() 函數,並使用 table 的版型化 
    
  $output = '';  
  
  /*
   * 1. 最簡單的 table 做法 
   */
  
  // table 要有 header, 若是某個欄位允許排序的話,要提供 'field' 屬性
  $header = array('col 1', 'col 2', 'col 3', 'col 4');
  
  
  // table 要有 row, 習慣上, 使用 $rows 變數, cell 中若是有其它屬性的話, 該 cell 以 array 方式來定義,
  // 並將相關屬性打包進來 
  $rows = array(
    array(
      'Cell 11', 'Cell 12', 'Cell 13', 'Cell 14'
    ),
    // Row with attributes on the row and some of its cells.
    array(
      'Cell 21', 'Cell 22', 'Cell 23', 'Cell 24'
    )
  );
  
  
  $items = array(
    'header' => $header, 
    'rows' => $rows, 
  ); 
  
  $output .= '<p>' . theme('table', $items); 
    
  
  /*
   * 2. 帶有屬性旳 table 做法 
   */
  
  // table 要有 header, 若是某個欄位允許排序的話,要提供 'field' 屬性
  $header = array('header 1', 'header 2', 'header 3', 'header 4');
  
  
  // table 要有 row, 習慣上, 使用 $rows 變數, cell 中若是有其它屬性的話, 該 cell 以 array 方式來定義,
  // 並將相關屬性打包進來 
  $rows = array(
    // Simple row
    array(
      'Cell 1', 'Cell 2', 'Cell 3', array('data' => 'Cell 4', 'class' => 'highlight')
    ),
    // Row with attributes on the row and some of its cells.
    array(
      'data' => array('Cell 1', 'Cell 2', array('data' => 'Cell 3,4', 'colspan' => 2)), 
      'class' => array('funky')
    )
  );
  
    
  $output .= '<p><p>' . theme('table', array('header' => $header, 'rows' => $rows)); 
  
  
  /* 
   * 3. 經常使用的做法
   */
  
  $output .= '<p>' . '<h3>General Table Usage</h3>';  
  
  $header = array('標題', '網址', '操做'); 
  
  
  // 一般, rows 會由資料庫讀取資料後, 一列一列排出來, 還沒有介紹讀取資料庫以前, 
  // 我們先使用簡單的一一填入方法  

  $rows = array(); 
  
  for ($i=1; $i<4; $i++) {
    $node = node_load($i);    // node_load(): 載入 id 為 $i 的內容節點
    
    $row = array();
    
    $row[] = $node->title; 
    $row[] = url('node/' . $i); 
    $row[] = l('編輯', 'node/' . $i . '/edit'); 
    
    $rows[] = $row; 
  }
  
  $output .= theme('table', array('header'=>$header, 'rows'=>$rows)); 

  return $output; 
}
View Code

 08.urlui

function mytracer_admin() {
  global $user; 
  
  $output = ''; 
  
  $output .= '<p>' . '1. user 2 的網址是 ' . url('user/' . 2);
  $output .= '<p>' . '2. 目前 user 的網址是 ' . url('user/' . $user->uid); 
  $output .= '<p>' . '3. 目前 user 的網址是 ' . url('user/' . $user->uid, 
      array('absolute' => true));
  $output .= '<p>' . '4. 指向 user 1 的絕對網址,並且提供參數: ' . url('user/1',
      array('absolute' => true, 'query' => array('key1' => 'this-value', 'key2' =>10)));
  $output .= '<p>' . '5. 指向 google 的外部連結: ' . url('http://www.google.com'); 
  $output .= '<p>' . '6. mytracer 模組的 help 說明在 ' . 
      url('admin/help', array('fragment' => 'mytracer'));
  $output .= '<p>' . '7. 最後, 比較複雜的 url 做法所獲得的結果:' . 
      url('user/' . $user->uid, 
          array('absolute' => true,
            'fragment' => 'part1',
            'query' => array('key1' => 'value1', 'key2' => 10),
          )
      );
  
  return $output; 
}
View Code

 09.watchdogthis

/* mytraceer 模組的管理介面網頁 
 * 
 */
function mytracer_admin() {
  
  // 使用 watchdog() 函數 
  
  global $user; 
  
  dpm($user); 

  watchdog('mytracer', 'current user is @username, id = @id', 
      array('@username' => $user->name, '@id' => $user->uid)); 
  
  watchdog('mytracer', 'current user is @username, id = @id', 
      array('@username' => $user->name, '@id' => $user->uid), WATCHDOG_NOTICE); 

  watchdog('mytracer', 'current user is @username, id = @id', 
      array('@username' => $user->name, '@id' => $user->uid), WATCHDOG_NOTICE,
      l('mytracer 管理', 'admin/config/mytracer')); 

  return ''; 
}
View Code

 10.hook_helpgoogle

function mytracer_help($path, $arg) {
  switch ($path) {
    case 'admin/settings/mytracer':
      return t('The administration menu module provides a dropdown menu arranged for one- or two-click access to most administrative tasks and other common destinations (to users with the proper permissions). Use the settings below to customize the appearance of the menu.');

    case 'admin/help#mytracer':
      $output = '';
      $output .= '<p>' . t('The administration menu module provides a dropdown menu arranged for one- or two-click access to most administrative tasks and other common destinations (to users with the proper permissions). Administration menu also displays the number of anonymous and authenticated users, and allows modules to add their own custom menu items. Integration with the menu varies from module to module; the contributed module <a href="@drupal">Devel</a>, for instance, makes strong use of the administration menu module to provide quick access to development tools.', array('@drupal' => 'http://drupal.org/project/devel')) . '</p>';
      $output .= '<p>' . t('The administration menu <a href="@settings">settings page</a> allows you to modify some elements of the menu\'s behavior and appearance. Since the appearance of the menu is dependent on your site theme, substantial customizations require modifications to your site\'s theme and CSS files. See the advanced module README.txt file for more information on theme and CSS customizations.', array('@settings' => url('admin/settings/admin_menu'))) . '</p>';
      $output .= '<p>' . t('The menu items displayed in the administration menu depend upon the actual permissions of the viewer. First, the administration menu is only displayed to users in roles with the <em>Access administration menu</em> (admin_menu module) permission. Second, a user must be a member of a role with the <em>Access administration pages</em> (system module) permission to view administrative links. And, third, only currently permitted links are displayed; for example, if a user is not a member of a role with the permissions <em>Administer permissions</em> (user module) and <em>Administer users</em> (user module), the <em>User management</em> menu item is not displayed.') . '</p>';
      return $output;
  }
}
View Code
相關文章
相關標籤/搜索