COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

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


Recommended Posts

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


 


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


 


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 months later...
  • 9 months later...

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

Есть модуль 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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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