Помогите ускорить вывод

Здравствуйте,
Имею след. конструкцию:

[[!If? &subject=`[[getProducts? &parents=`45` &returnIDs=`1` &depth=`1` &limit=`1` &tvFilters=`{"applicability:LIKE":"%[[*pagetitle]]%"}` &where=`{"template:=":5}`]]` 
&operator=`empty` 
&then=`` 
&else=`
<div class="panel panel-default">
    <div class="panel-heading" role="tab" id="heading-45" href="#collapse-45" data-toggle="collapse" data-parent="#accordion" aria-expanded="false" aria-controls="collapse-45">
		<a class="collapsed sprites i-down" data-toggle="collapse" data-parent="#accordion" href="#collapse-45" aria-expanded="false" aria-controls="collapse-45"></a>
		<a href="#collapse-45" data-toggle="collapse" data-parent="#accordion" aria-expanded="false" aria-controls="collapse-45" class="category-link">Безопасность (Аэрбеги)</a>
	</div>
	<div id="collapse-45" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="heading-45">
		<div class="panel-body">
			<ul class="sub-menu" style="border-left: dotted 1px #999;">
			        [[getProducts? &parents=`45` &toPlaceholder=`result` &tpl=`idparent` &depth=`1` &limit=`0` &tvFilters=`{"applicability:LIKE":"%[[*pagetitle]]%"}` &where=`{"template:=":5}`]]
                    [[getProducts?
                        &parents=`-1`
			&resources=`0[[+result]]`               	
                    	&tpl=`inner_sideTpl_GP`
                    	&limit=`0`
                    	&activeClass=`active`
                    	&orderby=`{"pagetitle":"ASC"}`
                    ]]	    
			</ul>
		</div>
	</div>
</div>
`]]
Но она работает довольно медленно.
Суть в следующем: на сайте больше 11 тыс товаров, код выше выводит пункт меню и его подпункты, которые являются категориями. На странице должны выводится только те категории, в которых есть товары относящиеся к текущей странице. В основном нагрузку, я так понял, несет вывод именно подкатегорий, потому что он там дважды полностью перебирает все имеющиеся товары. Но как сделать по другому до меня пока не дошло.
tsergey
28 февраля 2017, 10:57
modx.pro
936
0

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

Илья Уткин
28 февраля 2017, 15:00
0
[[getProducts? &parents=`45` &toPlaceholder=`result` &tpl=`idparent` &depth=`1` &limit=`0` &tvFilters=`{"applicability:LIKE":"%[[*pagetitle]]%"}` &where=`{"template:=":5}`]]
[[+result:notempty=`
<div class="panel panel-default">
    <div class="panel-heading" role="tab" id="heading-45" href="#collapse-45" data-toggle="collapse" data-parent="#accordion" aria-expanded="false" aria-controls="collapse-45">
		<a class="collapsed sprites i-down" data-toggle="collapse" data-parent="#accordion" href="#collapse-45" aria-expanded="false" aria-controls="collapse-45"></a>
		<a href="#collapse-45" data-toggle="collapse" data-parent="#accordion" aria-expanded="false" aria-controls="collapse-45" class="category-link">Безопасность (Аэрбеги)</a>
	</div>
	<div id="collapse-45" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="heading-45">
		<div class="panel-body">
			<ul class="sub-menu" style="border-left: dotted 1px #999;">
                    [[getProducts?
                        &parents=`-1`
			&resources=`0[[+result]]`               	
                    	&tpl=`inner_sideTpl_GP`
                    	&limit=`0`
                    	&activeClass=`active`
                    	&orderby=`{"pagetitle":"ASC"}`
                    ]]	    
			</ul>
		</div>
	</div>
</div>
`]]

Но это только уберёт двойной вызов. Думаю, основная нагрузка всё-таки в чанке inner_sideTpl_GP
    tsergey
    28 февраля 2017, 17:08
    0
    в inner_sideTpl_GP там просто строчка с пунктом.
    Спасибо что откликнулись
    но не сильно увеличилась скорость с таким вызовом. Это получается один пункт такой, а таких пунктов 20, соответственно много времени занимает постройка такого меню…
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2