Конфликт вызова msProduct и pdoResource на одной странице

Добрый вечер!
В шаблоне товара идет последовательный вызов нескольких сниппетов (пока схематичное описание):

  1. [[!msGallery]]
  2. [[!msOptionsPrice.initialize]]
  3. [[!msOptionsPrice.option]]
  4. [[pdoField]] (несколько разных)
  5. [[!pdoResources]]
  6. [[!pdoResources]] через [[!pdoPage]] — вызывается внутри чанка-шаблона сниппета №5
  7. [[!msProducts?]]
Проблема в том, что последний сниппет работает некорректно: в него подставляет каким-то образом контент из чанка-шаблона для сниппета № 6. Если отключить вызов любого из сниппетов № 5, 6 или 7, то все работает нормально. &showLog в последнем сниппете не выводится…

Подскажите, пожалуйста, как можно это исправить?

Подробный код конфликтующих сниппетов:

[[!pdoResources?
	&tpl=`tpl.Tkani.Accordion`
	&sortby=`pagetitle`
	&sortdir=`ASC`
	&limit=`0`
	&parents=`60`
	&includeContent=`1`
	&showUnpublished=`1`
	&depth=`0`
	&resources=`[[*tkanCollection]]`
]]

[[!msProducts?
	&tpl=`tpl.msProducts.Similar`
	&limit=`12`
	&sortby=`Data.price`
	&parents=`19`
	&includeTVs=`price`
	&includeThumbs=`medium`
	&tplWrapper=`@INLINE 
	<div class="container">
		<div class="headline"><h2>Похожие товары</h2></div>
		<div class="margin-bottom-40">
			<div class="bx-wrapper">
			<div class="bx-viewport">
			  <ul id="list" class="bxslider recent-work">
				[[+output]]
			  </ul>
			</div>
		  </div>
		</div>              
	</div>`
	&link=`1`
	&master=`[[*id]]`
]]


Код tpl.Tkani.Accordion:

<div class="panel panel-default">
  <div class="panel-heading">
    <h4 class="panel-title">
        <a class="accordion-toggle" data-option="[[+pagetitle]]" data-toggle="collapse" data-parent="#accordion-1" href="#collapse-[[+alias]]">
          Коллекция тканей "[[+pagetitle:ucase]]"
        </a>
    </h4>
  </div>
  <div id="collapse-[[+alias]]" class="panel-collapse collapse">
    <div class="panel-body">
      <div class="row">
        [[!pdoPage?
          &tpl=`tpl.Tkani2`
          &limit=`0`
          &sortby=`pagetitle`
          &parents=`[[+id]]`
          &includeContent=`1`
          &tvPrefix=``
          &includeTVs=`price,img`
          &showUnpublished=`1`
          &hideContainers=`1`
          &sortdir=`ASC`
          &resources=`[[*tkanID]]`
        ]]
        [[!+page.nav]]
      </div>
    </div>
  </div>
</div>


Код tpl.Tkani2 внутри этого сниппета:

<div class="col-md-3 tkani">
  <div class="thumbnails thumbnail-style thumbnail-kenburn carousel-v1">
    <div class="thumbnail-img">
      <div class="overflow-hidden">
        <img class="img-responsive" alt="[[+pagetitle]]" src="[[+img]]" />
      </div>
      <a class="btn-more hover-effect" href="#">[[+pagetitle]]</a>                   
    </div>
    <div class="caption">
      <a href="#" data-title="[[+pagetitle]]" data-img="[[+img]]" class="tkan tkan0 tkan1tkan tkan2tkan btn-u btn-defaul"><span><i class="icon icon-plus"></i></span>выбрать для всего изделия</a>
      <a href="#" data-title="[[+pagetitle]]" data-img="[[+img]]" class="tkan tkan1 tkan1tkan btn-u btn-defaul"><span><i class="icon icon-plus"></i></span>выбрать для спинки и сиденья</a>
      <a href="#" data-title="[[+pagetitle]]" data-img="[[+img]]" class="tkan tkan2 tkan2tkan btn-u btn-defaul"><span><i class="icon icon-plus"></i></span>выбрать для боковины и задника</a>
    </div>
  </div>
