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

Тодор
01 декабря 2021, 14:59
+1
Провери отрибут base в head, он должен меняться в зависимости от языка
<base href="modx.pro/">
<base href="modx.pro/ru/"> - RU
Тодор
01 декабря 2021, 14:16
+1
switch($modx->event->name){
    case 'OnDocFormSave':
        //$mode //$resource //$id
        if(empty($resource->get('content')) && $resource->get('published')){
            $resource->set('published', 0);
            $resource->save(); //Не уверен что это надо
        }
        break;
}
kalisto
01 декабря 2021, 10:10
0
Ранее работало все, а сейчас выдает
ERROR /home/c/cv08546/academy-kvant-psi.ru/core/components/pdotools/model/pdotools/pdotools.class.php 999
Unexpected token ':' in 76c458169bfd754d28bce3b6036afd55 line 13, near '{«video»:' < — there

{set $video_json = json_decode($_modx->resource.video, true)}
          {if $_modx->resource.video ?}
            <div class="blog__img">
              <div class="blog__video pos-relative">
                <img src="{$video_json.image}" />
                <a class="popup-icon vinobox-popup pos-absolute" data-autoplay="true" data-vbtype="video" href="{$video_json['video']}"><i class="lab la-youtube"></i></a>
              </div>
            </div>
          {/if}
Прошу помощи.
Николай Савин
01 декабря 2021, 09:31
0
Сначала написал потом, подумал о контексте вопроса. Конкретно в обсуждаемом компоненте не видел как сбрасывается кэш, и сбрасывается ли вообще.
Николай Савин
01 декабря 2021, 09:28
0
Это на самом деле очень просто делается
Вот такой метод есть у кэш менеджера для очистки кэша конкретного ресурса (товар это же ресурс)
$modx->cacheManager->delete($product_id, array(xPDO::OPT_CACHE_KEY => 'resource/web/resources'))
Влад
01 декабря 2021, 01:23
0
Добрый день!

Может кто-то сталкивался с необходимостью сохранения кэша всего сайта при обновлении цен через крон?

Вопрос в возможности сбрасывать кэш непосредственно у товара
Наумов Алексей
30 ноября 2021, 18:23
+1
Есть в miniShop2 скрипт для импорта из csv

Он же умеет создавать ресурсы как при запуске из браузера, так и в режиме запуска из командной строки.
Павел Бигель
30 ноября 2021, 18:22
0
Ссылок/примеров в интернете хватает по этому запросу

Я просто не совсем понимаю, если у меня скрипт будет автоматически логинится, то будет получать права. Он доступен через урл, напрямую. Т.е. «Иван» зайдет по адресу и получит сессию с правами?
и будет ли работать этот прием для CRON
Для этого файл закрывают средствами вебсервера
Константин Ильин
30 ноября 2021, 17:24
0
Есть ли ссылки примеры?

Я просто не совсем понимаю, если у меня скрипт будет автоматически логинится, то будет получать права. Он доступен через урл, напрямую. Т.е. «Иван» зайдет по адресу и получит сессию с правами?
и будет ли работать этот прием для CRON
Павел Бигель
30 ноября 2021, 14:26
0
Так делать не стоит. Используйте все же процессоры
Для того чтобы права появились, используйте security/login процессор
Константин Ильин
30 ноября 2021, 10:24
0
Тоже про все это подумал, решил не рисковать с правами. Создавать процессоры и т.п.
Сделал через newObject. Думал проблема будет с опциями, а там все просто оказалось.

Кому пригодится
// Нестандартные опции, cтандартные опции товара записываются вместе с полями товара
$options['idads'] = $idADS;
$options['floor'] = $floor;

$newProduct = $modx->newObject('msProduct');
$alias = $newProduct->cleanAlias($pagetitle);

//Поля товара(ресурса)
$arrRes = [
    'pagetitle' => $pagetitle,
    'published' => 1,
    'alias' => $alias,
    'content' => $ADS['description'] ?: '',
    'parent' => $parent,
    'show_in_tree' => 0,
    'template' => 20,

    //Стандартные опции товара
    'color' => ['синий', 'красный']
    'old_price' => 0,
    'price' => $ADS['price']['value'] ?: 0,
];

// Можно было использовать fromArray()
foreach ($arrRes as $field => $v){
    $newProduct->set($field,$v);
}

// Собственно, запись нестандартных опций, простая передача массива
$newProduct->set('options', $options);

// сохраняем
$newProduct->save();
Сейчас проблема с загрузкой изображений gallery/upload, там тоже через процессор, видимо тоже права, разбираться надо
Наумов Алексей
30 ноября 2021, 09:56
+1
Или создавать документы через API, в целом это нормальный вариант, главное создать правильно (заполнить все поля имею ввиду) и проследить, чтобы были обработаны ситуации, если у вас плагины есть на события создания/редактирования документов. Ну и кеш там почистить потом.
Или же в скрипте залогиниться в админку под пользователем-админом (менеджером), что как бы не особо безопасно…
Или же настроить права так, чтобы аноним мог создать страницу, что тоже не гуд.
Виктор
29 ноября 2021, 22:30
0
сорри, лишнего понаписал. а как доглядел, удалить уже нельзя
Алексей
29 ноября 2021, 20:56
0
сделал… правда получилось через костыль как-то:
создал ключи для русского и английского fgg__lang со значениями ru и en
вставил
<html language="[[-язык]]{'fgg__lang' | lexicon}">
и в js:
var language = document.getElementsByTagName("html")[0].getAttribute('language'); if (language == 'en') { from_text = 'from ' } else { from_text = 'от '} .....  .html(from_text   ....
Алексей
29 ноября 2021, 20:36
0
в принципе вывод в js вроде как работает, ошибок нет

но в первой же строке в инспекторе при любом выбранном языке
<html lang="ru" class="js">
Алексей
29 ноября 2021, 19:18
0
Вставляю так
var lang = $('html').attr('lang'); if (lang == 'ru') { from_text = 'от ';  } else { from_text = 'from ';}
            $('.1round .airplane_'+this.airplane_id).show();
             aprox_summ=obj_data_flight[this.airplane_id]['price'];
              $('.1round .airplane_'+this.airplane_id+' .aproximitly_summ').html(+from_text +aprox_summ+' €');
и Вжух!, поиск падает
Евгений
29 ноября 2021, 18:52
0
сортировать то да, но там есть еще поля в настройках для сортировки по умолчанию
до и после
так вот паблишедон стоит работает а по тв полю внедрить не выходит чот :(
fixedpage=tv_fixedpage:desc
Суэзи
29 ноября 2021, 18:22
0
А в итоге проблемы была в том, что в типах содержимого кто-то по ошибке удалил MIMI-тип text/html
Николай Савин
29 ноября 2021, 17:30
0
Виктор не нужно дублировать один и тот же комментарий в разных топиках
Виктор
29 ноября 2021, 16:39
0
всё оказалось просто — новый поддомен нужно было сделать как синоним к основному)