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

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

С нами с 03 марта 2014; Место в рейтинге пользователей: #70
Павел Романов
18 июня 2016, 17:21
0
А, ну тогда да.
Сделайте, чтобы в базе было так: #63#||#66#||#636# и все будет гораздо проще ))

Павел Романов
18 июня 2016, 17:04
0
Если у Вас в TV subcategory у товара в базу пишется ||***||, то будет.

У одного товара это ||63||, у другого может быть ||636||,||363|| (если параметр множественный и соответствующим образом настроен), у третьего ||6363|| и тут нет никаких пересечений — это разные строки.
Если прописывать в tvFilters %||[[*id]]||%, то все нормально будет выводиться.
На странице с ID=636 мы же ищем товар, у которого в TV есть именно такая подстрока: ||636||. С какой стати нам выведется товар с ||63||?

Другое дело, что может быть путаница из-за этого || — потому я всегда использую #.
Павел Романов
18 июня 2016, 16:47
0
Это понятно. Я сам обычно использую ## или ::
А что у Вас не работает-то? Если Вы используете || в качестве обёртки, то это должно фунциклировать:
&tvFilters=`subcategory==%||[[*id]]||%`

Только вызов у Вас какой-то странный. Сделайте так:
[[pdoResources?
        &parents=`53`
        &includeTVs=`image,price,price-wsale,subcategory`
        &tpl=`product-item`
        &templates=`4`
        &tvFilters=`subcategory==%||[[*id]]||%`
        &tvFiltersOrDelimiter=`:`
]]
Павел Романов
18 июня 2016, 16:30
0
А так?
&tvFilters=`subcategory==%[[*id]]%`
Павел Романов
15 июня 2016, 19:04
0
Так в логе же:

[2016-06-15 19:03:26] (ERROR @ /home/s5689/www/core/components/formit/model/formit/fihooks.class.php : 552) [FormIt] Произошла ошибка при попытке отправить почту. Невозможно запустить функцию mail.

И у многих хостеров на тестовый период mail() отключена (TimeWeb, например).
Павел Романов
10 июня 2016, 14:57
+2
Сделайте сниппет amp (только пробел уберите тут: & amp;):
<?php
return str_replace('&', '& amp;', $input);

И используйте как модификатор:
[[+pagetitle:amp]]

Ну или встроенным (тоже без пробела):
[[+pagetitle:replace=`&==& amp;`]]
Павел Романов
05 июня 2016, 11:14
+1
Последний вызов пытается вывести записи блога, дочерние по отношению к тому ресурсу, который открыт.
Если открыта статья, то, естественно, он ничего не выводит, поскольку у нее нет «дочек».

Если Вам нужно выводить последние шесть записей на странице статьи, то задайте родителя в качестве &parents (естественно, если все статьи в одном контейнере):
[[pdoResources?
    &parents=`[[*parent]]`	
    &resources=`-[[*id]]`
    &tpl=`BlogLastItems`
    &depth=`0`
    &limit=`6`
]]
Павел Романов
04 июня 2016, 10:22
0
В чанке:
...class="item-[[+idx]]"...
Павел Романов
01 июня 2016, 14:43
0
Префикс таблиц еще поменяйте.
А вообще вот: modx.pro/howto/7902-hardening-modx-revolution-translation/
Павел Романов
30 мая 2016, 15:48
0
Snippet:

<?php
if($id == 4 || $parent == 4){
	$out = '111';
} else {
	$out ='000';
}
return $out;

Вызов:

[[Snippet? &id=`[[+id]]` &parent=`[[+parent]]`]]
Павел Романов
30 мая 2016, 12:09
0
getImageList
Павел Романов
30 мая 2016, 11:38
2
+1
В первом случае Вы просто указываете конкретную TV-шку, которую брать в качестве основы для вывода (привязывать к шаблонам ее не обязательно). Удобно, если используется отдельный источник файлов.
Во втором случае вы указываете только тип TV, который использовать. В данном случае источник файлов будет умолчальным.

