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

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

С нами с 03 марта 2014; Место в рейтинге пользователей: #43
03 июля 2016, 11:18
0
Можно сделать сниппет по мотивам этого:

<?php
if(empty($id)) return '';
$table = 'modx_gallery_albums';
$sql = "SELECT `name` FROM `$table` WHERE `id` = $id";
$query = new xPDOCriteria($modx, $sql);
if ($query->prepare() && $query->stmt->execute()){
    $res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
    foreach ($res as $row){
        $out = $row['name'];
    }
} else {
    $out = "Ошибка";
}
return $out;

И вызывать его так:
[[Snippet? &id=`[[+album]]`]]

А можно поставить Rowboat и вызывать так:
[[Rowboat?
   &table=`modx_gallery_albums`
   &tpl=`album-name`
   &where=`{"id":"[[+album]]"}`
]]

Чанк «album-name»:
[[+name]]
01 июля 2016, 12:14
0
У Вас что этот [[+results] выводит?
01 июля 2016, 11:53
0
А так работает?
<fieldset id="mse2_[[+table]][[+delimeter]][[+filter]]">
	<span>Сортировать по формату:</span>
	[[+rows]]
</fieldset>
01 июля 2016, 11:39
1
+1
У Вас дата в базе хранится в виде 2016-07-01 03:00:00, а Вы пытаетесь фильтровать по дате в Unix-формате.
Если в лоб, то решение следующее:
1. Сделать еще одно поле timeUnix типа текст.

2. Сделать плагин на событие OnDocFormSave, который будет брать дату из поля timeEvent, переводить ее в нужный формат и записывать в поле TV timeUnix:
<?php
$res = $modx->getObject('modResource', $id);
$date = $res->getTVValue('timeEvent');
if(empty($date)) return '';
$time = strtotime($date);
$res->setTVValue('timeUnix', $time);

3. Выборку в pdoResources cделать уже через этот новый TV:
&where=`{"timeUnix:>=,<=:AND":[1467331200,1498867200]}`
30 июня 2016, 15:36
+1
Вы пытаетесь получить значение поля из формы, да еще и без указания самого поля)).
Вам же нужно записать значение в плейсхолдер:
$hook->setValue('allFormFields','тут_то_что_нужно записать');
30 июня 2016, 15:17
0
Если товары в ресурсах, то подойдет. В описании же:
"— Возможность работы с любым ресурсом, не обязательно товар Minishop2."
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.