Привет всем!
Есть блок вывода новостей. Как можно сделать что бы после вызова из базы, мы загрузили данные в tpl шаблон, вернуть и вывести в цикле?
Вопрос именно в том как подключить tpl.
Не, это темизация блока, это я умею
Мне нужно примерно тоже что и contacts.tpl.php
В одном блоке выводятся новости, новость нужно обернуть в tpl, это конечно можно и тупо в модуле сделать, но хотелось отделить php от html
Извлекаем все заголовки, тектс новости, даты, в цикле направляем данные в tpl.
Тоесть в блок block-news.tpl.php мы загружаем куча шаблончиков с новостями (так как это делается в MCV)
У вас есть шаблон block-news.tpl.php (правда он должен по идее называться block--news.tpl.php) там объявленны все переменные которые вы можете обрамлять тегами и назначать стили как хотите, в чем задача?
Хотя возможно вы хотите распотрашить переменную $content для более детального управления, тогда в корневом каталоге активной темы надо создать файл template.php а там реализовать хук ... а вот какой хук не знаю, но смотрел бы в сторону hook_preprocess()hook_preprocess_block() hook_process(), в любом случае он должен получать массив с данными блока и разметки до того как его отрендерели, вот с этим массивом и делайте что надо, надеюсь вам подскажут поточнее если что.
И дайте ссылку на это ваш модуль с новостями, я смотрю его среди дефолтных нет или он самописный блок/модуль?
Вы знакомы со структурой MCV?
В шестерке block-news.tpl.php
Блок эта такая штука в которой выводится разом хоть 5 хоть 50 новостей.
Каждая новость имеет например:
Хочу сделать так что бы у меня в блоке был файл tpl в который я бы загружал все данные для каждой новости.
Отделить php от html
Точно так же как файл node.tpl.php
Ох сорри, сорри, сорри, не заметил что речь о шестерке, ее не видел, сваливаю отсюда, правда по прежнему уверен что нужно потрошить $content блока чтобы в итоге получить нечто
вроде
все в том же шаблоне блока без подключения нового, а для этого нужно лезть в сторону template.php и хуки темы.
Но это все если тыкать пальцем в небо, удачи!
Комментарии
Оно?
п.с. админы, при вставке ссылки не вставляется текст ссылки (между тегами)
Не, это темизация блока, это я умею
Мне нужно примерно тоже что и contacts.tpl.php
В одном блоке выводятся новости, новость нужно обернуть в tpl, это конечно можно и тупо в модуле сделать, но хотелось отделить php от html
Тогда я пас, что-то тут все очень сложно для меня, не понимаю что значит
куда вернуть? в каком цикле?
где находится этот contacts.tpl.php? в папке modules есть папка contact, но там никаких шаблонов нет.
что это значит если это не значит темизировать блок новостей?
Извлекаем все заголовки, тектс новости, даты, в цикле направляем данные в tpl.
Тоесть в блок block-news.tpl.php мы загружаем куча шаблончиков с новостями (так как это делается в MCV)
У вас есть шаблон block-news.tpl.php (правда он должен по идее называться block--news.tpl.php) там объявленны все переменные которые вы можете обрамлять тегами и назначать стили как хотите, в чем задача?
Хотя возможно вы хотите распотрашить переменную $content для более детального управления, тогда в корневом каталоге активной темы надо создать файл template.php а там реализовать хук ... а вот какой хук не знаю, но смотрел бы в сторону hook_preprocess()hook_preprocess_block() hook_process(), в любом случае он должен получать массив с данными блока и разметки до того как его отрендерели, вот с этим массивом и делайте что надо, надеюсь вам подскажут поточнее если что.
И дайте ссылку на это ваш модуль с новостями, я смотрю его среди дефолтных нет или он самописный блок/модуль?
Вы знакомы со структурой MCV?
В шестерке block-news.tpl.php
Блок эта такая штука в которой выводится разом хоть 5 хоть 50 новостей.
Каждая новость имеет например:
<header>
.......
</header>
<div class="content">
........
</div>
<footer>
.........
</footer>
</div>
Хочу сделать так что бы у меня в блоке был файл tpl в который я бы загружал все данные для каждой новости.
Отделить php от html
Точно так же как файл node.tpl.php
Ох сорри, сорри, сорри, не заметил что речь о шестерке, ее не видел, сваливаю отсюда, правда по прежнему уверен что нужно потрошить $content блока чтобы в итоге получить нечто
вроде
<?php
foreach ($content['news'] as news) print '<div class="news"><div class="header">' . drupal_render($news['title']) . '</div><div class="content">' . drupal_render($news['content']) . '</div></div>';
?>
все в том же шаблоне блока без подключения нового, а для этого нужно лезть в сторону template.php и хуки темы.
Но это все если тыкать пальцем в небо, удачи!
там будет уже отрендеренный html код
потрошить надо в препроцессе
ну да, я это и имел в виду когда говорил про template.php и хуки темы (и все что с этим связано).