Presentation is loading. Please wait.

Presentation is loading. Please wait.

Drupal Dev 我想知道:什么时候、什么变化.

Similar presentations


Presentation on theme: "Drupal Dev 我想知道:什么时候、什么变化."— Presentation transcript:

1 Drupal Dev 我想知道:什么时候、什么变化

2 Path--Content--Theme
*很简单 *很灵活 *你了解了吗

3 /index.php?q=user/1 *user/% (% wildcard) *$_GET[‘q’] *arg()
*url_alias (多语言解决方案) *$_GET[‘q’] 不识庐山真面目

4 Menu System *input: path(user/%) *output: $content
*a path, a menu item, a content 必须的 True(200 OK) Path -> Access_Callback -> Page_Callback -> $content False(403 Forbidden) Path -> Access_Callback -> $content False(404 Page Not Found) Path -> $content

5 Menu System *官方文档 node/102338 *hook_menu
title、title callback、page callback、access callback、file *menu_router path、load functions、access_callback、page_callback、file、title、fit *menu_set_active_item() *menu_execute_active_handler()

6 q=user/% => page_callback
*$_GET[‘q’] 用户请求、表达用户意愿 *一个path有且只有一个menu item *由load_functions将%转成对象 *由access_callback决定访问权限 *由page_callback返回$content *由theme($hook = ‘page’)输出页面内容 $content $blocks $menu $link … *好吧theme()复杂,苦涩,强大

7 q=user/% => page_callback
3 4 user_view() 5 一般arg(0)是module名称 找到page_callback (user_view) 就知道$content

8 theme() 1 theme() 一切输出尽出于此 2 hook_theme 3 _theme_process_registry()
4 #module#_theme *$hook_theme[$hook][‘template’] *$hook_theme[$hook][‘function’] 5 render_function、preprocess_function、$suggesionts、

9 hook_theme 1 function 2.template 'user_signature' => array(
'arguments' => array('signature' => NULL), ) *总能在user.module.php或者user.pages.inc找到函数theme_user_signature($signature = NULL) *函数theme_user_signature($signature)返回值,就是theme(‘user_signature’)要返回的值 2.template 'user_profile' => array( 'arguments' => array('account' => NULL), 'template' => 'user-profile', 'file' => 'user.pages.inc', *user_theme() *arguments 会被合入到$variables *template: 在user模块目录,总能找到文件user-profile.tpl.php文件,文件内容就是theme(‘user_profile’)要输出的内容 *file指定了需要include的文件.

10 theme (template) 1 hook_theme_info 2 有一个与之对应的*.tpl.php
3 *.tpl.php可用到的变量存放在$variables 4 $variables变量由preprocess functions推送 5 默认的render函数theme_render_template 6 $hook_theme_info[‘template’]指定模板文件

11 Preprocess function order
*node/ 已指出 *template_preprocess *template_preprocess_hook Template > Module Name > Theme Engine Name(phptemplate) > Theme Name(garland)

12 theme(‘page’, $pc_rtn)
* index.php * hook是page * $pc_rtn 是page_callback函数返回值 * hook_theme_info ($hook = ‘page’) template:page path:themes/garland include files: type:theme_engine theme path:themes/garland arguments:,1,1 theme paths:modules/system,themes/garland Preprocess functions: template_preprocess template_preprocess_page phptemplate_preprocess_page

13 theme (‘page’) * 一个页面调用theme()次数

14 跟踪theme()调用 *page_callback() 有可能调用 *index.php 有且只调用一次theme(‘page’)
*template_preprocess() 没有调用 *template_preprocess_page() 调用多次 *phptemplate_preprocess_page() 调用多次

15 $variables * theme_render_template() * var_dump($variables) * 更好的办法

16 Edit Theme *条件 * page.tpl.php * page.tpl.php会调用哪些theme()
* theme()通过function还是template输出 * template对应的*.tpl.php文件 * *.tpl.php中使用了哪些变量 *方法 * #theme_name#_#hook_name# * css & js * *.tpl.php * 重写 theme() function & template

17 Q & A QQ:


Download ppt "Drupal Dev 我想知道:什么时候、什么变化."

Similar presentations


Ads by Google