</div>


Код tpl.msProducts.Similar:

<li>
  <a href="{$id | url}">
    {if $thumb?}
      <em class="overflow-hidden"><img src="[[+image:phpthumbon=`w=400&h=270&zc=0`]]" alt="{$pagetitle}" title="{$pagetitle}"></em>
    {else}
      <em class="overflow-hidden"><img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
           srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
           class="mw-100" alt="{$pagetitle}" title="{$pagetitle}"/></em>
    {/if}
    <span>
    <strong>{$pagetitle}</strong>
      <i class="price ml-md-3">{$price} {'ms2_frontend_currency' | lexicon}</i>
      {if $old_price?}
      <i class="old_price ml-md-3" style="text-decoration: line-through;">{$old_price} {'ms2_frontend_currency' | lexicon}</i>
      {/if}
    </span>
  </a>
</li>
Дарья Сизова
23 апреля 2020, 21:11
modx.pro
613
0

Комментарии: 6

Антон Тарасов
24 апреля 2020, 08:37
0
явно в проблемных сниппетах параметры не хотите указать? хотя бы &tpl
    Дарья Сизова
    24 апреля 2020, 14:17
    0
    Конфликтуют эти сниппеты:

    [[!pdoResources?
              	&tpl=`tpl.Tkani.Accordion`
              	&sortby=`pagetitle`
              	&sortdir=`ASC`
              	&limit=`0`
              	&parents=`60`
              	&includeContent=`1`
              	&showUnpublished=`1`
              	&depth=`0`
              	&resources=`[[*tkanCollection]]`
              ]]
    и

    [[!msProducts?
    	&tpl=`tpl.msProducts.Similar`
    	&limit=`12`
    	&sortby=`Data.price`
    	&parents=`19`
    	&includeTVs=`price`
    	&includeThumbs=`medium`
    	&tplWrapper=`@INLINE 
    	<div class="container">
        <div class="headline"><h2>Похожие товары</h2></div>
        <div class="margin-bottom-40">
        	<div class="bx-wrapper">
          	<div class="bx-viewport">
              <ul id="list" class="bxslider recent-work">
                [[+output]]
              </ul>
            </div>
          </div>
        </div>              
      </div>
    	`
    	&link=`1`
    	&master=`[[*id]]`
    ]]
      Дарья Сизова
      24 апреля 2020, 14:20
      0
      Код tpl.Tkani.Accordion:
      <div class="panel panel-default">
        <div class="panel-heading">
          <h4 class="panel-title">
              <a class="accordion-toggle" data-option="[[+pagetitle]]" data-toggle="collapse" data-parent="#accordion-1" href="#collapse-[[+alias]]">
                Коллекция тканей "[[+pagetitle:ucase]]"
              </a>
          </h4>
        </div>
        <div id="collapse-[[+alias]]" class="panel-collapse collapse">
          <div class="panel-body">
            <div class="row">
              [[!pdoPage?
              	&tpl=`tpl.Tkani2`
              	&limit=`0`
              	&sortby=`pagetitle`
              	&parents=`[[+id]]`
              	&includeContent=`1`
              	&tvPrefix=``
              	&includeTVs=`price,img`
                &showUnpublished=`1`
                &hideContainers=`1`
                &sortdir=`ASC`
                &resources=`[[*tkanID]]`
              ]]
              [[!+page.nav]]
            </div>
          </div>
        </div>
      </div>

      Код tpl.Tkani2 внутри этого сниппета:
      <div class="col-md-3 tkani">
        <div class="thumbnails thumbnail-style thumbnail-kenburn carousel-v1">
          <div class="thumbnail-img">
            <div class="overflow-hidden">
              <img class="img-responsive" alt="[[+pagetitle]]" src="[[+img]]" />
            </div>
            <a class="btn-more hover-effect" href="#">[[+pagetitle]]</a>                   
          </div>
          <div class="caption">
            <a href="#" data-title="[[+pagetitle]]" data-img="[[+img]]" class="tkan tkan0 tkan1tkan tkan2tkan btn-u btn-defaul"><span><i class="icon icon-plus"></i></span>выбрать для всего изделия</a>
            <a href="#" data-title="[[+pagetitle]]" data-img="[[+img]]" class="tkan tkan1 tkan1tkan btn-u btn-defaul"><span><i class="icon icon-plus"></i></span>выбрать для спинки и сиденья</a>
            <a href="#" data-title="[[+pagetitle]]" data-img="[[+img]]" class="tkan tkan2 tkan2tkan btn-u btn-defaul"><span><i class="icon icon-plus"></i></span>выбрать для боковины и задника</a>
          </div>
        </div>
      </div>

      Код tpl.msProducts.Similar:
      <li>
        <a href="{$id | url}">
          {if $thumb?}
            <em class="overflow-hidden"><img src="[[+image:phpthumbon=`w=400&h=270&zc=0`]]" alt="{$pagetitle}" title="{$pagetitle}"></em>
          {else}
            <em class="overflow-hidden"><img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
                 srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
                 class="mw-100" alt="{$pagetitle}" title="{$pagetitle}"/></em>
          {/if}
          <span>
          <strong>{$pagetitle}</strong>
            <i class="price ml-md-3">{$price} {'ms2_frontend_currency' | lexicon}</i>
            {if $old_price?}
            <i class="old_price ml-md-3" style="text-decoration: line-through;">{$old_price} {'ms2_frontend_currency' | lexicon}</i>
            {/if}
          </span>
        </a>
      </li>
    Дарья Сизова
    24 апреля 2020, 14:13
    0
    Конечно, все параметры подробно указаны и код очень не маленький, поэтому начала со схематичного описания проблемы. Вот полный код шаблона Товара (ну разве что без head и footer):

    <div class="container">
      <div class="row portfolio-item">
      
        <div class="col-md-6">
          [[!msGallery]]
        </div>
               
        <div class="col-md-6">
          
          [[!msOptionsPrice.initialize]]
          
          <form class="msoptionsprice-product form-horizontal ms2_form" method="post">
            <input type="hidden" name="id" value="[[*id]]"/>
          	<h2>[[*pagetitle]]<!--span class="msoptionsprice-name msoptionsprice-[[*id]]">[[*pagetitle]]</span--></h2>
          	
          	<div class="text-md-left mb-2 mb-md-0">
              [[+new:isnot=``:then=`<span class="badge badge-secondary badge-pill col-auto">[[%ms2_frontend_new]]</span>`]]
              [[+popular:isnot=``:then=`<span class="badge badge-secondary badge-pill col-auto">[[%ms2_frontend_popular]]</span>`]]
              [[+favorite:isnot=``:then=`<span class="badge badge-secondary badge-pill col-auto">[[%ms2_frontend_favorite]]</span>`]]
            </div>
          
            <div class="form-group row align-items-center">
              <label class="col-6 col-md-5 text-right text-md-left col-form-label">[[%ms2_product_article]]:</label>
              <div class="msoptionsprice-article msoptionsprice-[[*id]] col-6 col-md-7">
                [[+article:default=`-`]]
              </div>
            </div>
            <div class="form-group row align-items-center">
              <label class="col-6 col-md-5 text-right text-md-left col-form-label">[[%ms2_product_price]]:</label>
              <div class="col-6 col-md-7">
                <span class="msoptionsprice-cost msoptionsprice-[[*id]]">[[+price]]</span> [[%ms2_frontend_currency]]
                [[+old_price:gt=`0`:then=`
                <span class="old_price ml-2" style="text-decoration: line-through;"><span class="msoptionsprice-old-cost msoptionsprice-[[*id]]">[[+old_price]]</span> [[%ms2_frontend_currency]]</span>
                `:else=``]]
              </div>
            </div>
            <div class="form-group row align-items-center">
              <label class="col-6 col-md-5 text-right text-md-left col-form-label" for="product_price">[[%ms2_cart_count]]:</label>
              <div class="col-6 col-md-7">
                <div class="input-group">
                  <input type="number" name="count" id="product_price" class="form-control" value="1" min="1" max="999" pattern="[0-9]*"/>
                </div>
              </div>
            </div>
            
            [[!msOptionsPrice.option?
            	&tpl=`tpl.msOptionsPrice.unify`
            	&options=`maxdepth,maxheight,maxlength,maxwidth,mindepth,minheight,minlength,minwidth,tkan,tkan1,tkan2,sleeplength,sleepwidth,tkan_collection,text`
              &processColors=`1`
              &constraintOptions=`{
              "tkan_collection":["minwidth"],
              "tkan2":["tkan_collection"]
              }`
              &sortOptions=`price`
            ]]
            
            
            <div class="form-group row align-items-center">
              <div class="col-6 col-md-5 text-right">
              </div>
              <div class="col-6 col-md-7 text-md-left">
                <button type="submit" class="btn-u btn-u-large" name="ms2_action" value="cart/add">
                  Добавить в корзину
                </button>
              </div>
            </div>
          </form>
        </div>
      </div>
      
      <div class="margin-bottom-50 clearfix"></div>
      
      <div class="tab-v2">
        <ul class="nav nav-tabs">
          
          [[pdoField? &id=`42` &field=`content` &toPlaceholder=`tab2`]]
          [[pdoField? &id=`41` &field=`content` &toPlaceholder=`tab3`]]
          [[pdoField? &id=`40` &field=`content` &toPlaceholder=`tab4`]]
          [[pdoField? &id=`47` &field=`content` &toPlaceholder=`tab5`]]
          [[pdoField? &id=`171` &field=`content` &toPlaceholder=`tab8`]]
          
          <li><a href="#tab1" data-toggle="tab"><h4>Характеристики товара</h4></a></li>
          
          <li class="active"><a href="#tab6" data-toggle="tab"><h4>Ткани</h4></a></li>
          
          <li><a href="#tab7" data-toggle="tab"><h4>Деревянные элементы</h4></a></li>
          
          [[*tab2content:notempty=`<li><a href="#tab2" data-toggle="tab"><h4>Как заказать</h4></a></li>`:default=`[[+tab2:notempty=`<li><a href="#tab2" data-toggle="tab"><h4>Как заказать</h4></a></li>`]]
          `]]
          
          [[*tab3content:notempty=`<li><a href="#tab3" data-toggle="tab"><h4>Оплата</h4></a></li>`:default=`[[+tab3:notempty=`<li><a href="#tab3" data-toggle="tab"><h4>Оплата</h4></a></li>`]]
          `]]
          
          [[*tab4content:notempty=`<li><a href="#tab4" data-toggle="tab"><h4>Доставка</h4></a></li>`:default=`[[+tab4:notempty=`<li><a href="#tab4" data-toggle="tab"><h4>Доставка</h4></a></li>`]]
          `]]
          
          [[*tab5content:notempty=`<li><a href="#tab5" data-toggle="tab"><h4>Гарантия</h4></a></li>`:default=`[[+tab5:notempty=`<li><a href="#tab5" data-toggle="tab"><h4>Гарантия</h4></a></li>`]]
          `]]
            
        </ul>
        <div class="margin-bottom-20 clearfix"></div>
        <div class="tab-content">
          <div class="tab-pane" id="tab1">
            [[*content:replace=` -== —`]]
          </div>
          
          <div class="tab-pane active" id="tab6">
            <div class="panel-group acc-v1" id="accordion-1">
              [[!pdoResources?
              	&tpl=`tpl.Tkani.Accordion`
              	&sortby=`pagetitle`
              	&sortdir=`ASC`
              	&limit=`0`
              	&parents=`60`
              	&includeContent=`1`
              	&showUnpublished=`1`
              	&depth=`0`
              	&resources=`[[*tkanCollection]]`
              ]]
            </div>
          </div>
          
          <div class="tab-pane" id="tab7">
            <div class="row">
              <div class="col-md-4">
                [[!pdoResources?
                	&tpl=`tpl.Wood`
                	&sortby=`menuindex`
                	&sortdir=`ASC`
                	&limit=`0`
                	&parents=`171`
                	&includeTVs=`img`
                	&tvPrefix=``
                	&showUnpublished=`1`
                ]]
              </div>
              <div class="col-md-8">
                [[*tab8content:notempty=`[[*tab8content]]`:default=`[[+tab8:notempty=`[[+tab8]]`]]`]]
              </div>
            </div>
            [[*tab7content]]
          </div>
          
          [[*tab2content:notempty=`<div class="tab-pane" id="tab2">[[*tab2content]]</div>
          `:default=`[[+tab2:notempty=`<div class="tab-pane" id="tab2">[[+tab2]]</div>`]]
          `]]
          
          [[*tab3content:notempty=`<div class="tab-pane" id="tab3">[[*tab3content]]</div>
          `:default=`[[+tab3:notempty=`<div class="tab-pane" id="tab3">[[+tab3]]</div>`]]
          `]]
          
          [[*tab4content:notempty=`<div class="tab-pane" id="tab4">[[*tab4content]]</div>
          `:default=`[[+tab4:notempty=`<div class="tab-pane" id="tab4">[[+tab4]]</div>`]]
          `]]
          
          [[*tab5content:notempty=`<div class="tab-pane" id="tab5">[[*tab5content]]</div>
          `:default=`[[+tab5:notempty=`<div class="tab-pane" id="tab5">[[+tab5]]</div>`]]
          `]]
            
        </div>
      </div>
    
      <div class="margin-bottom-60"></div>
    
    </div>
    
    [[-!msProducts?
    	&tpl=`tpl.msProducts.Similar`
    	&limit=`12`
    	&sortby=`Data.price`
    	&parents=`19`
    	&includeTVs=`price`
    	&includeThumbs=`medium`
    	&tplWrapper=`@INLINE 
    	<div class="container">
        <div class="headline"><h2>Похожие товары</h2></div>
        <div class="margin-bottom-40">
        	<div class="bx-wrapper">
          	<div class="bx-viewport">
              <ul id="list" class="bxslider recent-work">
                [[+output]]
              </ul>
            </div>
          </div>
        </div>              
      </div>
    	`
    	&link=`1`
    	&master=`[[*id]]`
    ]]
      Евгений Webinmd
      24 апреля 2020, 22:00
      0
      Вам там выше советуют перенести tpl из INLINE в чанк
        Дарья Сизова
        25 апреля 2020, 00:24
        0
        Спасибо, но проблема уже решена.
        tpl у меня и так все вынесены в чанк. Инлайном указана только обертка (tplWrapper). Но проблема была не в этом. В чем точно она была, я так и не поняла...., но сделала я следующие действия: 1) заменила вызов сниппета с pdoPage на pdoResouces (мне в принципе пагинация была не нужна) и 2) перенесла из отдельного чанка вызов сниппета похожих товаров в чанк с основным кодом товара.
        Когда я замену с pdoPage на pdoResouces сделала, перестали подставляться левые результаты. А когда перенесла снипет msProducts в один чанк с другими вышеописанными, то все нормально заработало.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6