Павел Романов

Павел Романов

С нами с 03 марта 2014; Место в рейтинге пользователей: #43
05 августа 2017, 20:16
2
+1
Делайте просто ссылками, а не select-ом:

<div class="sorting__cat sorting__cat-top" id="mse2_sort">
	<div class="selectheader">По умолчанию</div>
	<div class="selectbody" style="display:none;">
		<a href="#" data-sort="resource|menuindex" data-default="asc" class="sort" >По умолчанию</a>
		<a href="#" data-sort="resource|pagetitle" data-default="asc" class="sort" >Название (А - Я)</a>
		<a href="#" data-sort="resource|pagetitle" data-default="desc" class="sort" >Название (Я - А)</a>
		<a href="#" data-sort="ms|price" data-default="asc" class="sort" >Цена (по возрастанию)</a>
		<a href="#" data-sort="ms|price" data-default="desc" class="sort" >Цена (по убыванию)</a>
	</div>
</div>

selectbody выводите по клику или наведению на selectheader.
В сам selectheader помещайте текст через JS на основании .sort.active.

Ну или попробуйте переопределить свойство sort_link, добавив в вызов mFilter2 параметр:
&filterOptions=`{"sort_link:": "#mse2_sort option"}`
29 июля 2017, 11:52
0
Да все правильно делаете.
Но вообще, должно работать. TV точно называется slider?

Если в чанке mini_sliderTPL прописать:
[[+tv.slider]]

и вывести так:
[[getResources?
&parents=`6,10,12,15`
&showHidden=`1`
&tpl=`mini_sliderTPL`
&limit=`7`
&includeTVs=`1`
]]

Единички выводятся там, где отмечены?
28 июля 2017, 19:10
0
Думаю, getPage для слайдера не нужен ))
Попробуйте так:
[[getResources?
&parents=`6,10,12,15`
&showHidden=`1`
&tpl=`mini_sliderTPL`
&limit=`7`
&includeTVs=`1`
&tvFilters=`slider===1`
]]
23 июля 2017, 11:19
0
Попробуйте в вызов добавить:
&toPlaceholders=`my.`

И сделайте плейсхолдеры некешируемыми:
[[!+my.tv|seminartype]]
[[!+my.tv|for]]
[[!+my.results]]
14 июля 2017, 11:32
+1
Добавьте GET-параметр в кнопку:
<a data-type="iframe" class="button-link" data-src="[[~7? &subject=`Тема1`]]" href="javascript:;">Заказать</a>

А в самой форме ловите и подставляйте:
<input name="subject" value="[[!#GET.subject:default=`Тема письма по-умолчанию`]]" />

Если pdoTools не установлен, то сделайте простенький сниппет getSubj:
<?php
return htmlentities(trim(strip_tags((string) $_GET['subject'])), ENT_QUOTES, 'UTF-8', false);

И тогда так:
<input name="subject" value="[[!getSubj:default=`Тема письма по-умолчанию`]]" />
PS
Одновременно с Алексеем )))
12 июля 2017, 16:11
+1
Так у Вас это один ресурс, в котором MIGX-поле partners которое надо обработать?
Тогда все проще:
<?php
if(!$tv) return;
$countries = array();
$arr = json_decode($tv, true);
foreach($arr as $partner){
	$countries[] = $partner['country'];
}
$countries = array_unique($countries);
natsort($countries);
foreach($countries as $country){
    $out .= $modx->getChunk($tpl, array('country'=>$country));
}
return $out;

И вызываете:
[[getCountries? 
&tv=`[[*partners]]`
&tpl=`country-tpl`
]]


Если же структура такая:
Раздел (15)
	Ресурс(16)
	Ресурс(17)
	Ресурс(18)
	...

… и эти TV partners у ресурсов 16, 17 и 18, то сниппет такой:
<?php
if(!$tvname) return;
if(!$parent) $parent = $modx->resource->get('id');

$countries = array();

foreach ($modx->getIterator('modResource', array('parent' => $parent)) as $resource) {
	$tv = $resource->getTVValue($tvname);
	$arr = json_decode($tv, true);
	foreach($arr as $partner){
    		$countries[] = $partner['country'];
	}
}

$countries = array_unique($countries);
natsort($countries);

foreach($countries as $country){
    $out .= $modx->getChunk($tpl, array('country'=>$country));
}

return $out;

И тогда вызываете:
[[getCountries? 
&parent=`15`  
&tvname=`partners`
&tpl=`country-tpl`
]]
11 июля 2017, 20:02
0
Угу. Потому и попросил показать, что выводит поле ))
11 июля 2017, 17:19
0
Так что-нибудь выводит?
<?php
if(!$tvname) return;
if(!$parent) $parent = $modx->resource->get('id');

$countries = array();

foreach ($modx->getIterator('modResource', array('parent' => $parent)) as $resource) {
	$tv = $resource->getTVValue($tvname);
	echo $tv;
	$arr = json_decode($tv, true);
    	$countries[] = $arr[0]['country'];
}

