Всего 125 947 комментариев

vectorserver
15 июля 2022, 12:02
+1
Написать @Евгений Шеронов, это его компонент!
Denis
15 июля 2022, 12:01
0
Фильтрация происходит здесь:
core/components/migx/model/migx/migx.class.php
function filterItems($where, $items) {

        $tempitems = array();
        foreach ($items as $item) {
            $include = true;
            foreach ($where as $key => $operand) {
                $key = explode(':', $key);
                $field = $key[0];
                $then = $include;
                $else = false;
                $subject = $item[$field];

                $operator = isset($key[1]) ? $key[1] : '=';
                $params = isset($key[2]) ? $key[2] : '';
                $operator = strtolower($operator);
                switch ($operator) {
                    case '!=':
                    case 'neq':
                    case 'not':
                    case 'isnot':
                    case 'isnt':
                    case 'unequal':
                    case 'notequal':
                        $output = (($subject != $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '<':
                    case 'lt':
                    case 'less':
                    case 'lessthan':
                        $output = (($subject < $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '>':
                    case 'gt':
                    case 'greater':
                    case 'greaterthan':
                        $output = (($subject > $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '<=':
                    case 'lte':
                    case 'lessthanequals':
                    case 'lessthanorequalto':
                        $output = (($subject <= $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case '>=':
                    case 'gte':
                    case 'greaterthanequals':
                    case 'greaterthanequalto':
                        $output = (($subject >= $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                    case 'isempty':
                    case 'empty':
                        $output = empty($subject) ? $then : (isset($else) ? $else : '');
                        break;
                    case '!empty':
                    case 'notempty':
                    case 'isnotempty':
                        $output = !empty($subject) && $subject != '' ? $then : (isset($else) ? $else : '');
                        break;
                    case 'isnull':
                    case 'null':
                        $output = $subject == null || strtolower($subject) == 'null' ? $then : (isset($else) ? $else : '');
                        break;
                    case 'inarray':
                    case 'in_array':
                    case 'ia':
                    case 'in':
                        $operand = is_array($operand) ? $operand : explode(',', $operand);
                        $output = in_array($subject, $operand) ? $then : (isset($else) ? $else : '');
                        break;
                    case 'find':
                    case 'find_in_set':
                        $subject = is_array($subject) ? $subject : explode(',', $subject);
                        $output = in_array($operand, $subject) ? $then : (isset($else) ? $else : '');
                        break;
                    case 'find_pd':
                    case 'find_in_pipesdelimited_set':
                        $subject = explode('||', $subject);
                        $output = in_array($operand, $subject) ? $then : (isset($else) ? $else : '');
                        break;
                    case 'contains':
                        $output = strpos($subject, $operand) !== false ? $then : (isset($else) ? $else : '');
                        break;
                    case 'snippet':
                        $result = $this->modx->runSnippet($params, array('subject' => $subject, 'operand' => $operand));
                        $output = !empty($result) ? $then : (isset($else) ? $else : '');
                        break;
                    case '==':
                    case '=':
                    case 'eq':
                    case 'is':
                    case 'equal':
                    case 'equals':
                    case 'equalto':
                    default:
                        $output = (($subject == $operand) ? $then : (isset($else) ? $else : ''));
                        break;
                }

                $include = $output ? $output : false;

            }
            if ($include) {
                $tempitems[] = $item;
            }

        }
        return $tempitems;
    }
vectorserver
15 июля 2022, 11:57
0
<?php
/** @var modX $modx */
/** @var modResource $resources */
$resources = $modx->getCollection('modResource',array('parent' => 211));
foreach ($resources as $res) {
    $res->setTVValue('seotitle',$res->get('pagetitle'));
    $res->set('isfolder', 1);
    $res->save();
}
Роман
15 июля 2022, 11:20
+1
Плагин ставишь на
OnBeforeDocFormSave
Можешь через $_REQUEST посмотреть все поля, TV начинаются с ['tv{тут номер}']
Если отдельно, то $resource->getTVValue('bio');

$resource->setTVValue(.., ...);
Семён Кудрявцев
15 июля 2022, 11:18
+1
Ещё раз спасибо автору компонента, всё чаще его встречаю у клиентов на сайтах с MODX Revo,
чертовски удобно всё настраивать.
Артур Шевченко
14 июля 2022, 23:31
0
Возможно в личном кабинете сервиса в настройках api указан этот адрес для возврата.
Максим
14 июля 2022, 21:04
+1
Тогда будет правильнее обратиться за помощью в реализации. Так как с TV все достаточно запутано. На сайте есть соответствующий раздел.
Артур Шевченко
14 июля 2022, 17:20
+1
Расскажу свой универсальный способ поиска ответа на подобные вопросы.
1. Пойти в core/model/schema или если нужно работать с компонентом то в core/components/packagename/model/schema там нахожу нужные классы и таблицы и смотрю с кем и как они связаны (один к одному, один ко многим и вообще без связей), какие поля доступны. Если надо иду в БД чтобы проверить какие значения где записаны.
2. Получаю коллекцию объектов с помощью методов $modx->newQuery() и $modx->getIterator().
3. Для записи используется метод set() и метод save() для сохранения объекта. Так же можно использовать метод fromArray() для записи массива данных в объект.
Сергей Карпович
14 июля 2022, 16:59
0
Ребята привет, проблема — в MIGX не выпадает список ранее заполненных значений, как это пофиксить?
Кто нибудь сталкивался?
vectorserver
14 июля 2022, 14:10
0
Может быть! А что не так, я не понял!?
Евгений Шеронов
14 июля 2022, 13:08
0
А дальше напишете «не коммерс» вариант SeoFIlter или mSearch2 для своих нужд, которым решите поделиться?)
Павел Бигель
14 июля 2022, 12:52
0
У ORM задач поболее нежели просто в табличкам обращаться )
Роман
14 июля 2022, 12:02
0
Я что-то подобное пробовал сделать, но там есть такой косяк, когда возвращается на 10 страницу, то скрипт начинает подтягивать сначала 9 страниц, и как только подтянет 9, начинает 10. =) Так что либо переписывать логику или как в яндекс.дзене делать.
vectorserver
14 июля 2022, 11:47
0
Зачем ORM xPDO для MODX, если можно на прямую запросы писать!?
Николай Ермошин
14 июля 2022, 11:42
0
В мобильной версии не понятно, как вернуться назад для пользователя
Павел Бигель
14 июля 2022, 10:38
0
Генерацию XML можно решить с помощью pdtools на кой для этого целый компонент тянуть не совсем понятно
vectorserver
14 июля 2022, 10:28
0
Выложил обновленный пак:
Исправлено несколько багов фич







vectorserver
14 июля 2022, 10:25
+1
Не плохо, я писал компонент для своих нужд, решил поделиться! Не коммерс!