Тагменеджер, при вызове 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



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


  • Администраторы

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


Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.