1

Тема: разделение альбома на несколько страниц

Подскажите пожалуйста,как сделать: у меня много фотографий на одной странице,я же хочу выводить их по 10 на странице,соответственно нужно несколько страниц,вот только разобраться не смог,как это сделать
Заранее благодарен за помощь.

сильно не ругайте, я пока учусь=))

Thumbs up Thumbs down

2

Re: разделение альбома на несколько страниц

Вот есть наброски.
Правда комментарии по украински. Кроме файла с комментариями есть два файла которые реализуют погинацию для галереи.
http://dl.dropbox.com/u/35416902/pagination_gallery.zip

Дальше в шаблоне используйте {$pagination}

P.S.: Обязательно проверьте потом кроме фронта - еще и работу галереи из-под админки. Писалось давно, уже не помню все ли там хорошо.

https://github.com/imagecms/ImageCMS - ночные сборки корпорейта
https://scrutinizer-ci.com/g/imagecms/ImageCMS/badges/quality-score.png?b=development https://codeclimate.com/github/imagecms/ImageCMS/badges/gpa.svg

Thumbs up +1 Thumbs down

3

Re: разделение альбома на несколько страниц

спасибо,только вот вопрос,файлы в папку галереи скидывать,или в основную папку темплейт?

сильно не ругайте, я пока учусь=))

Thumbs up Thumbs down

4

Re: разделение альбома на несколько страниц

В папку Галереи. Заменить существующие. Но повторюсь, сделайте бэкап

https://github.com/imagecms/ImageCMS - ночные сборки корпорейта
https://scrutinizer-ci.com/g/imagecms/ImageCMS/badges/quality-score.png?b=development https://codeclimate.com/github/imagecms/ImageCMS/badges/gpa.svg

Thumbs up Thumbs down

5

Re: разделение альбома на несколько страниц

спасибо большое,на днях попробую,надеюсь получиться smile

сильно не ругайте, я пока учусь=))

Thumbs up Thumbs down

6

Re: разделение альбома на несколько страниц

Не работает. Выводит 18 изображений, не зависимо от настройки количества в админке.
Очень нужно решение этого вопроса. Подскажите пожалуйста.

7

Re: разделение альбома на несколько страниц

hands пишет:

Не работает. Выводит 18 изображений, не зависимо от настройки количества в админке.
Очень нужно решение этого вопроса. Подскажите пожалуйста.

может кто-то знает решение? )) ап

8

Re: разделение альбома на несколько страниц

Настойчиво просите однако!
вот вариант с фиксированным значением количества изображений на альбом
Исходные файлы взяты с 4.0.0b версии но должно работать и с 3x т.к не уверен что эти файлы изменялись


находим в файле
/application/modules/gallery/models/gallery_m.php

function get_album($id = 0, $include_images = TRUE)

и меняем всё так, как указано ниже (function get_count_album  это целиком новый блок, просто добавьте его в файл)

function get_album($id = 0, $include_images = TRUE, $limit = false,$position = false)
    {
        $this->db->limit(1);
        $this->db->where('id', $id);
        $query = $this->db->get('gallery_albums');

        if ($query->num_rows() > 0)
        {
            $album = $query->row_array();

            if ($include_images == TRUE)
            {
                $album['images'] = $this->get_album_images($album['id'],$limit,$position);
            }

            return $album;
        }
        else
        {
            return FALSE;
        }
    }

    function get_count_album($album_id)
    {
        if (!is_numeric($album_id) OR $album_id < 0)
            {
            return false;
            }
        $this->db->select('id');   
        $this->db->where('album_id', $album_id);       
        $this->db->from('gallery_images');
        return $this->db->count_all_results();
    }

ниже находим

function get_album_images($album_id)

и снова начинаем сверять

function get_album_images($album_id, $limit = false, $position = false)
    {
        if (!is_numeric($position) OR $position < 0)
            {
            $position = false;
            }

       
        $this->db->select('*');
        $this->db->select('CONCAT_WS("", file_name, file_ext) as full_name', FALSE);
        $this->db->order_by('position', 'asc');
        if ($limit)
            {
            if ($position)
                {$this->db->limit($limit,$position);}
            else
                {$this->db->limit($limit);}
            }   

        $this->db->where('album_id', $album_id);
        $query = $this->db->get('gallery_images');

        if ($query->num_rows() > 0)
        {
            return $query->result_array();
        }
        else
        {
            return FALSE;
        }
    }

далее открываем файл
/application/modules/gallery/gallery.php
и в самом верху дописываем строку

class Gallery extends MY_Controller {

    private $list_count = 10; // количество изображений на странице альбома
   
