Наумов Алексей

Наумов Алексей

С нами с 31 марта 2013; Место в рейтинге пользователей: #13
Наумов Алексей
25 февраля 2021, 16:15
0
Не нужно вызывать сниппет в плагине, реально плохая идея… ну как из пушки по воробьям…
Напишите просто нужный вам запрос, он будет не очень сложным.
Хотя, конечно, в целом сработать то должно было) Может еще в чем дело? Сниппет строку вернет, это учитывали?
Наумов Алексей
24 февраля 2021, 15:26
0
Я не очень понял, про что речь, с компонентом не знаком.

оба плагина (формирование полей и фронтпад) срабатывают на одно событие BeforeCreateOrder и поэтому в момент срабатывания фронтпада этих полей еще нет
это можно исправить, для плагина можно изменить приоритет с которым он срабатывает, тем самым управляя очередностью. Есть соответствующее поле на вкладке События у плагина.
Наумов Алексей
24 февраля 2021, 14:31
+1
$address =  $this->Order->getOne('Address');
$properties = $address->get('properties');
print_r($properties);
Наумов Алексей
20 февраля 2021, 09:56
0
Чисто теоретически это можно бы сделать, просто не реализовано.

См:
1. Сниппет msCart
Обрабатываются из заказа только опции, кол-во, вес, стоимость и скидка. Нужно добавить сюда артикул.
2. в getOrder
примерно тоже самое.

ну и подозреваю, что нужно посмотреть что будет в админке творится (скорее всего в процессорах).

Я почему пишу — пытался почти тоже самое сделать, мне только название товара нужно было подменять.
Наумов Алексей
18 февраля 2021, 16:34
0
Так поменяйте всем старым статус тоже, руками или скриптом.
Наумов Алексей
18 февраля 2021, 11:00
+1
Решение хорошее.
Но проблема в выборке 1 последнего заказа. Почему? Нужно просто выбирать все заказы со статусом Новый, и всем им менять статус на Оповещение.
Наумов Алексей
17 февраля 2021, 12:06
+1
Добрый. Явных запретов на то нет. Если есть трудности с их индексированием, то вероятнее всего у вас где-то прописан запрет.
Наумов Алексей
16 февраля 2021, 14:46
2
+2
1. Ставите компонент Console
2. Пишите там код:
$q = $modx->newQuery('modResource');
// условие по необходимости
//$q->where(array('parent' => 1));
$resources = $modx->getIterator('modResource', $q);
foreach($resources as $resource) {
    $content = $resource->get('content');
    // делаем че хотим
    $title = 'Заголовок';
    // ...

    $resource->setTVValue('title', $title);
    $resource->save();
}
3. Запускаете… ждете (возможно долго).
Наумов Алексей
11 февраля 2021, 10:54
0
ну вот, отлично!
Это правильно хранить свой кеш в отдельной папочке и управлять им как нужно!
Наумов Алексей
08 февраля 2021, 16:49
+2
Я сохранял свой кеш в отдельную папочку (назвал ее для примера my_cache), вот выдержки кода из проекта… (у меня некий класс, в нем есть такие методы и переменные).
Насколько помню, проблемы с очисткой при сохранении ресурса или чанка не было.

/** @var  string $cachePartition Раздел для кеша */
    protected $cachePartition = 'my_cache';
/** @var  integer $cacheTime Время кеша, в секундах, например 86400 (сутки), 3600 (час) */
    protected $cacheTime = 43200;
/**
     * Получает данные запроса из кеша
     * @param $cacheKey string Ключ кеша
     * @return mixed Данные запроса или false
     */
    protected function getDataFromCache($cacheKey) {
        $options = array(
            xPDO::OPT_CACHE_KEY => $this->cachePartition
        );
        return $this->modx->cacheManager->get($cacheKey, $options);
    }

    /**
     * Помещает данные в кеш
     * @param $cacheKey string Ключ кеша
     * @param mixed $data Данные, который нужно закешировать
     * @return bool Результат операции
     */
    protected function addDataToCache($cacheKey, $data) {
        $options = array(
            xPDO::OPT_CACHE_KEY => $this->cachePartition
        );
        return $this->modx->cacheManager->add($cacheKey, $data, $this->cacheTime, $options);
    }
Но нужен плагин для очистки нашего кеша:
<?php

switch ($modx->event->name) {
    case 'OnSiteRefresh':
        if ($modx->cacheManager->refresh(array('my_cache' => array()))) {
            $modx->log(modX::LOG_LEVEL_INFO, $modx->lexicon('refresh_default') . ': MyCache');
        }
        break;
}
Наумов Алексей
08 февраля 2021, 09:42
0
Добрый день.
В плагине используется 1 поле с именем photo
$conf_upload_file_name = 'photo';
у вас несколько должно быть, и код придется переписать соответственно… проверяйте, что я посоветовать
Наумов Алексей
02 февраля 2021, 17:20
+2
Мелочи:
— видеть Популярные и Лучшие статьи за: неделю/месяц/год/все время
— проработать разделы сообщества, сейчас их не видно как-то, и структурированы они на мой взгляд не очень… может их вывести справа (туда, где сейчас вкладки Комментарии, Заметки, Работа.
Наумов Алексей
28 января 2021, 10:44
+1
Нам нужно старое значение menuindex и новое.

Если новое меньше старого, то делаем sql запрос, в котором у ресурсов (только с тем же parent конечно) с menuindex от нового до старого делаем menuindex=menuindex+1.

Если старое меньше нового — наоборот.

Вот пример кода из какого-то процессора (там не ресурсы, а свои объекты).

if ($source->get('priority') < $target->get('priority')) {
            $this->modx->exec("UPDATE ".$tableName."
				SET priority = priority - 1 WHERE
					priority <= {$target->get('priority')}
					AND priority > {$source->get('priority')}
					AND priority > 0
			");

        } else {
            $this->modx->exec("UPDATE ".$tableName."
				SET priority = priority + 1 WHERE
					priority >= {$target->get('priority')}
					AND priority < {$source->get('priority')}
			");
        }
Наумов Алексей
27 января 2021, 17:28
0
Может phpthumbof скармливать не ссылку на картинку, а локальный путь к ней? Относительно корня сайта.
Наумов Алексей
27 января 2021, 10:44
0
Сниппету передаются все properties, см. ссылку.

ну а чтобы узнать имена переменных, в этом же файле поищите вызовы функции getProperty, станет все понятно
Наумов Алексей
27 января 2021, 10:05
0
Давно не работал с mFilter2… а если просто «rating_simple:checkbox»?
Вы же сделали join, данные уже выбрали…
Наумов Алексей
26 января 2021, 14:43
0
Судя по запросу я вижу, что выбирается 1 ресурс с id=3.

Правда запрос странный, в нем нет leftJoin)