[FIXED] Как темизировать ЗАГОЛОВОК представления (VIEWS) ?

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

Аватар пользователя olejonok olejonok 13 июля 2015 в 13:11

Добрый день.

%subj%

Контекстных фильтров нет.
Есть только раскрытые критерии фильтрации, которым я "скармливаю" параметры через URL.

Смотрел темы представления.
У основного модуля возможности начинаеются только с TITLE_PREFIX и далее по тексту.
Может HOOK какой есть ?

Я конечно могу все через $_GET все попробовать получить и куда-нть костыль засунуть, но это считаю неправильно.

Спасибо.

Комментарии

Аватар пользователя gun_dose gun_dose 13 июля 2015 в 14:30

Что именно подразумевается под темизацией? Сам заголовок сменить или настроить обёртки? Если сам заголовок, что через контекстные фильтры можно очень легко до него достучаться - написать код, какой нужен, а саму "контекстную фильтрацию" можно и не использовать.

Аватар пользователя olejonok olejonok 13 июля 2015 в 15:27

Ок.

Под темизацией я здесь понимал - ЕГО ИЗМЕНЕНИЕ в зависимости от того что передано в параметрах URL.

Еще раз напоминаю про то, что "Контекстных фильтров нет.".
Соответственно метод типа %1, %2 и т.д. здесь не участвует.

Пример:
URL: http://www.site.ru/list?t=fruits
В заголовке хотим видеть: "Список: фруктов"

URL: http://www.site.ru/list?t=fruits&f=fresh
В заголовке хотим видеть: "Список: свежих фруктов"

URL: http://www.site.ru/list?t=fruits&f=fresh&c=Spain
В заголовке хотим видеть: "Список: свежих фруктов из Испании"

p.s. "написать код, какой нужен, а саму "контекстную фильтрацию" можно и не использовать."
Вот это очень и очень интересно! н могли бы вы поподробнее объяснить свою мысль.

Если я ставлю контекстные фильтры, то они начинают играть свою роль в list/%/%
А мне нужен чистый list?t=fruits

Пока жду ответа, иду экспериментировать.

Спасибо.

Аватар пользователя gun_dose gun_dose 13 июля 2015 в 16:05

Критерий проверки выбрать пхп код. Там под окошком его ввода вот что написано

«Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be "$argument" and the view will be "$view". You may change the argument by setting "$handler->argument". You may change the title used for substitutions for this argument by setting "$handler->validated_title".»

Из гет-запроса можно вытянуть машинные имены таксономии или что там это у вас, подгрузить термин и взять его имя. Ну и в конце кода надо не забыть поставить ретурн тру.

Аватар пользователя gun_dose gun_dose 13 июля 2015 в 16:38

да, о нём самом. Не исключаю, что можно сделать каким-то другим способом, но как-то не попадались на глаза другие способы достучаться до заголовка (ну кроме написания своих модулей).

Аватар пользователя olejonok olejonok 13 июля 2015 в 16:50

Странно.

Создал один контекстный фильтр:
засунул в него:

<?php
$handler
->validated_title 'TEST TITLE';
return 
true;
?>

...ноль эмоций...
мимо него что-то все проходит..

Аватар пользователя olejonok olejonok 13 июля 2015 в 17:03

...туман проясняется. Похоже его в URL нет, поэтому, собственно, проверять этим куском PHP кода нечего.
Как-то не хочется в URL значение контекстного фильтра засовывать...

Как-то не хочется здесь усложнять от простого:
Путь: /list
до сложного (например)
Путь: /list/allvegetables

А без этого, похоже проверять нечего.
Есть мысли?

Если мы в VIEWS обозначим : Путь: /list/%
то при обращении к /list получим 404 ошибку. обмануть пока не получается.

Аватар пользователя olejonok olejonok 13 июля 2015 в 17:24

Стало интереснее :
1. Если в настройках контекстного фильтра укажем "Передать значение по умолчанию"
Далее,в разделе "Когда значение фильтра присутствует в URL или предоставляется по умолчанию"
2. Указываем : "Укажите критерии проверки" - > "PHP Код"
и туда закидываем удочку :

<?php$handler->validated_title = 'TEST TITLE';
dpm($handler);
return true;?>

То на готовой странице мы видим, что значение validated_title действительно = 'TEST TITLE'.
НО! К заголовку страницы это отношения НЕ ИМЕЕТ !
Оно осталось прежним.

Кхм...

Аватар пользователя olejonok olejonok 13 июля 2015 в 17:50

Забил я на эту свистопляску и сделал по простому:

<?php

function MYMODULE_views_pre_render(&$view) {
   if (
$view->name == '_db' && $view->current_display == '_list1') {
       
// здесь с  $_GET берем все что угодно 
           
..
       
// А здесь меняем заголовок
       
$view->build_info['title'] = t('Custom  title');
   }
 }

?>