drupal module 自定义
01
<?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 ,永久变量的使用
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()函数的使用
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函数实例
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()函数实例
/* 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;
}
08.url
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;
}
09.watchdog
/* 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 '';
}
10.hook_help
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;
}
}
drupal module 自定义的更多相关文章
- Filebeat Nginx Module 自定义字段
Filebeat Nginx Module 自定义字段 一.修改/usr/local/nginx/conf/nginx.conf中 log_format access '$remote_addr - ...
- drupal 8 ——自定义权限
在项目开发里面,我遇到了这么一个需求,就是对于node的title字段,编辑内容的角色不允许对title进行编辑.title字段是创建内容类型时自动生成的字段,不能在drupal8后台直接配置权限,所 ...
- Drupal Module Hooks
Drupal is a Content Management System. Drupal is also deeply, deeply weird. While systems like Magen ...
- Maven Archetype 多 Module 自定义代码脚手架
大部分公司都会有一个通用的模板项目,帮助你快速创建一个项目.通常,这个项目需要集成一些公司内部的中间件.单元测试.标准的代码格式.通用的代码分层等等. 今天,就利用 Maven 的 Archetype ...
- Drupal中自定义登录页面
通过覆写template定义新的user_login表单来为自定义登录页面.方法: 1. 本站使用的主题是Rorty.来到\sites\all\themes\rorty,打开template.php ...
- spring-boot-关于module自定义jar包打包无法给其他module使用
####世界大坑: 如果仅是使用 <build> <plugins> <plugin> <groupId>org.springframework.boo ...
- Drupal模块的安装方法
Drupal自身的安装很简单,新建一个数据库,然后根据安装提示一步一步做就OK了. 而Drupal可以通过安装各种模块来提供更多定制功能,这些模块的安装方法基本相同,一般来说,就是以下几步: 1) 从 ...
- Drupal Coder 模块远程命令执行分析(SA-CONTRIB-2016-039)
转载请注明文章出处:http://www.cnblogs.com/magic-zero/p/5787181.html 起初看到这个漏洞的时候是在exploit-db上边.地址在这里:https://w ...
- pytorch Containers的Module部分
参考:https://pytorch.org/docs/stable/nn.html Containers Module CLASS torch.nn.Module 所有神经网络模块的基类 你定义的模 ...
随机推荐
- hdu 4651 - Partition(五边形数定理)
定理详见维基百科....http://zh.wikipedia.org/wiki/%E4%BA%94%E9%82%8A%E5%BD%A2%E6%95%B8%E5%AE%9A%E7%90%86 代码如下 ...
- python 处理中文文件时的编码问题,尤其是utf-8和gbk
python代码文件的编码 py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码 ...
- 《Diagnostic use of facial image analysis software in endocrine and genetic disorders: review, current results and future perspectives》学习笔记
<使用面部图像分析软件诊断内分泌和遗传疾病:回顾,当前研究结果以及未来展望> Abstract 库欣综合征(CS)和肢端肥大症普遍是在发病后几年才能被诊断出的内分泌疾病.现在需要新的诊断方 ...
- GET和POST有什么区别?
前几天有人问我这个问题.我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用. 这个答案好像并不是他想要的.于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以 ...
- django CSRF token missing or incorrect
django 异步请求时提示403 按照一般情况权限问题,python文件没有问题,仔细看了下response里有一句 CSRF token missing or incorrect.这个肯定是因为安 ...
- tar-usage
tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...
- ROCK 聚类算法
ROCK (RObust Clustering using linKs) 聚类算法是一种鲁棒的用于分类属性的聚类算法.该算法属于凝聚型的层次聚类算法.之所以鲁棒是因为在确认两对象(样本点/簇)之间 ...
- Linux下的NFS配置(转)
http://rubyer.me/blog/1682/ 遇到的问题: 1.reason given by server: Permission denied 在服务器的/etc/export配置文件中 ...
- Node.js学习系列总索引
Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- ...
- 【UML】UML基础知识
UML简介 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件系统制品的文档. 它记录了对必须构造的系统的决定和理解,可用于对系统的理解. ...