Вы здесь

Из темплейта в базу. Варианты?

0

Приветствую.

Дано:
Скрипт который выводит данные через темплейт show.tmpl.php (примерно)

<div><? echo $var->var1;?></div>
<div><? echo $var->var1;?></div>
?>

Темплейт большой.

Задача:
Написать модуль друпал, который создает контент с body = содержимое этого tmpl после того, как он обработался.
Ну, наподобие:

ob_start (); 
$cache = ob_get_contents();
ob_end_clean ();
echo $cache; 
?>

Целесообразно использовать этот метод в модуле Друпал или есть более "продвинутые", правильные варианты решения таких задач?

Версия Drupal: 
7.x
Категория: 
Node APITheming
Вопрос задан 28.06.2016 - 10:24
Аватар пользователя des
des
2

Ответы

0

Не очень понятно зачем вам шаблон tpl.php.

Кажется, правильнее в модуле собирать объект ноды и ее создавать. http://knackforge.com/blog/vishnu/programmatically-create-node-drupal-7 вот пример навскидку.

Мне кажется вам надо задачу общим планом описать. Зачем это делать и какой бизнес-процесс решать.
Если после посещения конкретной страницы что-то писать в базу, то это hook_menu для регистрации url, и генерация объекта для node и node_save(). Или hook_view если вам надо что-то делать после просмотра страницы. Чтобы не гадать лучше подробнее описать задачу.

Также не помечено для какой версии drupal, предполагаю что вы про D7.

Ответ дан 28.06.2016 - 10:55

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

Модуль должен при "нажатии" сгенерировать, создать кучу нод с данными из этого темплейта (ну там пара параметров отличается).

В каком виде в темплейте отображаются данные я показал.

Комментарий оставлен 28.06.2016 - 11:18

Эти переменные в шаблоне (если все написано правильно) , берутся из hook_theme или template_preprocess_page. Правильно на этом этапе взять данные и запустить генерацию нод.

Что почитать чтобы было понятнее:
- hook_theme и погуглить custom tpl.php template in module
- template_preprocess_page
- https://www.drupal.org/developing/modules/7
- entity metadata wrapper и entity api - http://xandeadx.ru/blog/drupal/549 . Писать в ноду проще будет.
- batch api для генерации большого кол-ва контента, http://xandeadx.ru/blog/drupal/395
- form api дабы сделать кнопку "сгенерировать", если она вам нужна. https://www.drupal.org/node/1419390

Комментарий оставлен 28.06.2016 - 11:41
0

Если код прожорливый, но статичный (Например меню), можно скриптом создавать блок с html.

Ответ дан 30.06.2016 - 08:56