1 / 17

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

Drupal Dev 我想知道 : 什么时候、什么变化. Path--Content--Theme *很简单 *很灵活 *你了解了吗. /index.php?q=user/1 *user/% (% wildcard) *$_GET[‘q’] *arg() * url_alias ( 多语言解决方案 ) *$_GET[‘q’] 不识庐山真面目. Menu System *input: path(user/%) * output: $content *a path, a menu item, a content 必须的 True(200 OK)

vianca
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 • 1 q=user/1 • 2 user/% • 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 • '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/223430 已指出 • *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’) • *theme()函数自己调用? • *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 • MSN:liaowq.box@gmail.com • QQ:913185402 • http://www.perfgeeks.com

More Related