Вопросы

Не получается сделать запрос с условием OR для pdoResources

Здравствуйте/
Пытаюсь сделать фильтр из нескольких блоков, в одном из которых есть группа чекбоксов с возможностью множественного выбора. Код сниппета:
<?php
//Filter Fields Settings
$filter = array();

$tags = $_GET['tags'];
if($tags){
    $idx = 0;
    foreach ($tags as $tag){ 
        if($idx == 0){$idx= 1;$comma='';}else{$comma=' OR ';}
         $filter_tags .= $comma."sposob_filtr LIKE '%".$tag."%'";
    }
    $filter[] = $filter_tags;
}

if($_GET['mysum']) {
	$filter[] = 'min_sum_filtr<='.$_GET['mysum'];
	$filter[] = 'max_sum_filtr>='.$_GET['mysum'];
}

//End Settings
	print_r($filter);
//Sort
if($_GET['sortby']) {
	$sortby = $_GET['sortby'];
} else {
	$sortby = 'pagetitle';
}
if($_GET['sortdir']) {
	$sortdir = $_GET['sortdir'];
} else {
	$sortdir = 'asc';
}
//End Sort

//Offset
$offset = 0;
if($_GET['offset']){
	$offset = $_GET['offset'];
}

if($filter) {
	$where = $modx->toJSON(array($filter));
} else {
	$where = '';
}

$params_count = array(
	'parents' => $parents,
	'limit' => 0,
	'tpl' => '@INLINE ,',
	'select' => 'id',
	'includeTVs' => $fields,
	'showHidden' => '1',
	'where' => $where
	);

$count = $modx->runSnippet('pdoResources',$params_count);
$count = count(explode(',',$count))-1;
$modx->setPlaceholder('count',$count);

$params = array(
	'parents' => $parents,
	'limit' => $limit,
	'offset' => $offset,
	'tpl' => $tpl,
	'select' => 'id,pagetitle,introtext,content',
	'includeTVs' => $fields,
	'showHidden' => '1',
	'sortby' => $sortby,
	'sortdir' => $sortdir,
	'where' => $where
	);

$more = $count - $offset - $limit;
$lim = $more > $limit ? $limit : $more;

$button = '';
if($more > 0){
	$button = '<div class="ajax-filter-count" data-count="'.$count.'"><a href="#" class="ajax-more">Загрузить еще '.$lim.' из '.$more.'</a></div>';
}

