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

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

С нами с 03 марта 2014; Место в рейтинге пользователей: #36
08 сентября 2017, 19:34
+2
Добавит теги на этапе добавления:
....
$new->set('content', '<p>Какой-то контент</p>');
....
31 августа 2017, 13:03
+1
Естественно — в системе же нет ресурса с ID=0.
Проверяйте родителя и выводите соответствующую ссылку:

[[*parent:is=`0`:then=`
<a href="[[++site_url]]">Главная</a>
`:else=`
<a href="[[~[[*parent]]]]">[[#[[*parent]].menutitle]]</a>
`]]
18 августа 2017, 10:26
+2
Попробуйте cделать сниппет:
<?php
return '&where=`["YEAR(FROM_UNIXTIME(modResource.publishedon)) = '.date('Y').'"]`';

и подставить его в вызов:
[[!pdoResources?
&tpl=`nitemEmail`
&limit=`1`
&depth=`0`
&parents=`26`
&tvFilters=`infoCheck==%Статьи%`
&sortby=`RAND()`
&includeTVs=`photo`
[[Snippet]]
]]
16 августа 2017, 12:37
0
Можно использовать pdoTitle.
Или написать сниппет, который будет проверять наличие $_GET['page'] и добавлять что нужно и куда нужно.
14 августа 2017, 23:31
0
Естественно.
Сорри, опечатался )
14 августа 2017, 18:44
0
У товара делаете TV «prtype», где прописываете тип:
Напольная==1||Настенная==2||Плинтус==3

На странице коллекции собираете дочерние товары, у которых отмечены данные значения. Для этого можно сделать сниппет:
<?php
$items = $modx->runSnippet('pdoResources', array(
'limit'=>0,
'parents'=>$modx->resource->get('id'),
'tpl'=>$tpl,
'includeTVs'=>$includeTVs,
'tvFilters'=>'prtype==='.$prtype,
//еще какие-о параметры pdoResources
));

if($items) return $modx->getChunk('outer-tpl', array('items'->$items, 'title'=>$title));

Делаете чанк outer-tpl c [[+title]] (заголовок) и [[+items]] (товары):
<div>
	<h3>[[+title]]</h3>
	<div>[[+items]]</div>
</div>


Вызываете на странице:

[[Snippet?
&tpl=`******`
&includeTVs=`******`
&prtype=`1`
&title=`Напольная`
]]

[[Snippet?
&tpl=`******`
&includeTVs=`******`
&prtype=`2`
&title=`Настенная`
]]

[[Snippet?
&tpl=`******`
&includeTVs=`******`
&prtype=`3`
&title=`Плинтус`
]]
06 августа 2017, 11:20
+1
Можно так:
<script>
$(document).ready(function(){
	$('.selectheader').click(function(){
        	$('.selectbody').slideToggle('fast');
	});
});

$(document).on('mse2_load', function(){
	var active = $('.sort.active').html();
	$('.selectheader').html(active);
	$('.selectbody').slideToggle('fast');
});
</script>
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>