Конфликт вызова msProduct и pdoResource на одной странице
Добрый вечер!
В шаблоне товара идет последовательный вызов нескольких сниппетов (пока схематичное описание):
Подскажите, пожалуйста, как можно это исправить?
Подробный код конфликтующих сниппетов:
Код tpl.Tkani.Accordion:
Код tpl.Tkani2 внутри этого сниппета:
Код tpl.msProducts.Similar:
В шаблоне товара идет последовательный вызов нескольких сниппетов (пока схематичное описание):
- [[!msGallery]]
- [[!msOptionsPrice.initialize]]
- [[!msOptionsPrice.option]]
- [[pdoField]] (несколько разных)
- [[!pdoResources]]
- [[!pdoResources]] через [[!pdoPage]] — вызывается внутри чанка-шаблона сниппета №5
- [[!msProducts?]]
Подскажите, пожалуйста, как можно это исправить?
Подробный код конфликтующих сниппетов:
[[!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>
Комментарии: 6
явно в проблемных сниппетах параметры не хотите указать? хотя бы &tpl
Конфликтуют эти сниппеты:
[[!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:
Код tpl.Tkani2 внутри этого сниппета:
Код tpl.msProducts.Similar:
<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>
Конечно, все параметры подробно указаны и код очень не маленький, поэтому начала со схематичного описания проблемы. Вот полный код шаблона Товара (ну разве что без 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]]`
]]
Вам там выше советуют перенести tpl из INLINE в чанк
Спасибо, но проблема уже решена.
tpl у меня и так все вынесены в чанк. Инлайном указана только обертка (tplWrapper). Но проблема была не в этом. В чем точно она была, я так и не поняла...., но сделала я следующие действия: 1) заменила вызов сниппета с pdoPage на pdoResouces (мне в принципе пагинация была не нужна) и 2) перенесла из отдельного чанка вызов сниппета похожих товаров в чанк с основным кодом товара.
Когда я замену с pdoPage на pdoResouces сделала, перестали подставляться левые результаты. А когда перенесла снипет msProducts в один чанк с другими вышеописанными, то все нормально заработало.
tpl у меня и так все вынесены в чанк. Инлайном указана только обертка (tplWrapper). Но проблема была не в этом. В чем точно она была, я так и не поняла...., но сделала я следующие действия: 1) заменила вызов сниппета с pdoPage на pdoResouces (мне в принципе пагинация была не нужна) и 2) перенесла из отдельного чанка вызов сниппета похожих товаров в чанк с основным кодом товара.
Когда я замену с pdoPage на pdoResouces сделала, перестали подставляться левые результаты. А когда перенесла снипет msProducts в один чанк с другими вышеописанными, то все нормально заработало.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.