[Решено] Несколько отображений pager на сайте?

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

Аватар пользователя semasping semasping 16 декабря 2010 в 16:50

Возможно ли отображение pager в двух разных видах.

Даже не самого пейджера, а его ссылок.

тобишь есть функция [ru-api=theme_pager_link]theme_pager_link[/ru-api]();
Я ее к себе в tempalate.php и настраиваю как хочу. Но.
Эти настройки применяются для всего сайта. И на нодах и во views.

А мне надо чтоб во views был один, а на всем остальном другой.

Попробую объяснить вообще изначально различия которых хочется добиться.

На сайте использую модуль popups /для popup окошек с текстом ноды/. Т.е. каждая нода открывается в popup окошке и имеет листалку(pager). Но тогда ссылки в листалке должны имень класс popups, тогда все следующие страницы тоже будут открываться в popup.

И есть страницы построенные на views /списки нод по категориям/. Эти страницы открывают без popup`oв - стандартно.
И на этих страницах тоже есть листалка (pager)/ и она должна листать так же стандартно.

Но уж нас уже листалка изменена /имеет доп класс popups/ и соответственно следующая страница views открывается в popup.

Может кто помочь.

Комментарии

Аватар пользователя semasping semasping 16 декабря 2010 в 17:09

Мне конечно кажется что можно переопределить почти все функции pager.
Тобишь сделать как то так:
для страниц views определить пейджер например conti_partner_pager__news_overiew()
далее его заставить вызывать не theme('pager_first'...), а некую другую theme('pager_views_first'...).
Которая в свою очередь будет вызывать не theme('pager_link',...) а theme('pager_views_link',....)

Но это какое-то очень странное решение.

Аватар пользователя semasping semasping 16 декабря 2010 в 18:05

Или может кто-нибудь знает как опеределить внутри функции theme_pager_...
из какого модуля (типа старицы, views, и др инфу) он вызывается?

чтоб можно было поставить условие...

если views то class=one
иначе class=two

?

Аватар пользователя annya annya 16 декабря 2010 в 20:22

Создаете свою функцию theme_pager_which_i_want_for_views. Копируете в нее код theme_pager. Убираете/добавляете что вам нужно. В теме создаете функцию function phptemlate_preprocess_views_view(&$vars) {}

function phptemlate_preprocess_views_view(&$vars) {
  $view = $vars['view'];
if ($view->display_handler->render_pager()) {
    $pager_type = ($view->pager['use_pager'] === 'mini' ? 'views_mini_pager' : 'pager_which_i_want_for_views');
    $pager_theme = views_theme_functions($pager_type, $view, $view->display_handler->display);
    $vars['pager']    = theme($pager_theme, $exposed_input, $view->pager['items_per_page'], $view->pager['element']);
  }
}
Аватар пользователя semasping semasping 20 декабря 2010 в 17:37

К сожалению что то у меня не выходит Sad
Перепробовал различные названия: "theme_pager_which_i_want_for_views", но в эту функцию вход не выполняется Sad
В функцию phptemlate_preprocess_views_view вход выполняется.

Аватар пользователя semasping semasping 20 декабря 2010 в 17:47

если заменить в "phptemlate_preprocess_views_view()" $vars['pager'] на $vars->pager
то pager появляется на странице но стандартный.
и функция "theme_pager_which_i_want_for_views" так и не отрабатывает