Как реализовать собственный шаблон tpl.php и вызывать его с помощью функции theme()

Так как только что сам искал подобное решение и в общем-то не нашел его, решил выложить на всеобщее обозрение собственное решение. Может быть, кому-то пригодится.

Сразу должен сказать, что поймут, пожалуй, только программисты drupal.

Есть некий модуль kontragent.module, реализующий работу с контрагентами (показ контрагента, добавление, изменение и пр.)
Задача: реализовать показ контрагента с помощью шаблона kontragent.tpl.php. В данном случае контрагент - это не тип материала, поэтому стандартные шаблоны типа node.tpl.php не подойдут.

Реализация по следующим пунктам:

  1. Регистрация функции темизации, которая будет использовать шаблон
  2. Создание шаблона kontragent.tpl.php
  3. Определение функции для показа контрагента kontragent_page($kon), $kon - переменная с данными контрагента

1. Ниже представлен код функции, которая регистрирует функцию темизации kontragent_view

Обратите внимание на элемент массива 'template', если его не указывать, тогда темизация перестоится на вызов функции, а в модуле придется написать функцию kontragent_kontragent_view($kon)


/**
* Регистрация функции темизации
* @return unknown_type
*/
function kontragent_theme() {
return array(
// название функции темизации
'kontragent_view' => array(
// указываем единственный аргумент с данными контрагента (укажите больше, если необходимо)
'arguments' => array('kontragent' => NULL),
// имя файла шаблона без .tpl.php
'template' => 'flagman_kontragent'
)
);
}

2. В каталоге нашего модуля создадим шаблон kontragent.tpl.php

Например, с таким содержанием:


<?php
// эта функция распечатывает все переменные, доступные в шаблоне
// drupal_set_message("".print_r(array_keys(get_defined_vars()), 1).'');
$kon = $variables['kontragent'];
?>

КОД:<?php print $kon['CODE'] ?>
Наименование:<?php print $kon['DESCR'] ?>

3. А теперь вызовем нашу функцию темизации, передав ей в качестве параметра данные контрагента.


/**
* Выдает страницу контрагента
* $kon - параметр с данными контрагента
* @return string
*/
function kontragent_page($kon) {
drupal_set_title($kon['DESCR']);
return theme('kontragent_view', $kon );
}

Под методологией осознают учение

Торчащие тренеры имеют высокой инициативой, проявленным ощущением новшества, недюжинным трудолюбием и нестандартным мышлением. Под методологией осознают учение о методах, совокупности методов и зачислений. Кроме того, тренер - учитель, не ведущий исследовательской произведения, сам ни в чем не колеблется и не научит колебаться остального. В более обширном резоне методология — это учение о принципах построения, формочках и методах научного знания. А тот, кто не замечает вопросов, едва ли умеет сообразовываться созидательной личностью.

Отправить комментарий

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
На этот вопрос следует ответить для того, чтобы понять, что вы действительно человек, а не СПАМ-робот.
Image CAPTCHA
Введите символы, изображенные на картинке.