Добрые друпалеры, помогите неучу разобраться. Имеется модуль picasa и имеется такая вот такой вот стандартный шаблон модуля вывода содержимого альбомов:
<?php if ($teaser): ?>
<table>
<tr>
<td>
<div align=center><?php print $thumbnail; ?></div>
<?php if ($slideshow): ?>
<div><small><?php print $slideshow; ?></small></div>
<?php endif; ?>
<div style="font-weight: bold; text-align: left;">Фотографий: <?php print $gphoto['numphotos']; ?></div>
</td>
</tr>
</table>
<?php endif;?>
<?php if ($page): ?>
<?php if ($slideshow): ?>
<div><?php print $slideshow; ?></div>
<?php endif; ?>
<?php foreach($photos as $photo) {
print $photo;
}?>
<?php endif;?>
Таким образом видно, что вывод фотографий осуществляется "печатью" всего содержимого массива $photos
а их там бывает и 100 и 200 и 400 и больше штук и понятно что все это выводится на одной странице и это просто ужасно. Как сделать пагинацию например на 50 элементов на странице? Пытался читать про функцию theme_pager но что-то так ничего и не получилось...видимо читал не там. Кто-нибудь может кстати как что и куда вставить, чтобы заработала пагинация?
Комментарии
$limit = 50; // Поставить количество элементов на страницу по вкусу
global $pager_page_array, $pager_total, $pager_total_items;
$page = isset($_GET['page']) ? $_GET['page'] : '';
// Convert comma-separated $page to an array, used by other functions.
$pager_page_array = explode(',', $page);
// We calculate the total of pages as ceil(items / limit).
$pager_total_items[0] = $count;
$pager_total[0] = ceil($pager_total_items[0] / $limit);
$pager_page_array[0] = max(0, min((int)$pager_page_array[0], ((int)$pager_total[0]) - 1));
$photos = array_slice($photos, $pager_page_array[0] * $limit, $limit);
// Выводим массив $photos
....
print theme('pager');
Вот как-то так можно. Я не проверял, просто выдернул из готового кода. Вам придется доработать. Изначально код был взят из http://api.drupal.ru/api/function/pager_query/6. Если кто-то подскажет более аккуратный метод, я с удовольствием взгляну.
That`s great, it works! Спасибо большое. Даже менять ничего не пришлось.
Если и правда имеются более элегантные решения был бы тоже не прочь взглянуть ради интереса.
Поправочка: в первой строчке вместо
<?php$count = 200;?>
или иного другого числа должно быть<?php$count = count($photos);?>
. Т.е. мы переменной count задаем кол-во фотографий в альбоме, чтобы дальше правильно расчитывалось кол-во страниц. Если задать значение любым числом, например 200, то на странице где 56 фотографий вместо как и должно быть 2 страниц будет 7 из них 5 пустых.Читайте код внимательнее, я специально оставил комментарий напротив этой строки.