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

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

С нами с 03 марта 2014; Место в рейтинге пользователей: #43
Павел Романов
08 декабря 2015, 15:30
0
Да, точно, опечатался ))
Убрать текущий можно так:
&resources=`-[[*id]]`
Павел Романов
08 декабря 2015, 15:21
0
Что выводит такая конструкция, если её прописать на странице «Аргус 1»?
[[*pagetitle:similar]]
Павел Романов
08 декабря 2015, 15:12
0
Тогда можно сделать такой сниппет:
<?php
$arr = explode(' ', $input);
$last = array_pop($arr);
unset($last);
return implode(' ', $arr);
Назвать его, к примеру, similar и в условии прописать:
&where=`{"pagetitle:LIKE":"%[[*pagetitle:similar]]%"}
Но тогда, естественно, не использовать пробелы в цифровых обозначениях. То есть «2А», а не «2 А», поскольку тут название разбивается именно по пробелам.
Павел Романов
08 декабря 2015, 14:55
0
Кстати да, об исходном условии-то мы и забыли )))
А у Вас все объекты называются по такому шаблону? То есть *****1, ***2, ****3 и т. д.?
Павел Романов
08 декабря 2015, 14:27
0
Что у Вас в чанке catalog_item?
Павел Романов
08 декабря 2015, 14:13
0
В контейнере с ID=1 действительно есть ресурсы?
Они опубликованы?
Павел Романов
08 декабря 2015, 14:12
0
Согласен с mekirile. Проверьте без условия, только sortdir уберите (он не нужен, поскольку уже прописан в sortby):
[[getResources?
        &limit=`15`
        &parents=`1`
        &sortby=`{"createdon":"DESC"}`
	&tpl=`@INLINE [[+pagetitle]]`
]]
Если так что-то выведет, то поставьте условие:
[[getResources?
        &limit=`15`
        &parents=`1`
        &sortby=`{"createdon":"DESC"}`
        &where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
	&tpl=`@INLINE [[+pagetitle]]`
]]
Если результатов не будет замените параметр where на такой:
&where=`{"pagetitle:LIKE":"%[[*pagetitle]]%"}`
и естественно, пропишите свой &tpl.
Павел Романов
08 декабря 2015, 13:51
0
У Вас стоит сниппет msProducts? Нет. Значит и не надо его писать ).

Если у Вас установлен pdoTools, то в &element вообще ничего писать не нужно — по умолчанию используется сниппет pdoResources.

Если pdoTools не установлен, а есть getPage с getResources, то так:
[[!getPage?
        &element=`getResources`
        &limit=`15`
        &parents=`1`
        &sortby=`{"createdon":"DESC"}`
        &where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
        &sortdir=`DESC`
        ]]
Павел Романов
08 декабря 2015, 12:41
+1
Также, только упростить немного ))):
[[!pdoPage?
.........
    &where=`{"pagetitle:REGEXP":"[[*pagetitle]]"}`
]]
Павел Романов
07 декабря 2015, 12:29
0
Через плюс ставится только в чанке-шаблоне вывода у сниппетов типа getResources и т. д. На самой странице, естественно, через [[*...

Можно и встроенными модификаторами, но Вам же нужно получить курс, т. е. значение TV у другого ресурса. Я не знаю установлен у Вас getResourceField или pdoTools, поэтому проще сделать вышеописанный сниппет.
А так-то да (если pdoTools стоит и включен новый парсер):
[[*cena_proekta_doma:div=`[[#****.cena_rur_auto]]`]]
Павел Романов
07 декабря 2015, 12:03
0
А если так?
[[!getprice? &input=`[[+tv.cena_proekta_doma]]`]]
Павел Романов
07 декабря 2015, 11:51
0
Если нужен просто вывод пересчитанной цены, почему нет?
Это самое простое решение в данном случае и возможно, оно удовлетворит Алексея.
Павел Романов
07 декабря 2015, 11:40
0
Сделайте сниппет «getprice»:
$resource = $modx->getObject('modResource', ****);
$price_r = $resource->getTVValue('cena_rur_auto');
return $input / $price_r;

Вместо **** в первой строке поставьте ID корневого ресурса каталога, у которого прописан курс и используйте как модификатор.

В чанках:
[[+tv.cena_proekta_doma:getprice]]
В шаблоне:
[[*cena_proekta_doma:getprice]]
Павел Романов
06 декабря 2015, 18:54
1
+2
Да, верное. Если Вы используете formit2resource отсюда, то у Вас все эти компании в ресурсах.
Соответственно, Вы можете проверять существование созданного пользователем ресурса хоть через getResources:
[[getResources?
....
&where=`{"ctreatedby":"[[!+modx.user.id]]"}`
&toPlaceholder=`list`
&totalVar=`count`
&showUnpublished=`1`
]]
[[+count:gt=`0`:then=`вывод формы`:else=`Текст про невозможность создания`]]
Павел Романов
06 декабря 2015, 18:09
+2
Проверять поле createdby у ресурса — туда пишется ID создателя.
Соответственно, пробежаться по созданным ресурсам, получить их ID, если будет созданный текущим юзером, то форму не выводить.
То же и с товарами. Если их больше 5, вывести сообщение вместо формы.
Павел Романов
03 декабря 2015, 00:47
0
Есть же CatalogFill — он и XML, вроде, понимает.
Павел Романов
24 ноября 2015, 19:36
+1
Параметр &tvFilters работает только с TV, что и следует из его названия, в то время как &where понимает стандартные поля, коим и является menuindex ).
Павел Романов
24 ноября 2015, 19:27
+4
А если так:
&where=`{"menuindex:<":[[*menuindex]]}`
?

Павел Романов
19 ноября 2015, 17:27
5
+4
Делаете два сниппета.

Первый sortLink:
<?php
if($_GET['sort'] == $field and $_GET['dir'] == 'ASC') {$arr='&_uarr;';}
if($_GET['sort'] == $field and $_GET['dir'] == 'DESC') {$arr='&_darr;';}
if(!$_GET[$field]){
	if($_GET['dir'] == 'ASC'){
		$output = '<a href="'.$url.'?'.$q.'sort='.$field.'&dir=DESC#prod">'.$name.''.$arr.'</a>';
	} else {
		$output = '<a href="'.$url.'?'.$q.'sort='.$field.'&dir=ASC#prod">'.$name.''.$arr.'</a>';
	}
} else {
	$output = '<a href="'.$url.'?'.$q.'sort='.$field.'&dir=ASC#prod">'.$name.'</a>';
}
return $output;
(во второй и третьей строке только уберите нижнее подчеркивание в &_uarr; и &_darr;)

Второй Sort:
<?php
$sort = $_GET['sort'];
if($sort == '') {
    $output='&sortby=`{"menuindex":"ASC"}`';
} else {
    $output = '&sortby=`{"'.$sort.'":"'.$_GET['dir'].'"}`';
}
return $output;

Используете так:
<div class="sort">
Сортировать: 
[[!sortLink? &url=`[[*uri]]` &field=`pagetitle` &name=`по названию`]]  
[[!sortLink? &url=`[[*uri]]` &field=`price` &name=`по цене`]]  
</div>
<div class="results">
[[!pdoResources?
&parents=`...`
&tpl=`...`
.........
[[!Sort]]
]]
</div>
Павел Романов
29 октября 2015, 11:51
0
Не совсем понятно, что Вам требуется.
Конструкция
[[UltimateParent? &id=`[[+wf.docid]]`]]
выдает просто ID текущего ресурса.
Как я понимаю, логика такая: «если ID открытого ресурса такой же как у пункта меню, то вывести topLevel, иначе subLevel»?
Если так, то вообще не надо огород городить:
[[+id:is=`[[*id]]`:then=`topLevel`:else=`subLevel`]]
Или я не понял задачу?