Володя

Володя

С нами с 18 декабря 2012; Место в рейтинге пользователей: #4
Володя
05 декабря 2023, 12:24
0
вероятно можно. Под рукой нет mFiter2.
Володя
05 декабря 2023, 12:10
0
попробуйте заменить на этот плагин. там добавлен iterator_to_array для $modx->getIterator
<?php
$resourceEvents = array('OnBeforeDocFormSave', 'OnDocFormSave');
if (in_array($modx->event->name, $resourceEvents)) {
    foreach($scriptProperties as & $object){
        if(
            is_object($object)
            AND $object instanceof modResource
            AND $original = $modx->getObject('modResource', $object->id)
        ){
            $resource = $object;
            break;
        }
    }
}
switch ($modx->event->name) {
    case "OnManagerPageInit":
        $cssFile = MODX_ASSETS_URL.'components/autoredirector/css/mgr/main.css';
        $modx->regClientCSS($cssFile);
        break;

    case "OnBeforeDocFormSave":
        $resources = array(
            $resource,
            $modx->getObject('modResource',$resource->get('parent'))
        );
        if($child_ids = $modx->getChildIds($resource->id,50,array('context' => $resource->context_key))){
            $resources = array_merge($resources, iterator_to_array($modx->getIterator('modResource',array("id:IN" => $child_ids))));
        }
    case "OnResourceBeforeSort":
        if (empty($resources)) {
            foreach ($nodes as $node) {
                $resources[] = $modx->getObject('modResource',$node['id']);
            }
        }
        foreach ($resources as $res) {
            if (!empty($res)) {
                if (!$res->getProperty('old_uri','autoredirector')) {
                    $res->setProperty('old_uri',$res->get('uri'),'autoredirector');
                    $res->save();
                }
            }
        }
        break;
    case "OnDocFormSave":
        $resources = array(
            $resource,
            $modx->getObject('modResource',$resource->get('parent'))
        );
        if($child_ids = $modx->getChildIds($resource->id,50,array('context' => $resource->context_key))){
            $resources = array_merge($resources, iterator_to_array($modx->getIterator('modResource',array("id:IN" => $child_ids))));
        }
    case "OnResourceSort":
        if (empty($resources)) {
            foreach ($nodesAffected as $node) {
                $resources[] = $node;
            }
        }
        $modelPath = $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'model/';
        $modx->addPackage('autoredirector', $modelPath);
        $processorProps = array('processors_path' => $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'processors/');
        foreach ($resources as $res) {
            if (!empty($res)) {
                $old_uri = $res->getProperty('old_uri','autoredirector');
                $current_uri = $res->getAliasPath($res->get('alias'));
                if ($old_uri && $current_uri != $old_uri) {
                    $currentRuleQ = array('uri' => $current_uri);
                    if (!$modx->getOption('global_duplicate_uri_check')) {
                        $currentRuleQ['context_key'] = $res->get('context_key');
                    }
                    if ($currentRule = $modx->getObject('arRule', $currentRuleQ)) {
                        $response = $modx->runProcessor('mgr/item/remove', $currentRule->toArray(), $processorProps);
                        if ($response->isError()) {
                            $modx->log(modX::LOG_LEVEL_ERROR, 'AutoRedirector removing error. Message: '.$response->getMessage());
                        }
                    }
                    $arRule = array('uri' => $old_uri
                                    , 'context_key' => $res->get('context_key')
                                    , 'res_id' => $res->get('id'));
                    if (!$modx->getObject('arRule', $arRule)) {
                        $response = $modx->runProcessor('mgr/item/create', $arRule, $processorProps);
                        if ($response->isError()) {
                            $modx->log(modX::LOG_LEVEL_ERROR, 'AutoRedirector creating error. Message: '.$response->getMessage());
                        }
                    }
                }
                $res->setProperty('old_uri',$current_uri,'autoredirector');
                $res->save();
            }
        }
        break;
    case "OnPageNotFound":
        $uri = $_SERVER['REQUEST_URI'];
        $uri = str_replace($modx->getOption("site_url"),"",$uri);
        if (substr($uri, 0, 1) == "/") $uri = substr($uri, 1);
        $getparams = '';
        if (mb_strpos($uri,'?') !== FALSE) {
            $uri_split = explode('?',$uri);
            $uri = $uri_split[0];
            if(!$modx->getOption("autoredirector_clear_get",null, 0)) {
                $getparams = $uri_split[1];
            }
        }
        $uri = urldecode($uri);

        $RuleQ = array('uri' => $uri);
        if (!$modx->getOption('global_duplicate_uri_check')) {
            $RuleQ['context_key'] = $modx->context->get('key');
        }
        $modelPath = $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'model/';
        $modx->addPackage('autoredirector', $modelPath);
        if ($Rule = $modx->getObject('arRule', $RuleQ)) {
            if ($url = $modx->makeUrl($Rule->get('res_id'),'',$getparams)) {
                $modx->sendRedirect($url,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
            }
        }
        break;
}
Володя
05 декабря 2023, 11:47
1
+1
можно попробовать как при убывающей сортировке
&sortby=`{"COALESCE(NULLIF(price,0),0)":"DESC"}`
или при возрастающей
&sortby=`{"COALESCE(NULLIF(price,0),9999999)":"ASC"}`
Володя
05 декабря 2023, 11:36
0
там в плагине ошибка
if($child_ids = $modx->getChildIds($resource->id,50,array('context' => $resource->context_key))){
            $resources = array_merge($resources, $modx->getIterator('modResource',array("id:IN" => $child_ids)));
        }
версия php не причем
Володя
03 декабря 2023, 06:29
0
А внешние скрипты у вас не подключаются да?
Володя
02 декабря 2023, 21:21
0
notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once
Ну вот это же явно js.
Володя
02 декабря 2023, 21:20
0
Ну предположим плагин на рендер страницы который что-то там делает…
Вам лучше знать что у вас установленно и какие плагины используете. Но чудес не бывает.
Володя
02 декабря 2023, 16:01
0
какой то js обрабатывается парсером modx.
Либо напрямую на странице где то вывод js, либо какой то пакет/ плагин.
Но позже заметил, что в журнале ошибок каждый день в одно и то же время начинает дублироваться каждую минуту в течение 10 мин. следующий блок строк:
ну если стабильно в одно и тоже время — значит не все удалили.
Володя
29 ноября 2023, 10:21
+1
он и не кешируется, в первом варианте вы передаете where как строку и переменная $timeago попадает туда в виде
$timeago
это некорректный json который отбрасывается.

во втором варианте все отработает как и положенно так как передали массив.
Володя
27 ноября 2023, 12:12
+1
Уже поправил, обновление доступно в modstore.pro
Володя
27 ноября 2023, 12:10
+1
Добрый день.
нужно задать в вызове ufForm
&active=`0`
И второй вопрос — при выводе общей кучи от всех пользователей какое условие надо дописать в вызов pdoResources, чтобы отключенные не выводились?
&where=`{
        "UserFile.active":1,
    }`
Володя
23 ноября 2023, 14:51
0
да, так уже понятней.
для такого варианта не получится использовать msOptionsPrice.modification. Нужно писать свой сниппет для выборки. Или как то использовать pdoResourses
Володя
23 ноября 2023, 14:15
0
не поможет, оно возвращает то же предупреждение:"[msOptionPrice] The resource with id= is not instance of msProducts." и я думаю, что это нормально,
либо у вас неверно указан параметр product, либо в плейсхолдере [[+id]] не идентификатор продукта. ЧУдес не бывает.
Володя
23 ноября 2023, 13:43
0
если вы вызываете сниппет не на странице товара обязательно нужно указать идентификатор
&product=`[[+id]]`
Володя
23 ноября 2023, 09:41
0
Вот так должно сработать
[[!msOptionsPrice.modification?
&where=`[ "Option.key = 'collection' AND Option.value = 'Летняя коллекция'" ]`
]]
Володя
23 ноября 2023, 09:28
0
Доброе утро. Можно использовать параметр byOptions
{'!msOptionsPrice.modification'|snippet: [
'byOptions' => [
    'collection' => 'Летняя коллекция'
]
]}
ps. пардон. все модификации это не даст, а только первую подходящую.
Володя
28 апреля 2023, 05:46
0
Да нет. Я захожу иногда, почитываю что тут происходит…
Володя
28 апреля 2023, 05:43
0
Доброе утро.
— джеквери чем неугодил?
— по плиткам это да актуально

Версия что сейчас в репозитории меня многим не устраивает и выпилить джеквери и переделать запрос по плиточкам по факту ничего кардинально не изменит.
Володя
03 декабря 2020, 11:21
0
Добрый день. да обновление будет. Если есть желающие на интеграцию — просьба отписать в ЛС.
Спасибо!