tpl для блока

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

Аватар пользователя Bezlepkin Bezlepkin 15 марта 2013 в 11:29

Привет всем!
Есть блок вывода новостей. Как можно сделать что бы после вызова из базы, мы загрузили данные в tpl шаблон, вернуть и вывести в цикле?
Вопрос именно в том как подключить tpl.

Комментарии

Аватар пользователя Bezlepkin Bezlepkin 15 марта 2013 в 11:56

Не, это темизация блока, это я умею Smile
Мне нужно примерно тоже что и contacts.tpl.php
В одном блоке выводятся новости, новость нужно обернуть в tpl, это конечно можно и тупо в модуле сделать, но хотелось отделить php от html

Аватар пользователя mialpet mialpet 15 марта 2013 в 12:29

Тогда я пас, что-то тут все очень сложно для меня, не понимаю что значит

"Bezlepkin" wrote:
Как можно сделать что бы после вызова из базы, мы загрузили данные в tpl шаблон, вернуть и вывести в цикле?

куда вернуть? в каком цикле?
"Bezlepkin" wrote:
Мне нужно примерно тоже что и contacts.tpl.php

где находится этот contacts.tpl.php? в папке modules есть папка contact, но там никаких шаблонов нет.
"Bezlepkin" wrote:
новость нужно обернуть в tpl

что это значит если это не значит темизировать блок новостей?

Аватар пользователя Bezlepkin Bezlepkin 15 марта 2013 в 13:04

Извлекаем все заголовки, тектс новости, даты, в цикле направляем данные в tpl.
Тоесть в блок block-news.tpl.php мы загружаем куча шаблончиков с новостями (так как это делается в MCV)

Аватар пользователя mialpet mialpet 15 марта 2013 в 17:01

У вас есть шаблон block-news.tpl.php (правда он должен по идее называться block--news.tpl.php) там объявленны все переменные которые вы можете обрамлять тегами и назначать стили как хотите, в чем задача?
Хотя возможно вы хотите распотрашить переменную $content для более детального управления, тогда в корневом каталоге активной темы надо создать файл template.php а там реализовать хук ... а вот какой хук не знаю, но смотрел бы в сторону hook_preprocess()hook_preprocess_block() hook_process(), в любом случае он должен получать массив с данными блока и разметки до того как его отрендерели, вот с этим массивом и делайте что надо, надеюсь вам подскажут поточнее если что.
И дайте ссылку на это ваш модуль с новостями, я смотрю его среди дефолтных нет или он самописный блок/модуль?

Аватар пользователя Bezlepkin Bezlepkin 15 марта 2013 в 19:51

Вы знакомы со структурой MCV?
В шестерке block-news.tpl.php
Блок эта такая штука в которой выводится разом хоть 5 хоть 50 новостей.
Каждая новость имеет например:

<div class="news">
  <header>
.......
  </header>
  <div class="content">
........
  </div>
  <footer>
.........
  </footer>
</div>

Хочу сделать так что бы у меня в блоке был файл tpl в который я бы загружал все данные для каждой новости.
Отделить php от html
Точно так же как файл node.tpl.php

Аватар пользователя mialpet mialpet 16 марта 2013 в 9:44

Ох сорри, сорри, сорри, не заметил что речь о шестерке, ее не видел, сваливаю отсюда, правда по прежнему уверен что нужно потрошить $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 и хуки темы.
Но это все если тыкать пальцем в небо, удачи!

Аватар пользователя drupby drupby 16 марта 2013 в 9:57

"mialpet" wrote:
нужно потрошить $content блока

там будет уже отрендеренный html код
потрошить надо в препроцессе

Аватар пользователя mialpet mialpet 16 марта 2013 в 10:00

"drupby" wrote:
потрошить надо в препроцессе

ну да, я это и имел в виду когда говорил про template.php и хуки темы (и все что с этим связано).