Drupal 7 模块开发 建立模块 第一个页面(hook_menu)_html/css_WEB-ITnose
建立模块请参考 《Drupal 7 模块开发 建立》
如果你要支持中文,文件格式必须保存为 UTF-8,NO BOM
------------------------------
hook_menu 定义菜单项和页面反馈。
我们要用自己模块名替换 hook。在这里我们建立一个 my_first_module_menu() 在 my_first_module.module文件里
<?phpfunction my_first_module_menu() { $items = array(); $items['mypage'] = array( 'title' => '第一个模块 ?? 页面', //菜单项的名称 'description' => '我的第一个模块页面', //当鼠标移动到菜单项,显示菜单的说明 'page callback' => 'my_page_view', //产生页面内容 'access callback' => TRUE, //所有人都能访问 'type' => MENU_NORMAL_ITEM, //菜单项显示类型 ); return $items;}function my_page_view() { $output = t('这是模块做的第一个页面。'); return $output;}
注意:结尾不要写 ?>
清空Cache,然后访问 http://www.mysite.com/?q=mypage ,会看到下图
(事实上,这时你访问任何 http://www.mysite.com/?q=mypage/aaa/bbb 都会访问到这个page)
$items[] 路径
每一个$items都是对应一个路径,写在 [ ] 里。当item用一样路径时候,就调用后写那个$items的。(有文章说和$items里参数weight有关,我测试weight不会影响先后次序)
[ ] 里也可以用通配符,譬如: [node/%/edit]。详细参见:function hook_menu 里的Wildcards in Paths一段
title 必须
未翻译的主题
title callback
产生主题的函数。默认是 t()。如果你不想翻译,就设置FALSE (所以我们不必再写 'title' => t('第一个表单'))
title arguments
传递到 t() 或者 你自定义函数 的参数。可以和路径组件结合
参考:Menu item title and description callbacks, localization
description
未翻译的说明描述。
page callback
当用户访问页面路径的时候,调用一个显示网页的函数。
如果不写,父菜单的回调函数将代替执行。也就是说 $items['mypage'] 和 $items['mypage/child'] 会执行一样内容。
有一个特别回调函数 drupal_get_form(),这个将在后面 Drupal 7 模块开发 建立、验证、提交表单(Form) 具体讲
page arguments
传递给 page callback 函数的一串参数数组,上面例子没用用到,我们稍加修改:
‘hello' 作为一个常量传给 $arg1
1 表示路径mypage后面第一层:当你访问 mypage/1/edit 时候,返回就是 1;如果你访问 mypage/world/edit,返回就是world
修改后,完整代码如下:
<?phpfunction my_first_module_menu() { $items = array(); $items['mypage/%/edit'] = array( //修改路径 'title' => '第一个模块 ?? 页面', 'description' => '我的第一个模块页面', 'page callback' => 'my_page_view', 'page arguments' => array('hello', 1), //添加参数 'access callback' => TRUE, 'type' => MENU_NORMAL_ITEM, ); return $items;}function my_page_view($arg1, $arg2) { //添加参数传递 $output = t('这是模块做的第一个页面。'); $output .= '<br />' . $arg1 . ' ' . $arg2; //打印参数 return $output;}
清空Cache,然后访问 http://www.mysite.com/?q=mypage/world/edit ,会看到下图
access callback
如果有访问这页权限,就要返回TRUE,否则就FALSE(如果不写,默认是FALSE)。如果false,页面就会出现 Access denied 提示。
type
描述菜单项属性的代码。许多快捷代码的常量在 menu.inc 里。
我们这里用了默认项 MENU_NORMAL_ITEM,所以$items里可以不写 'type' => MENU_NORMAL_ITEM,
常用几种:
想深入了解,可以打开目录下 /modules/menu/menu.modules文件,然后结合http://www.yoursite.com/?q=admin/structure/menu/manage/navigation,帮助你了解
menu_name
如果你不要把这个菜单项放在Navigation下,就可以在这里指定。譬如:'menu_name' => 'main-menu',这样就会和Home一起出现在主菜单上
(更多参数,慢慢完善)
??

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

公众号网页更新缓存,这玩意儿,说简单也简单,说复杂也够你喝一壶的。你辛辛苦苦更新了公众号文章,结果用户打开还是老版本,这滋味,谁受得了?这篇文章,咱就来扒一扒这背后的弯弯绕绕,以及如何优雅地解决这个问题。读完之后,你就能轻松应对各种缓存难题,让你的用户始终体验到最新鲜的内容。先说点基础的。网页缓存,说白了就是浏览器或者服务器为了提高访问速度,把一些静态资源(比如图片、CSS、JS)或者页面内容存储起来。下次访问时,直接从缓存里取,不用再重新下载,速度自然快。但这玩意儿,也是个双刃剑。新版本上线,

本文讨论了使用HTML5表单验证属性,例如必需的,图案,最小,最大和长度限制,以直接在浏览器中验证用户输入。

本文展示了使用CSS为网页中添加有效的PNG边框。 它认为,与JavaScript或库相比,CSS提供了出色的性能,详细介绍了如何调整边界宽度,样式和颜色以获得微妙或突出的效果

本文讨论了html&lt; datalist&gt;元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

本文讨论了HTML&lt; meter&gt;元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了&lt; meter&gt;从&lt; progress&gt;和前

本文解释了HTML5&lt; time&gt;语义日期/时间表示的元素。 它强调了DateTime属性对机器可读性(ISO 8601格式)的重要性,并在人类可读文本旁边,增强Accessibilit

本文讨论了HTML&lt; Progress&gt;元素,其目的,样式和与&lt; meter&gt;元素。主要重点是使用&lt; progress&gt;为了完成任务和LT;仪表&gt;对于stati