Но, чтобы не ошибиться можно делать нужный вывод не кодом, а через конфигурации. Оно на первый взгляд кажется сложнее, но зато надежно )).

Идете в MIGX и создаете новую конфигурацию:



Указываете название:



Добавляете форму:



и поле нужного типа:



Можете указать свой источник файлов:



Сохраняете форму и добавляете нужные колонки и настройки:



Рендер для поля:



Если нужно, редактор:


Сохраняете все.

Ну а в TV просто прописываете имя конфигурации:



Для копирования конфигураций можно использовать импорт/экспорт:


Павел Романов
29 мая 2016, 15:38
0
Тогда Вам нужно сперва определиться, что именно хочется ))

Если Вы хотите, чтобы у категорий работ были собственные страницы, то сделайте их и используйте метод, который я описал выше.

Если достаточно GET-параметра в URL, то можно сделать просто на тегах с помощью, к примеру, tagLister или просто TV типа «Авто метка» и выборки в pdoResources:
&tvFilters=`category==%[[!#GET.tag]]%`

Если нужно вообще все на одной странице, то можете воспользоваться чем-нибудь типа этого
Ну или mSearch2 поставьте и сделайте фильтрацию посредством mFilter2.
Павел Романов
28 мая 2016, 12:41
+1
[[!pdoPage?
&where=`[[!#GET.hours]]......`
]]

Либо просто сниппет:

<?php
return $_GET['hours'];

И тогда:

[[!pdoPage?
&where=`[[!Ваш_сниппет]]......`
]]
Павел Романов
27 мая 2016, 17:54
0
Попробуйте тогда так:

<?php
$list = $modx->runSnippet('pdoResources', array(
'parents'=>4,
'includeTVs'=>'yearProgect',
'limit'=>0,
'depth'=>1,
'tpl'=>'@INLINE [[+tv.yearProgect]]',
'outputSeparator'=>'|',
'sortby'=>'{"yearProgect":"ASC"}'
));
$arr = explode('|', $list);
$uarr = array_unique($arr);

foreach($uarr as $val){
    $string .= '
    <ul>
        <li><a href="#">'.$val.'</a><li>
    </ul>
    ';
}
return $string;
Павел Романов
27 мая 2016, 16:37
0
На скорую руку так:

<?php
$list = $modx->runSnippet('pdoResources', array(
'parents'=>4,
'includeTVs'=>'yearProgect',
'limit'=>0,
'depth'=>1,
'tpl'=>'@INLINE [[+tv.yearProgect]]',
'outputSeparator'=>'|',
'sortby'=>'{"yearProgect":"ASC"}'
));
$arr = explode('|', $list);
$uarr = array_unique($arr);
$string = implode(',', $uarr);
return $string;
Павел Романов
27 мая 2016, 14:29
+1
Сделайте не @INLINE а в чанке.
Павел Романов
27 мая 2016, 09:58
1
0
Делаете у работ TV «categories» типа «Множественный выбор» или «Чекбокс».
В возможных значениях прописываете:

Категория1==#ID_категории_1#||
Категория2==#ID_категории_2#||
Категория3==#ID_категории_3#||
Категория4==#ID_категории_4#||
Категория5==#ID_категории_5#

Или (если набор категорий на сайте часто меняется и хочется автоматизации) то так:
@EVAL return $modx->runSnippet('pdoResources',array('parents'=>ID_родителя_категорий,'limit'=>0,'tpl'=>'@INLINE [[+pagetitle]]==#[[+id]]#','outputSeparator'=>'||'));

Выборку работ в самой категории делаете с помощью tvFilters:
[[pdoResources?
&tvFilters=`categories==%#[[*id]]#%`
....
]]
Павел Романов
26 мая 2016, 17:38
+1
А если L(39) показать в меню?
Павел Романов
26 мая 2016, 16:30
0
Варианта два:
1. У самих работ сделать чекбокс и выводить те, у которых он отмечен.
2. В самом разделе сделать параметр типа «Множественный список», где выбирать нужные работы.