Skip to content

Instantly share code, notes, and snippets.

@pvmchau
Created August 29, 2012 04:13
Show Gist options
  • Save pvmchau/3506751 to your computer and use it in GitHub Desktop.
Save pvmchau/3506751 to your computer and use it in GitHub Desktop.
Drupal Learning Content

TABLE OF LEARNING CONTENT

  1. Chapter 1: Developing for Drupal 7 (Day 1)
    1. Introducing Drupal (for developers) (Day 1)
      1. Technologies that drive Drupal (Day 1)
        1. PHP
        2. Databases and MySQL
        3. HTML, CSS, and JavaScript
        4. Other technologies
        5. The web server
        6. The Operating System
    2. Drupal architecture (Day 1)
      1. Drupal core libraries
      2. Drupal hooks
      3. Drupal core modules
      4. The database
      5. The theme system
    3. Drupal's major subsystems (Day 1)
      1. Themes
      2. Menus
      3. Nodes
      4. Files
      5. Users
      6. Comments
      7. Fields and entities
      8. Forms API
      9. Simple test
      10. Blocks
      11. Other subsystems
    4. Tools for developing Drupal code (Day 2)
      1. Version control with Git and CVS
      2. The API site and coding standards
      3. Developer-oriented modules (Day 2)
        1. The developer module
        2. Drush (the Drupal shell)
        3. Coder
  2. Chapter 2: Creating Your First Module (Day 2)
    1. Our goal: a module with a block
    2. Creating a new module (Day 2)
      1. Module names
      2. Where does our module go?
      3. Creating the module directory
      4. Writing the .info file
      5. Creating a module file
      6. Source code standards
      7. Doxygen-style doc blocks
      8. The help hook
      9. The t() function and translations
    3. Working with the Block API (Day 2)
      1. The block info hook
      2. The block view hook
      3. The first module in action
    4. Writing automated tests (Day 2)
      1. Creating a test
        1. Starting out
        2. Writing a test case
        3. The basic pattern
        4. The getInfo() method
        5. Setting up the test case
        6. Writing a test method
  3. Chapter 3: Drupal's Theme Layer (Day 3)
    1. Business logic versus presentation logic (Day 3)
    2. Data granularity
    3. Theme engines
    4. Two ways to theme (Day 3)
      1. Theme functions
        1. Preprocess functions
        2. Theme overrides
      2. Template files The preprocess zoo
    5. Render elements (Day 3)
      1. Render properties
      2. hook_element_info
      3. hook_page_alter()
    6. The power of theme() (Day 3)
      1. Theme hook suggestions
    7. Theme registry (Day 3)
      1. Variable default values
      2. hook_theme
      3. hook_theme_registry_alter
  4. Chapter 4: Theming a Module (Day 4)
    1. Reusing a default theme implementation (Day 4)
      1. Drupal blocks revisited
      2. Theming a Drupal block
      3. Render element and a theme hook suggestion
      4. Creating a pre_render function
      5. Attaching CSS to render arrays
      6. RTL languages
    2. Steps to build a default theme implementation (Day 4)
      1. hook_theme() implementations
      2. Variables versus render element
      3. Preprocess functions
      4. Template files
  5. Chapter 5: Building an Admin Interface (Day 5)
    1. The User Warn module (Day 5)
    2. Starting our module
    3. The Drupal menu system (Day 5)
      1. Defining a page callback with hook_menu
      2. Using wildcards in menu paths
    4. Form API (Day 5)
      1. Using drupal_get_form()
      2. Building a form callback function
      3. Managing persistent data
      4. Form submission process
      5. A shortcut for system settings
      6. A shortcut for confirmation forms
    5. Sending mail with drupal_mail() and hook_mail() (Day 5)
      1. Calling drupal_mail()
      2. Implementing hook_mail()
    6. The token system (Day 5)
      1. What are tokens?
      2. Implementing tokens in your text
  6. Chapter 6: Working with Content (Day 6)
    1. Why create your own entities (Day 6)
    2. The goal
    3. Bundles
    4. The Schema API
    5. Declaring our entity (Day 6)
      1. The entity declaration
      2. The entity controller
    6. Entity management (Day 6)
      1. Managing artwork types
      2. Adding artworks (Day 6)
        1. Adding new artwork
        2. Validation callback
        3. Submit callback
        4. Saving your artwork
        5. Handling revisions
      3. Viewing artworks (Day 6)
      4. Editing an artwork
  7. Chapter 7: Creating New Fields (Day 7)
    1. Our goal: a "dimensions" field
    2. How Field API works
    3. Creating our new field type (Day 7)
      1. Declaring the field
      2. Defining the field structure
      3. Defining empty
      4. Field settings
      5. Field validation
    4. Exposing fields to the Form API with widgets (Day 7)
      1. Declaring a widget
      2. Simple widget forms
      3. Complex widgets
    5. Using formatters to display our field (Day 7)
      1. Declaring a formatter
      2. Single-value formatters
      3. Complex formatters
    6. Managing non-Field fields (Day 7)
    7. Finding entities and fields
  8. Chapter 8: Drupal Permissions and Security (Day 8)
    1. Using user_access() to assert permissions
    2. Checking the proper user account
    3. Using hook_permission() (Day 8)
      1. Defining your module's permissions
      2. Writing hook_permission()
    4. Declaring your own access functions (Day 8)
    5. Responding when access is denied
    6. Enabling permissions programmatically
    7. Defining roles programmatically
    8. Securing forms in Drupal (Day 8)
      1. The Forms API
      2. Disabling form elements
      3. Passing secure data via forms
      4. Running access checks on forms
    9. Handling AJAX callbacks securely (Day 8) Using AJAX in forms Using AJAX in other contexts
  9. Chapter 9: Node Access (Day 9)
    1. Node Access compared to user_access() and other permission checks (Day 9)
      1. How Drupal grants node permissions
      2. The node_access() function (Day 9)
        1. The access whitelist
        2. Caching the result for performance
        3. Invoking hook_node_access()
        4. Access to a user's own nodes
        5. Invoking the node access API
      3. hook_node_access() compared to {node_access}
    2. Using hook_node_access() (Day 9)
      1. A sample access control module
      2. A second access control module
      3. View operations and access control modules
    3. When to write a node access module (Day 9)
      1. The {node_access} table and its role
      2. {node_access} table schema explained
      3. Defining your module's access rules
    4. Creating the role access module (Day 9)
      1. Using hook_node_access_records()
      2. Using hook_node_grants()
      3. Security considerations
      4. Rebuilding the {node_access} table
    5. Modifying the behavior of other modules (Day 9)
      1. Using hook_node_grants_alter()
      2. Using hook_node_access_records_alter()
    6. Testing and debugging your module (Day 9)
      1. Using Devel Node Access
      2. Using hook_node_access_explain()
      3. Using the Devel Node Access by user block
  10. Chapter 10: JavaScript in Drupal (Day 10)
    1. JavaScript inside Drupal
    2. Adding JavaScript (Day 10)
      1. Adding JavaScript and CSS files to .info files
      2. Using drupal_add_js() (Day 10)
        1. Adding JavaScript files
        2. Adding CSS files
        3. Passing variables from PHP to JavaScript
        4. Adding inline JavaScript
        5. Adding inline CSS
      3. Using the Library API (Day 10)
        1. Defining a library with hook_library
        2. Altering information in hook_library
      4. Using renderable arrays
    3. Altering JavaScript (Day 10)
    4. Altering CSS
    5. Drupal specific JavaScript (Day 10)
      1. Themeable presentation
      2. Translatable strings
      3. Behaviors
    6. AJAX helpers
      1. Adding AJAX to forms (Day 11)
      2. AJAX automatically applied
      3. AJAX commands (Day 11)
        1. ajax_command_after
        2. ajax_command_alert
        3. ajax_command_append
        4. ajax_command_before
        5. ajax_command_changed
        6. ajax_command_css
        7. ajax_command_data
        8. ajax_command_html
        9. ajax_command_prepend
        10. ajax_command_remove
        11. ajax_command_replace
        12. ajax_command_restripe
        13. ajax_command_settings
  11. Chapter 11: Working with Files and Images (Day 11)
    1. The Twitpic and watermark modules
    2. Files in Drupal (Day 11)
    3. File API (Day 11)
    4. Stream wrappers
      1. Creating a stream wrapper
    5. Images in Drupal (Day 11)
      1. Image API
      2. Image Styles
      3. Creating image effects
      4. Creating image styles from a module
  12. Chapter 12: Installation Profiles (Day 12)
    1. Introducing installation profiles (Day 12)
    2. Drupal distributions (Day 12)
      1. Setting up a distribution
      2. Standard and minimal profiles
      3. Creating a profile directory
      4. Profile modules and themes
    3. Creating profiles (Day 12)
      1. Enabling modules
      2. The install task system
      3. Choosing an install task or using hook_install
      4. Anatomy of an install task
      5. Creating a task
      6. Altering tasks
      7. Configuring blocks
      8. Variable settings
      9. Text filters
      10. Code placement
    4. Running the installer from the command line (Day 12)