    public $conf = array(
        'upload_url'    => 'uploads/gallery/',
        'thumbs_folder' => '_thumbs',
        );

далее находим в середине файла

function thumbnails($id = 0)

вновь правим

function thumbnails($id = 0, $page = 0)
    {
        if (!$page)
            {$page = 0;}
        $total = $this->gallery_m->get_count_album($id);
        if ($total == FALSE)
        {
            $this->core->error_404();
            exit;
        }
        $this->load->library('pagination');
        $config= array(
            'base_url' => site_url('gallery/thumbnails/'.$id),
            'uri_segment' => 4,
            'total_rows' =>  $total,
            'per_page' => $this->list_count,
            'num_links'=>'10'
            );
        $this->pagination->initialize($config);
        $this->template->assign('paginator', $this->pagination->create_links());

       
        $album = $this->gallery_m->get_album($id, true, $this->list_count ,$page);

идем теперь в файл
/application/modules/gallery/templates/public/thumbnails.tpl
дописываем

<div id="titleExt"><h5><a href="{site_url('gallery')}">Галерея</a> &gt;&gt; <span class="ext">{$album.name}</span></h5></div>
{$paginator}
<ul class="products thumbs">

вот рабочий пример с фиксированным указанием количества результатов на альбом

если нужно, чтобы правилось в админке можно немного расширить.... но у меня как всегда то времени нет, то ещё какая гадость ...

Thumbs up +1 Thumbs down

9

Re: разделение альбома на несколько страниц

по поводу
http://dl.dropbox.com/u/35416902/pagination_gallery.zip

попробуйте gallery_m.php скинуть в каталог /application/modules/gallery/models/
видиму изза этого у вас не работало...
(какое из решений лучше я не в куре, просто решил написать по своему)

Thumbs up Thumbs down

10

Re: разделение альбома на несколько страниц

cutter пишет:

по поводу
http://dl.dropbox.com/u/35416902/pagination_gallery.zip

попробуйте gallery_m.php скинуть в каталог /application/modules/gallery/models/
видиму изза этого у вас не работало...
(какое из решений лучше я не в куре, просто решил написать по своему)

Так изначально было сделано.

11

Re: разделение альбома на несколько страниц

а что с моим решением?

в том архиве в файле gallery.php есть строка

self::$limit = 18;

поменяйте на

self::$limit = 10;

вот и всё

Thumbs up Thumbs down

12

Re: разделение альбома на несколько страниц

вот думаю допилить или не допилить?
что победит... big_smile

Thumbs up Thumbs down

13

Re: разделение альбома на несколько страниц

cutter пишет:

а что с моим решением?


Спасибо огромное, ваше решение работает.


для разработчиков системы: модуль галереи в ImageCMS, на мой взгляд,  довольно мощный и гибкий инструмент, на основе которого можно делать например фото-портфолио, и прочие штуки. А отсутствие пагинации из коробки очень ограничивает.

14

Re: разделение альбома на несколько страниц

cutter пишет:

Настойчиво просите однако!
вот вариант с фиксированным значением количества изображений на альбом
Исходные файлы взяты с 4.0.0b версии но должно работать и с 3x т.к не уверен что эти файлы изменялись


находим в файле
/application/modules/gallery/models/gallery_m.php

function get_album($id = 0, $include_images = TRUE)

и меняем всё так, как указано ниже (function get_count_album  это целиком новый блок, просто добавьте его в файл)

function get_album($id = 0, $include_images = TRUE, $limit = false,$position = false)
    {
        $this->db->limit(1);
        $this->db->where('id', $id);
        $query = $this->db->get('gallery_albums');

        if ($query->num_rows() > 0)
        {
            $album = $query->row_array();

            if ($include_images == TRUE)
            {
                $album['images'] = $this->get_album_images($album['id'],$limit,$position);
            }

            return $album;
        }
        else
        {
            return FALSE;
        }
    }

    function get_count_album($album_id)
    {
        if (!is_numeric($album_id) OR $album_id < 0)
            {
            return false;
            }
        $this->db->select('id');   
        $this->db->where('album_id', $album_id);       
        $this->db->from('gallery_images');
        return $this->db->count_all_results();
    }

ниже находим

function get_album_images($album_id)

и снова начинаем сверять

function get_album_images($album_id, $limit = false, $position = false)
    {
        if (!is_numeric($position) OR $position < 0)
            {
            $position = false;
            }

       
        $this->db->select('*');
        $this->db->select('CONCAT_WS("", file_name, file_ext) as full_name', FALSE);
        $this->db->order_by('position', 'asc');
        if ($limit)
            {
            if ($position)
                {$this->db->limit($limit,$position);}
            else
                {$this->db->limit($limit);}
            }   

        $this->db->where('album_id', $album_id);
        $query = $this->db->get('gallery_images');

        if ($query->num_rows() > 0)
        {
            return $query->result_array();
        }
        else
        {
            return FALSE;
        }
    }

далее открываем файл
/application/modules/gallery/gallery.php
и в самом верху дописываем строку

class Gallery extends MY_Controller {

    private $list_count = 10; // количество изображений на странице альбома
   
    public $conf = array(
        'upload_url'    => 'uploads/gallery/',
        'thumbs_folder' => '_thumbs',
        );

далее находим в середине файла

function thumbnails($id = 0)

вновь правим

function thumbnails($id = 0, $page = 0)
    {
        if (!$page)
            {$page = 0;}
        $total = $this->gallery_m->get_count_album($id);
        if ($total == FALSE)
        {
            $this->core->error_404();
            exit;
        }
        $this->load->library('pagination');
        $config= array(
            'base_url' => site_url('gallery/thumbnails/'.$id),
            'uri_segment' => 4,
            'total_rows' =>  $total,
            'per_page' => $this->list_count,
            'num_links'=>'10'
            );
        $this->pagination->initialize($config);
        $this->template->assign('paginator', $this->pagination->create_links());

       
        $album = $this->gallery_m->get_album($id, true, $this->list_count ,$page);

идем теперь в файл
/application/modules/gallery/templates/public/thumbnails.tpl
дописываем

<div id="titleExt"><h5><a href="{site_url('gallery')}">Галерея</a> &gt;&gt; <span class="ext">{$album.name}</span></h5></div>
{$paginator}
<ul class="products thumbs">

вот рабочий пример с фиксированным указанием количества результатов на альбом

если нужно, чтобы правилось в админке можно немного расширить.... но у меня как всегда то времени нет, то ещё какая гадость ...

попробовал этот вариант.сделал все как написано ,в итоге появились список страничек но на каждой повторяеться фотки, тоесть такое чувство что он их не разбивает,при этом выставил по 9 фоток на страницу а он оставил то количество которое и было,превышающие кол-во 9. может подскажите куда глядеть? )))

сильно не ругайте, я пока учусь=))

Thumbs up Thumbs down