Подгрузка html в модуле на манер фреймворка

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

Аватар пользователя Кришпер Кришпер 6 мая 2018 в 20:45

Можно ли реализовать в друпале вызов представления(html-го) из роута на манер фреймворка?

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

Лучший ответ

Аватар пользователя Кришпер Кришпер 7 мая 2018 в 15:20

Не, всё-таки это решение мне больше по душе.

<?php  
 
return theme_render_template'\sites\all\modules\global_save_product\view-page-clone-tov.tpl.php'
[
'nodesVol' => $nodesVol 'nodes' => $nodes ] );
?>

Комментарии

Аватар пользователя bumble bumble 6 мая 2018 в 21:24
1

В итоге, выйдет что-то вроде:

<?php
function mymodule_menu() {
  return [
    
'path/to/page' => [
      
'page callback' => 'mymodule_my_page',
    ],
  ];
}
 
function 
mymodule_theme($existing$type$theme$path) {
  return [
    
'mymodule_my_themplate' => [
      
'variables' => [
        
'data' => NULL,
      ],
    ],
  ];
}
 
function 
mymodule_my_page() {
  
$data mymodule_get_my_data();
 
  return 
theme('mymodule_my_themplate', ['data' => $data]);
}
?>

В тему положите файл mymodule-my-themplate.tpl.php с нужным содержимым.

При необходимости - можно использовать препроцессор:

<?php
function mytheme_preprocess_mymodule_my_themplate(&$variables) {}
?>
Аватар пользователя Кришпер Кришпер 7 мая 2018 в 9:07

Спасибо большое. Хех... забавно даже, 2 года на друпале, а ток в последний месяц узнал скок же в нём возможностей, о которых просто статей нет или если и есть, то фиг знает где и вряд ли на русском.

Аватар пользователя Кришпер Кришпер 7 мая 2018 в 15:20

Не, всё-таки это решение мне больше по душе.

<?php  
 
return theme_render_template'\sites\all\modules\global_save_product\view-page-clone-tov.tpl.php'
[
'nodesVol' => $nodesVol 'nodes' => $nodes ] );
?>
Аватар пользователя fairrandir fairrandir 7 мая 2018 в 15:39
2

1. Жёсткий вызов theme_render_template не позволит переопределять файл в теме.
2. Свои кастомные модули, как правило, кладут в папку sites/all/modules/custom
3. При именовании своих модулей принято использовать какой-нибудь префикс, чтобы название не совпало с названием какого-нибудь контрибного модуля.
4. Куда-то не туда направление слэшей в пути до директории.

Аватар пользователя Кришпер Кришпер 7 мая 2018 в 15:54

Хорошие замечания, но дело в том, что у меня код выше и из примера статьи не сработал почему-то, хотя всё по инструкции вроде сделал. А направление слешей правильно, я проверил ф-цию, работает.