Последние темы


tagmanager2 и pdoPage

  • Пытаюсь заменить getPage на pdoPage для вывода результатов в tagmanager2. Что-то не особо получается.
    (все последней версии)
    Вот настройки: tagmanager2
    alt text
    Набор параметров
    alt text
    Вызов:

    [[tmFilters?
        &jsScript=`0`
        &filterOuterTpl=`tm2_filterOuterTpl`
        &filterTpl=`tm2_filterTpl`
        &filterNumericOuterTpl=`tm2_filterOuterTpl`
        &filterNumericTpl=`tm2_filterNumericTpl`
        &jsMap=`1`
        &toPlaceholder=`filters`
    ]]
    <div id="filters">
        <form action="[[~[[*id]]]]" method="get">
            <input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />
            [[+filters]]
            <a class="reset_fil" onclick="tmFilters.resetFilters(); return false;">Сбросить фильтр</a>
        </form>
    </div>
    <div id="pdopage">
        [[!+page.nav]]
        <div class="row marks_wrap" id="products">
            [[!tmCatalog]]
        </div>
    </div>
    

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

  • Покажите настройки filters.js.

  • config: {
            filters_cont: '#filters',//Селектор оберточного элемента блоков с фильтрами
            sortby: 'pagetitle',//Имя поля сортировки по умолчанию
            sortdir: 'asc',//Направление сортировки по умолчанию
            numeric: ['price', 'weight'],//Имена доп. полей с числовыми значениями
            multitags: ['tags'],//Имена доп. полей с множественными значениями
            guard_key: '#',//Разделитель для множественных значений
            products_cont: '#products',//Селектор контейнера с выводом товаров
            filter_slider: 'div.range-slider',//Селектор слайдеров (ползунок для числовых значений)
            filter_slider_cont: 'div.filter_slider',//Селектор контейнера со слайдером
            pages_cont1: '#pages',//Селектор контейнера с постраничной навигацией
            pages_cont2: '#pages2',//Селектор второго контейнера с постраничной навигацией. Если нет, оставить пустым.
            active_page_selector: '.current',//селектор номера текущей страницы внутри контейнера (pages_cont)
            filters_type: 'default',//Тип фильтрации. Возможные значения:
                // default (показ числа товаров по каждому фильтру и блокирование пустых вариантов),
                // only_block (только блокирование пустых париантов),
                // none (не показывать цифры и не блокировать)
            filter_delay: 700,//Задержка до отправления запроса на сервер (сбрасывается после каждой отметки фильтра)
            price_field: 'price',//Название поля или TV цены товара
            multi_currency: true,//Мультивалютность включить / выключить (true/false)
            base_url: '/',
            ajax_url: 'assets/components/tag_manager2/connector_fe.php',
            ajax_loader: 'assets/components/tag_manager2/img/ajaxtm.svg'
        }
    

    еще в консоли ошибка при попытке фильтрации

    Uncaught TypeError: Cannot read property 'state' of undefined
        at pdopage.min.js:1
        at dispatch (jquery.min.js:2)
        at y.handle (jquery.min.js:2)
        at Object.trigger (jquery.min.js:2)
        at jquery.min.js:2
        at Function.each (jquery.min.js:2)
        at w.fn.init.each (jquery.min.js:2)
        at w.fn.init.trigger (jquery.min.js:2)
        at Object.trigger (jquery.history.js:1)
        at Function.h.pushState (jquery.history.js:1)
  • pages_cont1: '#pages',//Селектор контейнера с постраничной навигацией
    

    Это не соответствует действительности.

    еще в консоли ошибка при попытке фильтрации

    Проверьте чтобы jQuery был подключен только один раз.

  • Сделал так

    pages_cont1: '#pdopage .pagination',//Селектор контейнера с постраничной навигацией
    pages_cont2: '',//Селектор второго контейнера с постраничной навигацией. Если нет, оставить пустым.
    

    jQuery на странице вызывается только 1 раз (v3.3.1). Подключается еще pjax.
    Ничего не изменилось, ошибка осталась.

  • Ошибка была, если в наборе параметра поставить "ajaxMode"="default". Если поставить "button", то ошибки нет. Но при фильтрации товары исчезают. До фильтрации загрузка кнопкой работает.

  • [[!+page.nav]]
    

    Это должно быть внутри контейнера, который указывается в параметрах filters.js.

  • <div id="pdopage">
        <div id="nav_wrap">
            [[!+page.nav]]
        </div>
        <div class="row marks_wrap" id="products">
            [[!tmCatalog]]
        </div>
    </div>
    
    pages_cont1: '#nav_wrap',//Селектор контейнера с постраничной навигацией
    

    Результат не изменился, не работает.
    Плюс, после перехода по страницам при помощи pjax и заходе на страницу с фильтром, то и кнопки "еще" и товаров нет. Но фильтры передают параметры.
    Может надо как-то инициализировать pdoPage? Для tagmanagera я делал так

    $(document).on('ready pjax:end', function(event) {
    	tmFilters.init();
    });
    
  • А нет, инициализация на странице есть и pdopage js тоже

    <script type="text/javascript">pdoPage.initialize({"wrapper":"#pdopage","rows":".marks_wrap","pagination":"#pdopage .pagination","link":"#pdopage .pagination a","more":"#pdopage .btn-more","moreTpl":"<div class=\"see_more btn-more\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0449\u0435<\/div>","mode":"button","history":0,"pageVarKey":"page","pageLimit":"4","assetsUrl":"\/assets\/components\/pdotools\/","connectorUrl":"\/assets\/components\/pdotools\/connector.php","pageId":7,"hash":"aa338f333d80711d0536fd7946e9f18fd0fcceda","scrollTop":true});</script>
    
  • Можете показать скриншот как выглядит pjax? Если это кнопка "Показать ещё", то тут на форуме есть рецепт. Плюс он есть на демо-сайте.
    http://demo.modx-shopkeeper.ru/katalog/tovaryi-resursyi-modx/

    Я не проверял pdoPage на совместимость с TagManager. Поэтому помочь не смогу.

  • На демо сайте баг с "показать еще". Если открыть список товаров и обновить страницу, то отобразит только номер текущей страницы (например ?page=3), а кнопка "показать еще" уже не активна и текст на ней неверный

 

