Функция "Показать ещё".


 Поделиться

Рекомендуемые сообщения

Поставил вот такую штуку "показать ещё", но покосило вёрстку =( Не могу понять где подправить.


 


При виде сеткой - уехали немного звёзды рейтинга:


 


0a0874225afb.jpg


 


При виде списком вообще беда:


 


c77a6cc0e7dd.jpg


 


Сайт: http://podaro4ek.in.ua/podarki/dlja-interera-i-doma/


Ссылка на комментарий
Поделиться на других сайтах

Небольшой faq по установке, может кому понадобится:

Берём файлик из соседнего форума, после чего делаем следующее:

 

1. скопировать файлы в корень сайта
2. в файле catalog\controller\product\category.php ищем строки

			$this->document->setDescription($category_info['meta_description']);			$this->document->setKeywords($category_info['meta_keyword']);

добавляем после них

$this->document->addScript('catalog/view/javascript/showmore.js');$this->document->addStyle('catalog/view/theme/default/stylesheet/showmore.css');

У меня на шаблоне rubber всё заработало сразу.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...
  • 9 месяцев спустя...

Добрый день.Автор модуля пока занят, подумал может здесь решу:)

Есть модуль https://opencartforum.com/topic/61031-ajax-загрузка-товаров-на-страницу-категории/

Код контроллера

Скрытый текст

 

<?php
class ControllerModuleLoadMore extends Controller {
    private $error = array();

    public function index() {
        $this->load->language('module/loadmore');

        $this->document->setTitle($this->language->get('heading_title'));

        $this->load->model('setting/setting');

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
            $this->model_setting_setting->editSetting('loadmore_', $this->request->post);

            $this->session->data['success'] = $this->language->get('text_success');

            $this->response->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
        }

        $data['heading_title'] = $this->language->get('heading_title');

        $data['text_edit'] = $this->language->get('text_edit');
        $data['text_enabled'] = $this->language->get('text_enabled');
        $data['text_disabled'] = $this->language->get('text_disabled');
        $data['loadmore_button_name'] = $this->language->get('loadmore_button_name');
        $data['loadmore_button_name_title'] = $this->language->get('loadmore_button_name_title');
        $data['loadmore_style_title'] = $this->language->get('loadmore_style_title');
        $data['loadmore_default_style_title'] = $this->language->get('loadmore_default_style_title');
        $data['loadmore_arrow_status_title'] = $this->language->get('loadmore_arrow_status_title');
        $data['loadmore_status_title'] = $this->language->get('loadmore_status_title');

        $data['button_save'] = $this->language->get('button_save');
        $data['button_cancel'] = $this->language->get('button_cancel');

        if (isset($this->error['warning'])) {
            $data['error_warning'] = $this->error['warning'];
        } else {
            $data['error_warning'] = '';
        }

        if (isset($this->error['name'])) {
            $data['error_name'] = $this->error['name'];
        } else {
            $data['error_name'] = '';
        }

        $data['breadcrumbs'] = array();

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_home'),
            'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL')
        );

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_module'),
            'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')
        );

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('module/loadmore', 'token=' . $this->session->data['token'], 'SSL')
        );

        $data['action'] = $this->url->link('module/loadmore', 'token=' . $this->session->data['token'], 'SSL');
        $data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
        
        $this->load->model('localisation/language');

        $data['languages'] = $this->model_localisation_language->getLanguages();
        
        $languages = $this->model_localisation_language->getLanguages();        

        foreach ($languages as $language) {
            if (isset($this->request->post['loadmore_button_name_'.$language['language_id']])) {
                $data['loadmore_button_name_'.$language['language_id']] = $this->request->post['loadmore_button_name_'.$language['language_id']];
            } else {
                $data['loadmore_button_name_'.$language['language_id']] = $this->config->get('loadmore_button_name_'.$language['language_id']);
            }
        }
        
        if (isset($this->request->post['loadmore_style'])) {
            $data['loadmore_style'] = $this->request->post['loadmore_style'];
        } else if ($this->config->get('loadmore_style')) {
            $data['loadmore_style'] = $this->config->get('loadmore_style');
        } else {
            $data['loadmore_style'] = 'display:inline-block; margin:0 auto 20px auto; padding: 0.5em 2em; border: 1px solid #069; border-radius: 5px; text-decoration:none; text-transform:uppercase;';
        }
        
        if (isset($this->request->post['loadmore_arrow_status'])) {
            $data['loadmore_arrow_status'] = $this->request->post['loadmore_arrow_status'];
        } else {
            $data['loadmore_arrow_status'] = $this->config->get('loadmore_arrow_status');
        }

        if (isset($this->request->post['loadmore_status'])) {
            $data['loadmore_status'] = $this->request->post['loadmore_status'];
        } else {
            $data['loadmore_status'] = $this->config->get('loadmore_status');
        }        

        $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');        

        $this->response->setOutput($this->load->view('module/loadmore.tpl', $data));
    }

    protected function validate() {
        if (!$this->user->hasPermission('modify', 'module/loadmore')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }
        return !$this->error;
    }
}

 

 

