Пишем маленький модуль вывода списка пользователей в Drupal 7

test

Решил я начать свое знакомство с построением модулей в D7 с вывода списка пользователей.

Итак:

1) Создаем дирректорию нашего модуля:

 ../dp7_site/sites/all/modules/userlist

2) Файл с информацией о модуле внутри дирректории userlist.info, с содержанием:

; $Id$
name = UserList
description = List of users
package = Users
version = 0.1
core = 7.x

3) Файл с кодом нашего модуля:

<?php

//наш вывод ссылки в меню навигации
function userlist_menu()
{
    $items['userslist']=array( //userlist - наш url
    'title'=>t('Users List'),//Название ссылки
    'description'=>t('List of users'),//краткое описание ссылки
    'page callback'=>'userslist_form',//вызываемая ф-ция при переходе по ссылке userlist
    'access callback'=>'user_access',
    'access arguments'=>array('access content'),
    'type'=>MENU_NORMAL_ITEM
    );
    return $items;
}
//ф-ция отображения информации после перехода по ссылке
function userslist_form()
{
    $perpage = 10;
    $rows = array();
    //хедер нашей таблицы
    $header = array(
    array('data'=>'UID', 'field'=>'uid'),
    array('data'=>'Имя', 'field'=>'name'),
    array('data'=>'Был', 'field'=>'login'),
    array('data'=>'e-mail', 'field'=>'mail'),
    array('data'=>'Активен', 'field'=>'status'),
    array('data'=>'Подпись', 'field'=>'signature'),
    );
    //сам запрос, подробнее о нем api.drupal.org/api/drupal/includes--database--database.inc/function/db_select/7
    $nodes = db_select('users','usrs')
    ->fields('usrs', array('uid','name','login','mail','status','signature'))
    ->extend('PagerDefault')
    ->limit(10)
    ->extend('TableSort')
    ->orderByHeader($header)
    ->execute();
    
    $rows = array();
    foreach ($nodes as $node) //проходим по результату в цикле формируя таблицу
    {
        $rows[] = array(
        check_plain($node->uid),
        check_plain($node->name),
        format_date($node->login),//форматируем число в дату
        check_plain($node->mail),
        check_plain($node->status),
        check_plain($node->signature)
        );
    }
    //формирование и вывод таблицы с пейджером
    $output = theme('table', array('header'=>$header,'rows'=>$rows));
    $output .= theme('pager');

    return $output;
}

Все. Очень кратко получилось, но и достаточно просто. Дальше будет больше!

Категория: 

Делитесь с друзьями в социальных сетях! Оставляйте комментарии!

Share/Save

Это Вам так же может быть интересно!