Последние комментарии

  • Z

    Спасибо, действительно проще создать отдельно.

    Читать далее
  • Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]].

    Можно не использовать [[+addit_data]], а выводить параметры по-отдельности.

    Цитата из документации:

    [[+shk_любой доп.параметр]] - любой доп. параметр, выбранный при добавлении товара в корзину (из [[+addit_data]]), например [[+shk_param1]].
    Если параметры сделаны в виде чекбоксов, то чтобы вывести отдельно каждый из них, нужно добавлять индекс (номер от нуля) для параметров следующих за первым.
    Пример: [[+shk_param1]], [[+shk_param1_1]], [[+shk_param1_2]] ...
    [[+shk_любой доп.параметр_price]] - цена доп.параметра. Пример: [[+shk_param1_price]].

    Читать далее
  • Z

    Доброго времени суток. Не могу разобраться, как передать данные migx-поля в корзину в плейсхолдер без "дублирования" в [[+addit_data]]
    Суть в чем: У меня есть 2 цены у товара (со скидкой и без скидки) Форма для отправки в корзину:

    <form action="[[~[[*resource_id]]? &scheme=`abs`]][[*alias]].html" method="post"> <input type="hidden" name="shk-id" value="[[*id]]" /> <input type="hidden" name="shk-name" value="[[*pagetitle]]" /> <input type="hidden" name="price_old__[[*id]]__add" value="[[*price_old]]" /> <input type="hidden" name="shk-count" value="1" /> <div class="product-price"> Цена: <span class="shk-price">[[!*price:shk_curr_rate:num_format]]</span> Старая цена - <span class="shk-price-old">[[+price_old]]</span> [[!+shk_currency]] </div> <div class="padding-lr-30"> <h5>Дополнительные услуги</h5> [[*param1]] </div> <div class="product-price"> <button class="btn btn-lg btn-primary" type="submit" class="shk-but">В корзину</button> </div> </form>

    Данные со "старой ценой" в корзину попадают нормально и выводится в нужном месте в плейсхолдере:
    [[+shk_price_old]]
    Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]]. Как сделать чтобы старая цена не выводилась в [[+addit_data]]? Или может я как то не правильно передаю MIGX-параметр в корзину ? Заранее спасибо.

    Читать далее
  • Фотографии, как я понял, это второй вопрос. Я по нему пока ничего не отвечал и не просил информации. Это не отменяет того, что в вашем конфиге есть ошибка, о которой я писал выше. Не нужно задавать разные вопросы в одной теме, чтобы не было путаницы.
    http://forum.modx-shopkeeper.ru/topic/15/рекомендации-по-оформлению-темы-с-вопросом

    Читать далее