Код скрипта

Скрытый текст

 

/************************ AJAX PRODUCT PAGE LOADER ************************/
/************************    DOMUS159@GMAIL.COM    ************************/
/********************** проверено на ocStore 2.1.x **********************/

var pagination_exist = true; // оставить пагинацию и добавить кнопку
var button_more = true; // наличие кнопки "загрузить ещё"
var top_offset = 100; // высота отступа от верха окна, запускающего arrow_top
var window_height = 0; // высота окна
var product_block_offset = 0; // отступ от верха окна блока, содержащего контейнеры

var product_block = ''; // определяет div, содержащий товары
var pages_count = 0; // счетчик массива ссылок пагинации
var pages = []; // массив для ссылок пагинации
var waiting = false;

function getNextProductPage(pages, pages_count) {
    console.log('getNextProductPage');
    if (waiting) return;
    if (pages_count >= pages.length) return;
    waiting = true;
    $(product_block).parent().after('<div id="ajax_loader"><img src="/image/ajax-loader-horizontal.gif" /></div>');
    $.ajax({
        url:pages[pages_count], 
        type:"GET", 
        data:'',
        success:function (data) {
            $data = $(data);
            $('#ajax_loader').remove();
            if ($data) {         
                if ($data.find('.product-list').length > 0)    {
                    $(product_block).parent().append($data.find('.product-list').parent().html());
                    if (product_block == '.product-grid') {$('#grid-view').trigger('click')};
                } else {
                    $(product_block).parent().append($data.find('.product-grid').parent().html());
                    if (product_block == '.product-list') {$('#list-view').trigger('click')};
                }
                if (pagination_exist) {
                    $('.pagination').html($data.find('.pagination'));
                }
                // $('script').each(function(){eval($(this).text())});
            }
            waiting = false;
        }
    });
    if (pages_count >= pages.length) {$('.load_more').hide();};
}

function scroll_to_top() {
    $('html, body').animate({
        scrollTop: 0
    }, 300, function() {
        $('.arrow_top').remove();
    });  
}

function getProductBlock() {
    if ($('.product-list').length > 0) {
        product_block = '.product-list';
    } else {
        product_block = '.product-grid';
    }
    return product_block;
}

$(document).ready(function(){ 
    window_height = $(window).height();
    product_block = getProductBlock();
    var button_more_block = $('#load_more').html(); //
    var arrow_top = $('#arrow_top'); //
    if ($(product_block).length > 0) {
        product_block_offset = $(product_block).offset().top;
        var href = $('.pagination').find('li:last a').attr('href');
        $('.pagination').each(function(){
            if (href) {
                TotalPages = href.substring(href.indexOf("page=")+5);
                First_index = $(this).find('li.active span').html();
                i = parseInt(First_index) + 1;
                while (i <= TotalPages) {
                    pages.push(href.substring(0,href.indexOf("page=")+5) + i);
                    i++;
                }
            }        
        });    
        
        $(window).scroll(function(){
            if (arrow_top) {
                if ($(document).scrollTop() > top_offset) {
                    $('#arrow_top').show();
                } else {
                    $('#arrow_top').hide();
                } 
            }
        });
        
        if (button_more && href && !(/blog/i.test(location.href)) && !(/anonsy/i.test(location.href)) && !(/statyi/i.test(location.href)) && !(/obzor/i.test(location.href))) {
            console.log('button_more!');
            console.log($('.pagination').parent().parent().parent().find('.col-md-6.text-right-md').html());
            $('.pagination').parent().parent().parent().parent().before(button_more_block);
            if (!pagination_exist) {
                $('.pagination').parent().parent().remove();
            } else {
                $('.pagination').parent().parent().parent().find('.col-md-6.text-right-md').remove();
            }
            $('.load_more').click( function(event) {
                event.preventDefault();
                getNextProductPage(pages, pages_count);
                pages_count++;
            });
        } else if (href) { 
            $('.pagination').parent().parent().hide();
            $(window).scroll(function(){
                product_block = getProductBlock();
                product_block_height = $(product_block).parent().height();
                if (pages.length > 0) {
                    if((product_block_offset+product_block_height-window_height)<($(this).scrollTop())){
                        getNextProductPage(pages, pages_count);
                        pages_count++;
                    }
                }
            });
        }
    }

 

 

То что он с ФильтрПро не работает это х с ним)

Он криво отображается в статьях, производителях, поиске

Не могу найти где отключить его вывод на всех страницах кроме категорий товаров.Или перенести кнопку вниз

Если это не трудно понять, ткните носом что надо закомментировать:)

 

Вот тут пойдет 

 

Вот тут косяк 

 

И тут

 

Скрытый текст

 

 

AjaxPPL_v.2.2_multi.ocmod.zip

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу