Ajax пагинация товаров в категории

В этой теме 10 ответов, 3 участника, последнее обновление  Bover 11.10.2017 в 22:08.

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Автор
    Сообщения
  • #104897
    admin
    admin
    Хранитель
    • Сообщений: 8381

    За решение спасибо пользователю Garmon85.

    1. Качаем плагин infiniteajaxscroll https://infiniteajaxscroll.com/download.html

    2. Подключаем плагин

    <script src="/templates/шаблон /js/jqueryias.js" type="text/javascript"></script>

    3. Инициализируем его, указывая необходимые параметры

    * обертку необходимо сделать так, чтобы она начиналась перед циклом foreach ( $products as $product ) в файле sublayouts/products.php, заканчивалась после блока пагинации в файле sublayouts/categories.php
    При этом каждый раз подгружается новая пагинация с текущей страницей, а старая исчезает

    И немного css

    Еще придется сделать хак в модели товара, чтобы при возврате в категорию товары начинались с первого (/administrator/components/com_virtuemart/models/product.php)
    Заменить метод public function setPaginationLimits на этот

    #105388

    Bover
    Участник
    • Сообщений: 6

    Здравствуйте! Пользуюсь VirtueMart 3.2.4. Установил плагин Ajax Scroll v 1.5.2, настроил его и товар теперь подгружается автоматически. Но заметил что в подгруженных товарах с помощью Ajax Scrool не работают кнопки добавления товара и изменения его количества. А вот на первой странице (которая по умолчанию показана) все работает. Прошу помощи в решении вопроса, как сделать так, чтоб и на подгруженных страницах работали все функции?

    #105409
    admin
    admin
    Хранитель
    • Сообщений: 8381

    Попробуйте в приведенном коде заменить
    Virtuemart.product(jQuery(".product"));

    на
    Virtuemart.product(jQuery(".product-container"));

    #105411

    Bover
    Участник
    • Сообщений: 6

    пробую прописать, не работает. Возможно код приведенный Вами работает в Вашем случае? Поэтому высылаю свой файл ajax_scroll.php. Прошу помочь разобраться.

    #105412

    Bover
    Участник
    • Сообщений: 6

    <?php

    // no direct access
    defined(‘_JEXEC’) or die(‘(@)|(@)’);

    class plgSystemAjax_scroll extends JPlugin
    {

    /**
    * Constructor
    *
    * @param object $subject The object to observe
    * @param array $config An array that holds the plugin configuration
    */
    public function __construct(& $subject, $config)
    {
    parent::__construct($subject, $config);
    $this->loadLanguage();
    }

    public function onBeforeCompileHead ()
    {
    $app = JFactory::getApplication();
    $doc = JFactory::getDocument();

    if ($app->isAdmin())
    {
    return true;
    }

    $mobileparam = $this->params->get(‘mobile’);
    if($mobileparam){
    $mobiles = array(«iPhone»,»iPod»,»iPad»,»Android»,»Blackberry»,»Blackberry»,»Mobi»,»Moby»,»Opera.Mini»,»PPC»,»pda»,»mobile»,»pocket»,»phone»,»iemobile»,»windows.ce»);

    foreach( $mobiles as $mobile ) {
    if( preg_match( «#».$mobile.»#i», $_SERVER[‘HTTP_USER_AGENT’] ) ) {
    return true;
    }
    }
    }

    $urlrulesparams = $this->params->get( ‘urlrules’);
    if(!empty($urlrulesparams)){
    $urlrules = explode(«\r\n»,$urlrulesparams);
    $nowurl = http_build_query($_REQUEST);
    $ff = »;
    foreach($urlrules as $url){
    if(substr_count($nowurl, $url) == 1) $ff = ‘1’;
    }
    if(!$ff) return true;
    }

    $container = $this->params->get( ‘container’);
    $item = $this->params->get( ‘item’);
    $pagination = $this->params->get( ‘pagination’);
    $next = $this->params->get( ‘next’);
    $autoscroll = $this->params->get( ‘triggerPageThreshold’);
    $more = $this->params->get( ‘more’);
    $none = $this->params->get( ‘none’);
    $history = $this->params->get( ‘history’);
    $hiddenpagination = $this->params->get( ‘hiddenpagination’);
    $jquery = $this->params->get( ‘jquery’);
    $onRenderComplete = $this->params->get( ‘onrendercomplete’);
    $limit = $defaultPagination = »;
    if (isset($jquery)) {
    $doc->addScript(‘//ajax.googleapis.com/ajax/libs/jquery/’.$jquery.’/jquery.min.js’);
    }

    if($autoscroll) {
    $limit = ‘9999’;
    }else{
    $limit = ‘1’;
    }
    if(empty($more)) $more = JText::_(‘PLG_AJAX_SCROLL_MORE_TXT’);
    if(empty($none)) $none = JText::_(‘PLG_AJAX_SCROLL_NONE_TXT’);

    if ($hiddenpagination){
    $defaultPagination = ‘false’;
    }else{
    $defaultPagination = ‘true’;
    }
    $doc->addScript(JURI::root(true) . ‘/media/ajax_scroll/assets/jquery-ias.js’);
    $init = ‘
    jQuery.ias({
    container : «‘.$container.'»,
    item: «‘.$item.'»,
    pagination: «‘.$pagination.'»,
    next: «‘.$next.'»,
    triggerPageThreshold: «‘.$limit.'»,
    trigger: «‘.$more.'»,
    loader: ««,
    noneleft: «<i class=\»Jext_more\»>’.$none.'</i>»,
    history: ‘. ((empty($history)) ? «true» : «false» ). ‘,
    defaultPagination: ‘.$defaultPagination.’,
    onRenderComplete: function () {‘.$onRenderComplete.’}
    });
    ‘;

    $doc->addCustomTag(‘<script type=»text/javascript»>’.$init.'</script>’);

    $style = ‘div.ias_trigger{text-align: center;margin: 15px 0;}
    div.ias_trigger a {border: 1px solid #ccc;padding: 5px;border-radius: 5px;background: #f1f1f1;}’;

    if ($hiddenpagination){
    $style.= ».$pagination.’ {display:none !important;}’;
    }else{
    $style.= ».$pagination.’ {display:block !important;}’;
    }
    $doc->addStyleDeclaration($style);

    }
    }
    ?>

    #105413

    Bover
    Участник
    • Сообщений: 6

    так же я использую «Plugin System Sj Ajax Minicart Pro For VirtueMart» и «Universal AJAX Live Search» если это поможет?

    #105462
    admin
    admin
    Хранитель
    • Сообщений: 8381

    Помочь, к сожалению, не смогу.
    Пожалуйста, обратитесь на фриланс.

    #105465

    Garmon85
    Участник
    • Сообщений: 4

    Готов помочь, если дадите доступ

    #105474

    Bover
    Участник
    • Сообщений: 6

    Garmon85 оставьте свою почту

    #105487

    Garmon85
    Участник
    • Сообщений: 4
    #105510

    Bover
    Участник
    • Сообщений: 6

    Благодарю Garmon85 за помощь в решении моего вопроса!

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)

Для ответа в этой теме необходимо авторизоваться.