Example: Theming

Same name in other branches
  1. 3.x modules/theming_example/theming_example.module \theming_example
  2. 7.x-1.x theming_example/theming_example.module \theming_example

Example of Drupal theming.

The theming_example module attempts to show how module developers can add theme functions to their projects so that themes can modify output.

Module developers should to strive to avoid hard-wiring any HTML into the output of their code, this should all be done in theme functions.

Starting with the first example, function 'theming_example_page()': the output is put into an array $content which is then fed to a theming function 'theme_theming_example_content_array()' which loops over the content, wrapping it in html in the process.

In order to get function 'theme_theming_example_content_array()' recognized it needs to be registered with the module theme register function of the type 'hook_theme'.

function 'theming_example_theme()' does this for this module. for details of what can be done in this hook see the link to api.drupal.org

The functions 'theming_example_list_page()' and theming_example_order_form() work in the same way.

In 'theme_theming_example_list_page()' the content is themed as an ordered list and given a class attribute 'theming_example_mylist' which is defined in theming_example.css

In function 'theme_theming_example_order_form()' the title is loaded into a temporary variable '$title', deleted from the $form array and output wrapped in html. The rest of the form is wrapped in a div using '#prefix' and '#suffix'

The theming functions can be copied to a theme's template.php, renaming appropriately, so if your theme is called 'mytheme' you would copy function 'theme_theming_example_content_array()' to function 'mytheme_theming_example_page()' in template.php and it will be used instead of the original.

The fourth example shows the use of a template file 'theming_example_text_form.tpl.php' This file can be copied to a theme's folder and it will be used instead.

This example also shows what can be done using Drupal's template_preprocess_HOOK method. In this case it modifies the output so that a themer can output the whole form or gain control over some of its parts in the template file.

Parent topics

File

modules/theming_example/theming_example.module, line 17

Functions

Title Sort descending File name Summary
theming_example_form_alter modules/theming_example/theming_example.module Implements hook_form_alter().
theming_example_menu modules/theming_example/theming_example.module Implements hook_menu().
theming_example_preprocess_form_element_label modules/theming_example/theming_example.module Implements hook_preprocess_HOOK().
theming_example_theme modules/theming_example/theming_example.module Implements hook_theme().