theme  →  Создаем свою тему вывода

published 21 July 2012

Для создания своей темы вывода контента в нашем модуле нам понадобиться объявить нашу тему воспользовавшись хуком hook_theme:

function example_module_theme ($existing, $type, $theme, $path) {
  return array(
       //Вариант 1 выводим все в шаблон
       'block_one' => array(
               //переменные которые будем передавать в шаблон
		'variables' => array('days' => NULL, 'link' => NULL, 'descrip' => NULL ),
                //имя шаблона без tpl.php
		'template' => 'event_block_field',
                //путь к шаблону
		'path' => drupal_get_path('module', 'example_module') . '/theme',
    ),
     //Вариант 2 выводим через функцию
    'block_two' => array(
                //переменные которые будем передавать в функцию
		'variables' => array('days' => NULL, 'link' => NULL, 'descrip' => NULL ),
    ),
  )
}

Наши темы объявлены создадим обработчики для них.

Для вывода в шаблон нам понадобиться создать тот самый шаблон. Создадим его в поддиректории theme нашего модуля (куда мы указали путь до нашего шаблона в объявлении) block_one.tpl.php

Для вывода через функцию создадим функцию:

function theme_block_two($variables) {
    $output = '';
    $output .= ''. $variables['days'] .'';
    $output .= ''. $variables['link'] .'';
    $output .= ''. $variables['descrip'] .'';
    $output .= '';
    return $output;
}

Для применения нашей темы вызовем функцию:

$output = theme('block_two', array('days' => $days, 'link' => $link, 'descrip' =>$descrip));

Чем удобна создание темы вывода контента? В темизации! Человек захотевший использовать ваш мега модуль не будет испытывать проблем с темизацией, если нужно он просто переопределит вашу функцию вывода в template.php или скопирует шаблон в папку своей темы и отредактирует как душе угодно.

Теги: theme hook_theme