Как с помощью кастомного модуля создать страницу с шаблоном и поместить вывести в него переменные, определенные в модуле.

Главные вкладки

Аватар пользователя engenes engenes 19 июня 2019 в 14:43

Создал страницу и подключил шаблон

<?php
<?
    function 
admin_calendar_menu() {
      
$items['admin_calendar'] = array(
        
'page callback' => 'admin_calendar',
        
'access callback'=> true
      
);
      return 
$items;
    }
    function 
admin_calendar() {
        return 
theme('yearcalendaer');
    }
    function 
frontpage_theme() {
      return array(
'yearcalendaer' => array('template' => 'admincalendar'));
    }

?>

Но как и где теперь в модуле определить переменные, чтобы они были доступны в шаблоне?
Например $five = 5;

Чтобы при обращении к этой переменной в файле шаблоне вывелась 5, а не ошибка?

Лучший ответ

Аватар пользователя bumble bumble 19 июня 2019 в 15:59
<?php
/**
 * Implements hook_theme().
 */
function mymodule_theme() {
  return [
    
'yearcalendaer' => [
      
'variables' => [
        
'five' => NULL,
      ],
    ],
  ];
}
 
function 
mymodule_wherever() {
  return 
theme('yearcalendaer', [
    
'five' => 5,
  ]);
}
?>

yearcalendaer.tpl.php


<?php print $five?>

Комментарии

Аватар пользователя Semantics Semantics 19 июня 2019 в 14:52
1

Но как и где теперь в модуле определить переменные, чтобы они были доступны в шаблоне?

Например, вот тут в круглых скобочках:
    function frontpage_theme() {

Аватар пользователя bumble bumble 19 июня 2019 в 15:59
<?php
/**
 * Implements hook_theme().
 */
function mymodule_theme() {
  return [
    
'yearcalendaer' => [
      
'variables' => [
        
'five' => NULL,
      ],
    ],
  ];
}
 
function 
mymodule_wherever() {
  return 
theme('yearcalendaer', [
    
'five' => 5,
  ]);
}
?>

yearcalendaer.tpl.php


<?php print $five?>
Аватар пользователя sas@drupal.org sas@drupal.org 20 июня 2019 в 9:40

Если использовать 'render element' в _theme например 'render element' => 'elements', то при использовании в билдере можно передовать через '#myVar' и не надо менять _theme для каждой новой переменной.