Здравствуйте, уважаемые друпаловоды!
Подскажите почему не работает пейджинация в этом запросы? и как его нужно поправить, уже голову всю сломал, пробовал кучу вариантов.
<?phpfunction get_comments($nid) {
$query = db_select('comment','c');
$query->leftjoin('field_data_comment_body', 'cb', 'cb.entity_id = c.cid');
$query->leftjoin('field_data_field__rate_fsfield', 'hr', 'hr.entity_id = c.cid');
//$query->leftjoin('field_data_field_phone_textfield', 'tif', 'tif.entity_id = n.nid');
$query->condition('c.nid', $nid,'=');
$query->condition('c.status', 1,'=');
$query->fields('c', array('cid', 'created', 'name'));
$query->fields('cb', array('comment_body_value'));
$query->fields('hr', array('field_rate_fsfield_rating'));
$result = $query->extend('PagerDefault')
->limit(5)
->execute();
$output = NULL;
foreach ($result as $record) {
$output .= '<div class="comment whitebox">
<div class="autor content-title">'.$record->name.'</div>
<div class="two-line"></div>
<div class="body">'.check_markup($record->comment_body_value, 'filtered_html').'</div>
<div class="fs-rating"><div class="title">Оценка:</div> '.get_fs_votes($record->field_rate_fsfield_rating).'</div>
</div>';
}
$output .= theme('pager');
return $output;
}?>
Так то инфу выводит и пейджинатор в конце но игнорирует переменную и он не работает
Комментарии
$output .= theme('pager', NULL, ЛИМИТ, 0);
Выводит вот это
Fatal error: Unsupported operand types in /home/xxx/data/www/xxx/includes/theme.inc on line 1088
Ставлю такую строку $output .= theme('pager', NULL, 5, 0);
Пробуйте:
$output .= theme('pager', array('tags' => array(), 'element' => 10));
возможно на странице присутствует другой пейджинатор...Пейджинатор на это странице один единственный.
Данный код вообще ничего не выводит![Sad](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/sad.gif)
Странно как-то вообще происходит
пробуйте
между ними есть что в html?
Вот вся функция которая выводит данные
$query = db_select('comment','c');
$query->leftjoin('field_data_comment_body', 'cb', 'cb.entity_id = c.cid');
$query->leftjoin('field_data_field_xxx_rate_fsfield', 'hr', 'hr.entity_id = c.cid');
$query->condition('c.nid', $nid,'=');
$query->condition('c.status', 1,'=');
$query->fields('c', array('cid', 'created', 'name'));
$query->fields('cb', array('comment_body_value'));
$query->fields('hr', array('field_xxx_rate_fsfield_rating'));
$query->orderBy('c.created', 'ASC');
$result = $query->extend('PagerDefault')->limit(5)->execute();
$output = NULL;
foreach ($result as $record) {
$output .= '<div class="comment whitebox">
<div class="autor content-title">'.$record->name.'</div>
<div class="two-line"></div>
<div class="body">'.check_markup($record->comment_body_value, 'filtered_html').'</div>
<div class="fs-rating"><div class="title">Оценка:</div> '.get_fs_votes($record->field_xxx_rate_fsfield_rating).'</div>
</div>';
}
$output .= theme('pager', array('limit', 5));
return $output;
}
данную функцию положил в template.php а не в модуль отдельный, вызываю так же в шаблонах, а не в модулях.
мне нужен html а не код. Обновите страницу в браузере, жмите ctrl+u, и покажите html код с того места
Если я вас правильно понял то вот код который генерируется. (в файле)
надо было сохранить "политически" правильно, ну да ладно.
Там я вижу вот такой код:
<li class="pager-item"><a title="ааА бббаАаНаИбб аНаОаМаЕб 2" href="/hotel/orenburg?page=1">2</a></li>
<li class="pager-next"><a title="ааА баЛаЕаДббббб бббаАаНаИбб" href="/hotel/orenburg?page=1">баЛаЕаДбббаАб тК</a></li>
<li class="pager-last last"><a title="ааА аПаОбаЛаЕаДаНбб бббаАаНаИбб" href="/hotel/orenburg?page=1">аПаОбаЛаЕаДаНбб ТЛ</a></li>
</ul></div>
Это и есть пейджер, теперь проверь через css видимость этого кода...
В css то он виден и на странице, вся проблема в sql похоже и и подключении пейджера к запросу, всю голову сломал, так то правильно по примерам вроде.
я не понял проблему, пейджер виден или нет? Если виден, то не работает?
Да виден, но не работает. Поэтому я привел как пример всю функцию с sql.
то есть пейджер виден, но когда жмешь на 1 2 3 - происходит пересылка на эту страницу, но там те же данные?
Да именно так
theme_pager()
<?php
$per_page = 10;
// Initialize the pager
$current_page = pager_default_initialize(count($rows), $per_page);
// Split your list into page sized chunks
$chunks = array_chunk($rows, $per_page, TRUE);
// Show the appropriate items from the list
$output = theme('table', array('header' => $header, 'rows' => $chunks[$current_page]));
// Show the pager
$output .= theme('pager', array('quantity',count($rows)));
?>
А зачем
<?php$output = theme('table', array('header' => $header, 'rows' => $chunks[$current_page]));?>
???Мне нужен вывод просто html
rows = "ХТЫМЫЭль"
Это пример, никто не заставляет выводить таблицей.
Да, я видел эти примеры и свой код тоже делал по примеру, но не работает почему-то. Например пейджер созданный на views страницах работает и на страницах модулей ядра тоже.
У вас это не единственный пейджер на странице? Если да, то надо пейджеру сменить идентификатор. Такая опция есть у вьюсов, в коде смотрите у theme_pager() на вот это: