Изменение текста в tab, созданной views. Как?

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

Аватар пользователя E.L. E.L. 23 апреля 2010 в 14:57

Взываю к голосу коллективного разума.

Имеется view с 2мя tab в ней (Лучшие посты, Все посты)
Для каждой из tab я могу назначить, через интерфейс view, название tab

Мне нужно как-то программно переопределить при генерации страницы назначенное имя "Лучшие посты" на "Лучшие посты (+N)", где +N - вычисленное для конкретного пользователя количество новых для него постов.

Есть идеи, как это сделать?

Комментарии

Аватар пользователя graker graker 23 апреля 2010 в 15:29

Если безотносительно вычисления N, то заголовок можно поменять где-нибудь в hook_views_pre_render, что-то вроде

function MYMODULE_views_pre_render(&$view) {
  if ($view->name == 'view-i-want-to-change') {
    $view->display_handler->set_option('title',t('My new title'));
  }
}
Аватар пользователя E.L. E.L. 26 апреля 2010 в 12:38

Спасибо за совет, только пока не соображу как его применить.
В приведенном вами примере меняется только заголовок View, а у меня-то tab и его заголовок. ( Торможу вторые сутки Sad

Аватар пользователя E.L. E.L. 26 апреля 2010 в 14:08

Вот что получается:

function hcpostcard_views_pre_render(&$view) {
  //вот это выводит название для 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;
  }
}

В чем моя ошибка?

Аватар пользователя E.L. E.L. 27 апреля 2010 в 7:14

graker wrote:
Попробуйте вместо ['menu']['title'] подставить ['tab_options']['title'].

В отладочном print выводит старое название tab, в изменяющем блоке - не меняет.
Может, нужно добавить еще какую-то команду модификации view или описать это в другом hook-е?

Аватар пользователя graker graker 27 апреля 2010 в 8:08

Стоп. Кажись сообразил. Вьюс же эти табы через систему меню регистрирует, попробуйте в hook_menu_alter свой коллбэк предложить.

Аватар пользователя berezin berezin 27 июня 2011 в 3:27

Удалось ли решить?
Мой неудачный метод был добавления нового аргумента "Global: Null" > Action to take if argument is not present: Provide default argument > PHP code:
return TRUE;
и Validator: PHP code:

if( $argument) {
  $handler->options['menu']['title'] = 'Test';
}
return TRUE;

Этот метод отлично работает толъко с Views Title (options['title']), но не с Menu Title (options['menu']['title']).