Приветствую.
Дано:
Скрипт который выводит данные через темплейт 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;
?>
Целесообразно использовать этот метод в модуле Друпал или есть более "продвинутые", правильные варианты решения таких задач?
Ответы
Не очень понятно зачем вам шаблон tpl.php.
Кажется, правильнее в модуле собирать объект ноды и ее создавать. http://knackforge.com/blog/vishnu/programmatically-create-node-drupal-7 вот пример навскидку.
Мне кажется вам надо задачу общим планом описать. Зачем это делать и какой бизнес-процесс решать.
Если после посещения конкретной страницы что-то писать в базу, то это hook_menu для регистрации url, и генерация объекта для node и node_save(). Или hook_view если вам надо что-то делать после просмотра страницы. Чтобы не гадать лучше подробнее описать задачу.
Также не помечено для какой версии drupal, предполагаю что вы про D7.
Если код прожорливый, но статичный (Например меню), можно скриптом создавать блок с html.
Есть скрипт, который выполняет задачу, загружает данные и выводит через темплейт.
Модуль должен при "нажатии" сгенерировать, создать кучу нод с данными из этого темплейта (ну там пара параметров отличается).
В каком виде в темплейте отображаются данные я показал.
Эти переменные в шаблоне (если все написано правильно) , берутся из 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