$countries = array_unique($countries);
natsort($countries);

foreach($countries as $country){
    $out .= $modx->getChunk($tpl, array('country'=>$country));
}

return $out;
11 июля 2017, 15:45
0
Попробуйте через JS:

<span id="clr">Все</span>

<script>
    $(document).ready(function(){
        $("#clr").click(function(){
            $('input[name="prodtype"]').prop("checked",""); // тут вместо prodtype - имя Вашего параметра
            mSearch2.submit();
        });
    });
</script>
11 июля 2017, 15:10
+3
У mFilter2 есть параметр &toSeparatePlaceholders.
Цитата из документации:
Работает так же как и &toPlaceholders, только в раздельные плейсхолдеры попадает еще и filters. Например, если вы укажете &toSeparatePlaceholders=`my.` и &filters=`tv|test,resource|pagetitle` то получите плейсхолдеры [[+my.results]], [[+my.total]], [[+my.tv|test]] и [[+my.resource|pagetitle]].

Соответственно, можете вызов сделать общим, а блоки фильтров выводить по отдельности — категории, бренды и тип товаров.
11 июля 2017, 09:29
0
Если просто вывести значение этого MIGX-TV на странице какого-нибудь ресурса с ним, то что отображается?
[[*имя_tv]]
10 июля 2017, 16:27
+2
Тут getImageList не нужен.
Сниппет getCountries:

<?php
if(!$tvname) return;
if(!$parent) $parent = $modx->resource->get('id');

$countries = array();

foreach ($modx->getIterator('modResource', array('parent' => $parent)) as $resource) {
	$tv = $resource->getTVValue($tvname);
	$arr = json_decode($tv, true);
    	$countries[] = $arr[0]['country'];
}

$countries = array_unique($countries);
natsort($countries);

foreach($countries as $country){
    $out .= $modx->getChunk($tpl, array('country'=>$country));
}

return $out;

Вызываете:
[[getCountries? 
&parent=`15`  
&tvname=`имя_TV`
&tpl=`country-tpl`
]]

&parent — родитель ресурсов с этой MIGX-TV (по умолчанию подставляется текущий).
&tvname — имя MIGX-TV
&tpl — чанк-шаблон ссылки. Единственный плейсхолдер — [[+country]]:

<a href="#" class="filter" data-filter="[[+country]]">[[+country]]</a>
06 июля 2017, 11:52
+1
Параметры pdoResources нужно указывать внутри вызова pdoPage
<div id="pdopage">
    [[!+page.nav]]
    <div class="rows">
        [[!pdoPage?
            &ajaxMode=`button`
            &limit=`2`
            &tvFilters=`[[!tagLinks? &get=`1`]]`
            &includeTVs=`autotag`
            &tpl=`articlePageTpl`
        ]]
    </div>
</div>
04 июля 2017, 18:13
0
А если кешировать?
[[getImageList?
&tvname=`plottage`
&tpl=`tpl.plottage`
&docid=`[[+id]]`
]]

Можно еще попробовать напрямую:
[[pdoResources?
&parents=`8`
&limit=`0`
&includeTVs=`plottage`
&tpl=`plottage`
]]

А в чанке:
[[getImageList? &value=`[[+tv.plottage]]`]]
02 июля 2017, 11:44
0
Есть плагин DirectResizeRevo.
Делает превьюшки, кеширует, можно настроить под любой лайтбокс.
21 июня 2017, 13:00
+1
Используйте модификаторы.
Например, для ресурса с шаблоном ID которого = 5:
[[+template:is=`5`:then=`[[+uri]]`:else=`[[~[[+parent]]]]`]]
16 июня 2017, 16:47
0
Попробуйте так:

[[pdoResources?
    &parents=`4`
    &depth=`5`
    &limit=`100`
    &sortby=`{ "parent":"ASC", "menuindex":"ASC" }`
    &templates=`10`
    &tpl=`tplSklad`
]]
10 июня 2017, 19:31
0
А так?
<div class="items">
        <div id="pdopage">
		[[!+page.nav]]
            	<div class="rows">
            		[[!pdoPage?
            		&ajaxMode=`button`
            		&tpl=`tplItem`
                        &includeTVs=`image,file`
			&prepareTVs=`image,file`
                        &idx=`1`
                        &limit=`5`
                        &sortby=`publishedon`
            		]]
		</div>        	
	</div>
</div>
10 июня 2017, 10:16
0
Попробуйте так:
[[#[[*hotel]].images-tours_01:isnot=``:then=`
    <img src="[[#[[*hotel]].images-tours_01" alt="" />
`]]

А вообще в сниппетах условия прописываются так:
[[Snippet:is=``:then=``:else=``? 
&param=`***` 
....
]]
03 июня 2017, 15:18
0
Проверьте без условия:
<?php
$modx->log(modX::LOG_LEVEL_ERROR, 'бла-бла-бла');

И если есть еще какие-то плагины на OnDocFormSave, поиграйтесь с приоритетом.