Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
Upcoming SlideShare
Loading in...5
×
 

Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011

on

  • 2,563 views

 

Statistics

Views

Total Views
2,563
Slideshare-icon Views on SlideShare
1,345
Embed Views
1,218

Actions

Likes
1
Downloads
11
Comments
0

4 Embeds 1,218

http://camp11.drupal.ua 1209
url_unknown 6
http://translate.googleusercontent.com 2
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011 Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011 Presentation Transcript

    • Render API in Drupal7Shmaleniuk Nikolayn.shmaleniuk@gmail.com
    • Gold Sponsor ofDrupalCamp Kyiv 2011
    • Silver Sponsors ofDrupalCamp Kyiv 2011
    • Render API introductionRender API similar to the work of the Form API.1. The system collects an array which contains all the necessary data– Array data converted to html and displayed
    • Main hooks• hook_page_build add items to the page• hook_page_alter override the output of all page elements before output
    • dsm(hook_page_alter_data)
    • Render API theming• #theme - theme_function to be called• #arg_1, #arg_2 - arguments with prefix "#", necessary for the theme function
    • The advantages of using• One general system of generating output data• All html on the page, can be easily overridden by using a one hook• Reusability code. Reusability the menu callbacks or blocks for the their tasks (eg AJAX replies)• Caching
    • 3 types of element1. Standerd element, key #type (hook_element_info())2. Text data, key #markup3. Theme element, key #theme
    • Example, node.tpl.phprender(), show(), hide() <?php hide($content[comments]); hide($content[links]); print render($content); ?> <?php if (!empty($content[links])): ?> <div class="links"><?php print render($content[links]); ?> </div> <?php endif; ?> <?php print render($content[comments]); ?>
    • Example// Drupal 6.function my_module_show_same_items() { $items = array(item 1, item 2, item 3); $out = theme(item_list, $items); return $out;}// Drupal 7.function my_module_show_some_items() { $items = array(item 1, item 2, item 3); $build = array( items => array(#theme => item_list, #items => $items), ); return $build;}
    • Examplefunction theme_pager_link($variables) { $var_text = $variables[var]; $var_page_new = $variables[var_2];... }function my_module_show_some_text() { $item = array( items => array( #theme => pager_link, #var => some text, #var_2 => ..., ), ); return $item;}
    • The array keys Render API• #access - TRUE or FALSE• #type - str• #printed - TRUE or FALSE• #cache - array()• #theme - str• #theme_wrappers - array()• #pre_render - array()• #post_render - array()• #attached - array()• #prefix, #suffix - str
    • Sequence of actions drupal_render()1. Checking #access и #printed2. Checking the cache3. Loading the default item (if #type)4. Call #pre_render5. Call #theme6. Call #theme_wrappers7. Call #post_render8. Load attached recurses #attached (JS, CSS, etc.)9. If #cache set, the write cache10.return #prefix . $out . #suffix;
    • Attached recurses, JS/CSS files$form[#attached][css] = array( drupal_get_path(module, ajax_example) ./ajax_example.css,);$form[#attached][js] = array( drupal_get_path(module, ajax_example) . /ajax_example.js,);
    • Attached recurses, JS settings$settings = array(id => mymodule-element-1);$form[#attached][js][] = array( data => array(mymodule => $settings), type => setting,);
    • Attached recurses, http headerand library$form[#attached][drupal_add_http_header] = array( array(Content-Type, application/rss+xml; charset=utf-8),);$form[#attached][library][] = array(system, drupal.ajax);
    • Caching $build = array( items => array( #theme => item_list, #items => $items,#cache => array( keys => array(example, cache), bin => cache, expire => time() + $interval, granularity => DRUPAL_CACHE_PER_PAGE | DRUPAL_CACHE_PER_ROLE, ), ), );
    • Caching$items = module_load_item_list();$build = array( items => array( #theme => item_list, #items => $items, #cache => array( keys => array(example, cache), bin => cache, expire => time() + $interval, granularity => DRUPAL_CACHE_PER_PAGE | DRUPAL_CACHE_PER_ROLE, ), ),);
    • Caching$build = array( items => array( #theme => item_list, #pre_render => array( module_load_item_list), #items => array(), #cache => array( keys => array(example, cache), granularity => DRUPAL_CACHE_PER_PAGE, ), ),);function module_load_item_list(&$element) { $element[#items] = module_load_item_list();}
    • • Render Arrays in Drupal http://drupal.org/node/930760• Examples http://drupal.org/project/examplesShmaleniuk Nikolayn.shmaleniuk@gmail.com