LEARNING SCHEDULE

  1. The first week:
    1. Day 1: Cài đặt 1 site Drupal với các module cơ bản. Tìm hiểu các khái niệm chính.
    2. Day 2: Tìm hiểu về coding standards, git và drush, drush make.
    3. Day 3: Viết 1 module đơn giản, hiển thị thông tin người dùng hiện tại.
    4. Day 4: Tìm hiểu về theme, block và page.
    5. Day 5: Tìm hiểu về form và form api. tạo 1 page có form nhập liệu và 1 page hiển thị thông tin vừa nhập.
  2. The second week:
    1. Day 1: Tìm hiểu về Drupal DB và Entity.
    2. Day 2: Tìm hiểu và tạo mới 1 số content type và taxonomy.
    3. Day 3: Tìm hiểu về user permission và user_access().
    4. Day 4: Tìm hiểu về node_access().
    5. Day 5: Tạo ra 1 số trang listing và detail cho các content type ở trên. Sử dụng user_access và node_access để phân quyền.
  3. The third week:
    1. Day 1: Tìm hiểu về sử dụng javascript, js và css trong site.
    2. Day 2: Tìm hiểu về sử dụng ajax.
    3. Day 3: Tìm hiểu về tổ chức file và image trong site drupal.
    4. Day 4: Tìm hiểu về profile.
    5. Day 5: Tạo ra trang home_page, sử dụng block, template file để hiển thị thông tin. Sử dụng js để thêm 1 slide-show vào home page.
  4. The last week:
    1. Day 1:
    2. Day 2:
    3. Day 3:
    4. Day 4:
    5. Day 5:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment