Как к программно созданной ноде прикрутить тему оформления?

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

Аватар пользователя engenes engenes 10 ноября 2018 в 19:57

сделал следующее

мой мой модуль


<?php
<?php
    
function calculator_menu() {
      
$items['calculator'] = array(
        
'page callback' => 'calculator',
        
'access callback'=> true
      
);
      return 
$items;
    }
    function 
calculator() {
        return 
theme('calcForm');
    }
    function 
calculator_theme() {
      return array(
'calcForm' => array('template' => 'calculator'));
    }

?>

создал файл calculator.tpl.php

моя тема

<?php
function моя_тема_preprocess_page(&$variables) {
    if(
count(arg())==&& arg(0) == 'calculator'){
        
$variables['theme_hook_suggestions'][] = 'page__calculator';
    }
}
?>

создал файл page--calculator.tpl.php
ссылка не поможет в этот раз.
хотелось бы по-русски понять что делать, какую функцию использовать,

шаблон для модуля подключил вставил туда тестовый html работает, код выводится на тестовой странице и от темы подтянулось верхнее меню. и блок в подвале

теперь хочу понять, как окружить этот шаблон уже включенной темой оформления. То есть чтобы весь этот html не существовал на белой странице
был не такой

а такой

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

Вопрос решен он содержит в себе исчерпывающий ответ. Проблема была в том, что файл page--calculator.tpl.php был пустым, поэтому все содержимое моего модуля выходило на белой странице, без окружения включенной темы

Лучший ответ

Комментарии

Аватар пользователя ivnish ivnish 10 ноября 2018 в 20:24

"шапка и футер" - это page* шаблоны. А для нод используется node* шаблоны.

Неважно как создана нода, программно или через админку, шаблон в обоих случаях создаётся одинаково

https://www.drupal.org/docs/7/theming/template-theme-hook-suggestions

Аватар пользователя engenes engenes 10 ноября 2018 в 21:46

сделал следующее

мой мой модуль

<?php
    
function calculator_menu() {
      
$items['calculator'] = array(
        
'page callback' => 'calculator',
        
'access callback'=> true
      
);
      return 
$items;
    }
    function 
calculator() {
        echo 
'привет';
    }
?>

моя тема

<?php
function моя_тема_preprocess_page(&$variables) {
    if(
count(arg())==&& arg(0) == 'calculator'){
        
$variables['theme_hook_suggestions'][] = 'page__calculator';
    }
}
?>

создал файл page--calculator.tpl.php
ссылка не поможет в этот раз.
хотелось бы по-русски понять что делать, какую функцию использовать,
как для созданной страницы создать файл с шаблоном: мой_модуль.tpl.php, в котором я смогу уже ваять каркас
а дальше как окружить этот шаблон уже включенной темой оформления. То есть чтобы весь этот html не существовал на белой странице

Аватар пользователя gun_dose gun_dose 10 ноября 2018 в 22:18
1

С помощью panels everywhere можно перекрыть страницу ноды нужного типа панелью, в которой не будет глобального футера, хедера и т.д.