Темизация блока, свой HTML

Аватар пользователя skit25 skit25 5 июня 2012 в 4:46

Здравствуйте!

Темизирую вывод блока. Нужен полностью свой HTML, перекопал все переменные, не могу понять как достать не обработанные поля.
Блок собираю через Views.

Пробовал:

  1. Темизировать шаблон Views - нет нужных переменных
  2. views-view-field--comment-count.tpl.php - нужно взять число комментариев и сделать ссылку на форму добавления.
    А я могу лишь обернуть готовый вывод.

  3. Template.php - нет нужных переменных
  4. Больше всего нашел в preprocess_html. Хорошо, я вытащил тело ноды, обрезал, поставить ссылку уже не получится, т.к. она будет не ЧПУ. В общем-то и все остальное тоже. Сейчас я достал ноду, но блоков много, я не могу свести вместе блок и ноду на этом этапе, т.е. у меня бдут темизированны все блоки, проверку на регион сделать не получается, т.к. это другой массив
    Городить классы во Views не вариант, во первых потому, что у меня вывод делиться на две части, во вторых классы друпала и views мне просто не нужны
    Использовать регулярные выражения тоже не вариант

Я ищу, где можно достать поля и собрать собственный вывод. Если в массиве есть #markup уже собранный, значит где-то он собирается. Надеюсь в друпале есть возможность изменить сборку, думаю это хук, но не знаю с чего начать.

Может кто будет милостив?

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 5 июня 2012 в 9:15

"skit25" wrote:
Может кто будет милостив?

Полно вам...
Посмотрите сколько там разных шаблонов для перекрытия верстки вьюса есть..экспериментируйте.
В template.php думаю в данном случае лезть бесполезно.

Аватар пользователя skit25 skit25 5 июня 2012 в 10:22

Так, немного разобрался. Вот эта статья
Блок темизировал. Но я надеялся сделать проверку на регион и выводить разное оформление блока в зависимости от региона.
В template.php переопределил theme_views_view_fields(), блок выводится как нужно.
Но сперва я определил какой регион #_preprocess_block();
Теперь не могу разобраться как применить #_views_view_fields в зависимости от региона.

Шаблоны для перекрытия не пойдут, может я что делаю не правильно, но это первое.
Второе, почему шаблоны views не подойдут, мне не достаточно задать класс для поля или переместить его.
Я использую такой вывод

<ul>
<li>Несколько полей</li>
<li>Несколько полей</li>
Ссылки
</ul>

Почему-то я решил, что template.php предпочтительней, хотя бы потому, что мне не нужно возиться с шаблонами views, один раз задал вывод и использую его. Осталось только понять как правильно, это сделать.

Аватар пользователя Shok211 Shok211 5 июня 2012 в 10:55




<?php
views_embded_view
($view_name$args); // Вставить views на страницу
views_get_view($name);                // Получить view
$v views_get_view($name);           // Получаем view
// Получаем сформированный объект views со всеми полями
$v->pre_execute($args);              
if (
function_exists('krumo'))         // Просматриваем содержимое
    
krumo($v)                         // если стоит Devel
else                                  // Если не стоит devel
    
print_r("<pre>".print_r($vTRUE)."</pre>"); 
?>

Если этого не достаточно проходим по views_embded_view и ищем процесс формирования вывода

Аватар пользователя skit25 skit25 5 июня 2012 в 14:20

Спасибо мужики!
Сделал то же самое через темизацию views! Все переменные на месте Smile

Осталось не понятно, если вьюс предоставляет кучу шаблонов, не ужели template.php не такой гибкий?
Хотелось бы разобраться.

Спасибо!

П.С.: Еще раз спаисбо, всем кто не проходит мимо, вы и есть drupal. Если бы не было тех, кому не лень поднять свой уровень, ответить на вопрос или просто ответить, то никто бы не пользовался таким мощным CMF Drupal.
В друпале одна задача, реализуется десятками способов, без поддержки просто не обойтись, особенно по началу.