Взываю к голосу коллективного разума.
Имеется view с 2мя tab в ней (Лучшие посты, Все посты)
Для каждой из tab я могу назначить, через интерфейс view, название tab
Мне нужно как-то программно переопределить при генерации страницы назначенное имя "Лучшие посты" на "Лучшие посты (+N)", где +N - вычисленное для конкретного пользователя количество новых для него постов.
Есть идеи, как это сделать?
Комментарии
Если безотносительно вычисления N, то заголовок можно поменять где-нибудь в hook_views_pre_render, что-то вроде
if ($view->name == 'view-i-want-to-change') {
$view->display_handler->set_option('title',t('My new title'));
}
}
Спасибо за совет, только пока не соображу как его применить.
В приведенном вами примере меняется только заголовок View, а у меня-то tab и его заголовок. ( Торможу вторые сутки
Вот что получается:
//вот это выводит название для tab просто отдельно
print ($view->display['page_1']->handler->options['menu']['title']);
if ($view->name == 'posts') {
// а вот это не устанавливает название tab в то значение, которое нужно!!!
$ttt = "new title!!!!!";
$view->display['page_1']->handler->options['menu']['title'] = $ttt;
}
}
В чем моя ошибка?
Попробуйте вместо ['menu']['title'] подставить ['tab_options']['title'].
В отладочном print выводит старое название tab, в изменяющем блоке - не меняет.
Может, нужно добавить еще какую-то команду модификации view или описать это в другом hook-е?
Стоп. Кажись сообразил. Вьюс же эти табы через систему меню регистрирует, попробуйте в hook_menu_alter свой коллбэк предложить.
[это лишний пост]
Удалось ли решить?
Мой неудачный метод был добавления нового аргумента "Global: Null" > Action to take if argument is not present: Provide default argument > PHP code:
return TRUE;
и Validator: PHP code:
$handler->options['menu']['title'] = 'Test';
}
return TRUE;
Этот метод отлично работает толъко с Views Title
(options['title'])
, но не с Menu Title(options['menu']['title'])
.