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


Тагменеджер, при вызове tmCatalog курс валют во внутреннем сниппете кэшируемый

    1. есть первый чанк вызова tmCatalog
    <div id="products">
      [[!tmCatalog]]
        <div class="clearfix"></div>
    </div>
    
    1. Этот чанк вызывается внутри второго чанка:
    <span class="shk-price" id="stuff_[[+id]]_price">[[!currenciesPrice?price=`[[+tv.price]]`&toCur=`RUR`&fromCur=`[[+tv.currency]]`&printFormat=`%s %s`]]</span>
    
    1. Сниппет currenciesPrice пересчитывает цену на сайте по параметру toCur, который обновляется ежедневно 1 раз по ЦБ
      Суть проблемы:
      -При работе с гетресурс цена своевременно обновляется каждый день, все выводится корректно.
      -Если используем !tmCatalog, то конструкция ломается и первый раз выводится пустота вместо цены. Если нажать F5, то цена корректно отображается и она актуальна.
      -Если чанк №2 делаем кэшируемым [[currenciesPrice?*****]], то отображется все корректно, но один день. То есть курс ЦБ обновился ночью, а [[!tmCatalog]] не видит что курс новый.
    • сайт Сейчас стоит вариант [[currenciesPrice?*****]]

    Как сделать чтобы в tmCatalog вызывать некэшируемый сниппет [[!currenciesPrice]]?

    P/S
    Андрей писал
    @Andchir
    "Точнее можно вставить некэшированный вызов в кэшированный вывод другого сниппета (чанк), но это редко бывает нужно"
    Так пробовал - перестает работать конструкция

    [[+tv.price]]`&toCur=`RUR`&fromCur=`[[+tv.currency]]
    

    Для всех товаров одна цена становится (цена первого товара)

  • Этот чанк вызывается внутри второго чанка

    Не понял что вы называете чанками.

  • @Andchir
    ну как бы сами чанки))). элементы/чанки
    здесь не полностью код, методы вызова привел просто.
    чанк с вызовом tmCatalog

    <div class="sorting">
        <select class="f_sortby" name="sortby" onchange="tmFilters.changeOrder(this);">
            <option value="pagetitle">по названию</option>
            <option value="price">по цене</option>
            <option value="publishedon">по дате</option>
        </select>
        &nbsp;
        <select class="f_sortdir" name="sortdir" onchange="tmFilters.changeOrder(this);">
            <option value="asc">по возрастанию</option>
            <option value="desc">по убыванию</option>
        </select>
        &nbsp;
        <select class="f_limit" name="limit" onchange="tmFilters.changeOrder(this);">
        <option value="18" selected="selected">18</option>
            <option value="24">24</option>
            <option value="36">36</option>
            <option value="48">48</option>
        </select>
    
        <div class="clearfix"></div>
    </div>
    
    <ul class="goods-list">
    <div id="products">
      [[!tmCatalog]]
        <div class="clearfix"></div>
    </div>
    </ul>
    <ul class="pages" id="pages">
        [[!+page.nav]]
    </ul>
    

    он сидит в [[*content]]
    использует шаблон product, который также сидит в чанке

    <li class="goods-item">
      <div itemscope itemtype="http://schema.org/Product">
    					<div class="goods-left">
    					  <p class="goods-title"><a href="[[~[[+id]]]]"><span itemprop="name">[[+pagetitle]]</span>
    					  </a></p>
    					  <a href="[[~[[+id]]]]" title="[[+pagetitle]]">
    					    <div itemprop="image" href="/assets/cache/Pic/[[+tv.image]]/132x132-fields.jpeg">[[+tv.image:pic=`w=132&h=132&zc=1&bgcolor=#ffffff`]]
    					      <meta itemprop="width" content="132">
    					      <meta itemprop="height" content="132">
    					    </div>
    
    					   </a>
    					
    						<!--вывод кнопки добавить в корзину в списке товаров-->
    					   [[$sendtobasketinlist? &id=`[[+id]]`&pagetitle=`[[+pagetitle]]`]]				
    					
    					<div class="goods-right"><span itemprop="description">
    						[[+introtext]]</span>
    
    						  <a itemprop="url" href="[[~[[+id]]]]">Подробнее &rsaquo;</a>
    					</div>
    </div>
    </div>
    </li>
    

    ну и третий чанк sendbasketinlist

     <div class="shk-item"> <form action="[[~[[*id]]]]" method="post">
       [[+tv.size:replace=`[[*id]]==[[+id]]`]]
    						<div class="order">
    <div itemprop="offers" itemscope itemtype="https://schema.org/Offer" class="product-tocart">
      <hr>
      <input type="hidden" name="shk-id" value="[[+id]]" />
      <input type="hidden" name="test__[[+id]]__add" value="[[+tv.namemod]]" />
      <input type="hidden" name="shk-name" value="[[+pagetitle]][[+tv.namemod]]" />
      <input type="hidden" name="shk-count" value="1" size="2" maxlength="3" />
       [[+param+]]
      <span class="shk-price" id="stuff_[[+id]]_price" style="font-family:'PT Sans',serif; font-size:120%; color:#006699">[[currenciesPrice?price=`[[+tv.price]]`&toCur=`RUR`&fromCur=`[[+tv.currency]]`&printFormat=`%s %s`]]</span>
        <span itemprop="price" class="shk-price" id="stuff_[[+id]]_price" style="font-size:80%; color:#bdc2c8" content="[[!currenciesPrice?price=`[[+tv.price]]`&fromCur=`[[+tv.currency]]`&pricevar=`1`&printFormat=`%s`]]">([[currenciesPrice?price=`[[+tv.price]]`&fromCur=`[[+tv.currency]]`&toCur=`[[+tv.currency]]`&printFormat=`%s %s`]])</span>
          <meta itemprop="priceCurrency" content=[[!currenciesCurrent]]></br>
        <button type="submit" class="isubmit" name="shk-submit" id="cartbasket_[[+id]]" class="shk-but">В корзину</button></br>
    
    </form>
    
  • тут сложность что глюк искусственно не получается воспроизвести. вручную курс меняешь - отрабатывает нормально на некэш/кэш. А когда курс автоматом с цб подтягивался, то оказывается кэшируемое значение висело. Сегодня только обнаружил - на 4% курс ушел, то есть месяц почти кэш висел)). Жду ночи посмотреть обновится или нет. Если нет, то папку cash в core удаляю и обновляется
    p/s
    некэш/кэш это про сниппеты - один из другого вызывается, видимо здесь проблема
    некэш - вызов сниппета [[!tmCatalog]]
    кэш - вызов сниппета [[currenciesPrice]] внутри шаблона, который так понял подгружает tmCatalog

  • Покажите все параметры в наборе параметров, который используется.

  • @Andchir
    у меня на каждую категорию свой набор параметров гетпродуктс(или гетпейдж, запутался уже), вот пример одной:
    0_1497981968982_upload-60acbed3-59d8-4903-9e2d-45f7d8909e97
    сам набор в шаблоне потом вызываю параметром
    0_1497982041028_upload-0b1dabf3-21f3-4727-b9de-570df28ba6b6

    нагородил, чтоб "по умолчанию" загружалось и лишние товары из других категорий, попадающие под фильтр, не залетали в выдачу
    и параметры гетпродуктс по умолчанию
    0_1497982342751_upload-63dea728-e85b-4600-8213-d405c1de502f
    0_1497982359758_upload-30b6ef54-01a7-48e0-9280-2bca27df49dc

  • и набор который к гетпейдж привязан (прописан в настройках тагменеджера)
    0_1497982551075_upload-e7860fd0-3036-4073-963b-b45953ecaa29
    0_1497982576085_upload-c562d4f8-ccb2-427c-b36c-00348d9bd62e

  • раскрутил цепочку и нашел ошибку:) Андрей, спасибо, ключевой момент был в вашем первом совете про кэшируемость. О том что кэшируемое не кэшируется. У меня в одном месте цепочка сниппетов в правило не попала.

  • Эта запись удалена!
 

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

  • M

    @Andchir , спасибо. Проблема и правда была в одном из плагинов, который на другом сайте нормально работает

    Читать далее
  • Что нового в Shopkeeper 4.0.3:

    Исправлено некорректное определение языка по умолчанию В настройках в админке скрываются пароли. Добавлена возможность загружать картинки для категорий. shopkeeper.js - добавлена функция updateProductsPrice() для поддержки текстовых полей для цены. Twig-функции contentList() и includeContent() вынесены в отдельный класс. Добавлено событие "order.before_create". Сортировка всех полей типа контента перетаскиванием. Автоматическое сохранение сортировки полей при сохранении типа контента (не нужно нажимать на отдельную кнопку). В интерфейсе админа добавлено поле поиска для списка Composer-пакетов.

    Скачать можно на главной странице https://modx-shopkeeper.ru/

    Читать далее
  • Вот этот плагин:
    0_1550334109280_screenshot_022.png

    Вроде по умолчанию он выключен. Надо включить. Но плагин работает только на редактирование товаров, при удалении он делалать ничего не будет. Только что проверил кнопку, всё работает корректно, фильтры удаляются и добавляются, когда нужно. Но нужно очищать корзину после удаления товаров (возможно баг).

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

    @Andchir Если нажимаю кнопочку "Обновить значения", то в фильтрах появляются как раз те самые удаленные значения фильтра.. Потом приходится Ручками выбирать эти удаленные значения.
    вот так выглядит Управление фильтрами когда удаляешь ручками: https://yadi.sk/i/_zw64CGkZ_sAYg
    А вот так выглядит когда просто нажимаешь "Обновить значения": https://yadi.sk/i/7WFbXC6xV5sQAw (красным выделено, то что приходится постоянно удалять

    Читать далее