return $modx->runSnippet('pdoResources',$params).$button;
Проблема в том, что если выбрать несколько чекбоксов и еще другое условие, то это второе условие не срабатывает (насколько я понял, это происходит из-за того, что OR в чекбоксах «перекрывает» новое условие). Переменная $filter, которая потом должна преобразовываться в json строку для where выглядит так:
Array ( [0] => sposob_filtr LIKE '%cash%' OR sposob_filtr LIKE '%visa%' [1] => min_sum_filtr<=100 [2] => max_sum_filtr>=100 )
Логично предположить, что группу условий с OR нужно взять в скобочки, но у меня не получается…
Что делать? (
Игорь
29 января 2020, 16:27
modx.pro
677
0

AjaxForm передать значение полей

Комрады, подскажите, как заполненные поля ajaxform затолкать в af_complete?
из серии:

$(document).on('af_complete', function(event, response) {
	[[+fi.name]]
});
нужно передать значение в стороний js и отправить по api

Голову уже сломал…
Георгий Графов
29 января 2020, 16:07
modx.pro
1 120
0

ms2gallery + fenom - Вывод конкретного фото по rank с другого ресурса

Здравствуйте!

С приходм fenom сайт стал работать гораздо шустрее.
Но сейчас появилась задача выводить фотографии на странице с другой страницы.

Т.е. на странице (id1) нужно вывести оригинал (большое фото) с номером (rank10) со страницы (id5)
Илья
29 января 2020, 15:18
modx.pro
1 137
0

addPackage called with an invalid package name.

В журнале ошибок
[2020-01-29 13:09:33] (ERROR @ /home/public_html/core/xpdo/xpdo.class.php: 513) addPackage called with an invalid package name.

Как найти что за package глючит? В интерете читал в базе данных отключить. А какая таблица отвечает за packages и как отключить?
Благодарю.
Сергей
29 января 2020, 13:11
modx.pro
1 674
0

Fenom парсер - производительность и кэш

Andrew
29 января 2020, 00:22
modx.pro
3
2 413
+2

syncMoySklad остатки по складам

Добрый день,

Подскажите, пожалуйста, как реализовать остатки по складам в syncMoySklad, не могу найти информацию в документации.

Достаточно просто примеров.
perfkirill
28 января 2020, 13:36
modx.pro
832
0

Как отформатировать время?

Нужно отформатировать время к виду: 3.24, 3.4, т.е. нули впереди убрать
Есть TV videoDuration, в нем хранится время формата 00:00:00
Вывожу так время
[[+videoDuration:strtotime:date=`%M.%S`]]
Roman
28 января 2020, 13:08
modx.pro
846
0

Как в Fenom сделать выборку ресурсов без сниппета?

Друзья! Подскажите пожалуйста, что делаю не так.
Хочу сделать выборку последних добавленных ресурсов — товаров.

Есть дерево ресурсов — товаров minishop2
-Главная (1)
-Каталог (3)
---Категория товаров (4)
-------Товар()


---Категория товаров (5)
-------Товар()



На главной вызываю так, снипет все же использую

{set $newproducts = $_modx->runSnippet('!msProducts', [
'parents' => 3,
'includeThumbs' => 'small,mobilesmall',
'showHidden' => 0,
'showUnpublished' => 0,
'limit' => 4,
'where' => [
    'class_key:=' => 'msProduct',
]
])}
{foreach $newproducts as $item}
{$item['menutitle']}
{/foreach}
Роман
28 января 2020, 12:48
modx.pro
1 403
0

Какую систему комментирования, написания отзывов порекомендуете?

Приветствую.
Ищу систему комментирования и/или отзывыв о продукте с возможностью выставления оценок. К примеру, есть наушники и надо им выставить оценки разных характеристик (звук, качество изделия, дизайн (надо оценивать по нескольким критериям)) и написать отзыв. Что порекомендуете для MODX?
weranda
28 января 2020, 07:59
modx.pro
1 055
0

Обновление MIGX ДРУГОГО тикета при сохранении документа

Добрый день!
Необходимо при сохранении Заказов обновить определённое поле MIGX в Исполнителях

Создал плагин на OnDocFormSave
При сохранении — бесконечное сохранение.
Что я делаю не так?

<?php
if ($modx->event->name=="OnDocFormSave") // Плагин срабатывает при сохранении ресурса
{    
    $id = $resource->get('id'); // Получаю id ресурса
    $parent = $resource->get('parent'); // Получаем id родителя

    if($parent!=2) //id раздела с тикетами Заказов =2, остальные не трогаю
    {
        return;
    }


    $migx = $modx->resource->getTVValue('vibce');
    $items = $modx->fromJSON($migx);

    foreach($items as $item) {

    $reskuda = $modx->getObject('modResource', $item['celovecus']);  // celovecus - id исполнителя
    $migxkuda=$reskuda->getTVValue('vibzak');
    $itemskuda = $modx->fromJSON($migxkuda);

        $naideno=0;
        $output = array();    
        foreach($itemskuda as $itemkuda) {
        $output[] = $itemkuda['zakazus'];

            if($itemkuda['zakazus']==$id)  // есть ли у исполнителя такой заказ
                {
                $naideno=1;
                }
        }
    
    if($naideno==0)     //  такого заказа нет
        {
            $itemkuda['zakazus'] = $id;
            $output[] = $itemkuda;
            $reskuda->setTVValue('vibzak', $modx->toJSON($output));
        }    

    }

}
Игорь
27 января 2020, 10:39
modx.pro
937
0