Всего 123 809 комментариев

Артур Шевченко
09 января 2023, 11:50
0
Можно попробовать на событие OnDuplicateResource повесить плагин, который скопирует данные, тогда пользователю нужно будет просто скопировать ресурс, где migx уже заполнен.
Артур Шевченко
09 января 2023, 11:40
0
Дополнительно ничего писать не нужно, всё есть в комплекте. Я проверил на чистом сайте, у меня всё из коробки завелось без проблем. Посмотрите может есть какие-то ошибки? Попробуйте установить версию 1.0.2.(доступна по ссылке в конце поста)
Наумов Алексей
09 января 2023, 10:50
+1
Добрый день!
Механизма хуков нет, есть возможность повесить плагин (в смысле обычный плагин MODX) на различные события (создание сообщения, удаление и т.п.).
Алексей Смирнов
09 января 2023, 08:22
0
Посмотрите параметры msProduct сниппета. Там будет ответ на ваш вопрос.
Владислав
09 января 2023, 02:39
0
А можете подсказать как указать в where не свойство товара, а именно опцию, т.к. такая конструкция: &where=`{«Data.sale»:«1»} конечно же не работает, потому что Data это свойство товара а не опция. Чем заменить Data?
Роман
08 января 2023, 00:30
0
Блиииин :)) точно, pagetitle же еще не обработан transalias ом, понял, попробую strpos
Алексей Смирнов
07 января 2023, 23:17
0
так не проверяется у вас всегда будет не равно…
if ($resource->get('alias') != $resource->get('pagetitle').'-'.$resource->get('id'))
у вас же pagetitle русскими, а алиас английскими?
Как вариант сравнивайте через функцию php strpos
и ищите это '-'.$resource->get('id')
можно еще посмотреть функции php которые в строке ищут. варианты есть.
Роман
07 января 2023, 22:51
0
Это первое что сделал, но это неверный подход, не работает почему-то, я хочу попробовать получить символы в конце строки до дефиса, и их сравнить с id страницы, если есть такое и сравнивается значит id уже висит на конце и ничего не делаем, сейчас все равно добавляет id при каждом нажатии на кнопу сохранить. Получается такая лажа tur-29-29-29

else {
   // existing resource was updated
    if ($resource->get('template') == 2) {
        
        
         if (!empty($resource->get('alias'))) {
             if ($resource->get('alias') != $resource->get('pagetitle').'-'.$resource->get('id')) {
               $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
               $resource->save();
             }
        }
    
    
    }
}
Алексей Смирнов
07 января 2023, 22:37
0
наверное, перед генерацией проверять по вхождению — есть или нет уже этот id И если есть, то не генерить.
Алексей Смирнов
07 января 2023, 22:34
+1
в php есть функция microtime ставите в начало фиксируете показания ($asd = mictotime)
И в конце скрипта вычитаете из print $asd — mictorime.
как-то так.
Oleg
07 января 2023, 15:07
0
Всем привет. Как на сниппет ecForm повесить hook? Может сталкивался кто. В AjaxForm такой параметр есть.

'hooks' => 'FormItSaveForm,email,spam, telegramForm',
Константин Ильин
07 января 2023, 14:40
0
Артур подскажи пожалуйста, для этого вызова(из примеров взял) получается надо написать плагин который будет сохранять или хук?
Просто при таком вызове, редактирую fullname сохранить нажал, «Данные сохранены», но они не записались
{'!AjaxFormitLogin' | snippet : [
        'form' =>  'updateProfileForm',
        'snippet' => 'FormIt',
        'hooks' => 'AjaxIdentification',
        'method' => 'update',
        'successMessage' => 'Данные сохранены.',
        'clearFieldsOnSuccess' => 0,

        'validate' => 'email:required:email',
        'validationErrorMessage' => 'Исправьте, пожалуйста, ошибки!',
        'email.vTextRequired' => 'Укажите email.'
        ]}
Роман
07 января 2023, 14:05
0
Через плагин вроде разобрался, но при каждом обновлении добавляет id в конце alias, блин, получается ерунда типа tur-29-29-29 как это пофиксить?

Использую так
<?php
if ($modx->event->name == 'OnDocFormSave') {
    
if ($mode == 'new') {
    // resource created
    if (!empty($resource->get('alias'))) {
            $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
            $resource->save();
        }else{
            $resource->set('alias',$resource->get('pagetitle').'-'.$resource->get('id'));
            $resource->save();
        }
}
else {
   // existing resource was updated
    if ($resource->get('template') == 2) {
  
         if (!empty($resource->get('alias'))) {
            $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
            $resource->save();
        }else{
            $resource->set('alias',$resource->get('pagetitle').'-'.$resource->get('id'));
            $resource->save();
        }
    
    }
}
}
Роман
07 января 2023, 13:27
0
В общем, сделал так, работает! Пришлось правда сделать сниппет substr что бы обрезать лишний каталог и слеш на конце из строки пути сервера, а так все норм, но заморочено.

{if (file_exists($_modx->runSnippet("substr", ["input" => $_modx->config.assets_path])~$el.id | resource: 'photo')) AND $el.id | resource: 'photo'}
<img src="{$el.id | resource: 'photo' | pthumb : 'w=660&h=412&zc=1&q=90'}" alt="{$el.pagetitle}"/>
{/if}
Alexey
07 января 2023, 12:15
0
docs.modx.pro/komponentyi/pdotools/parser#%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5

Попробуй $.server['DOCUMENT_ROOT']. Я сам ни разу не использовал, но — судя по мануалу — может сработать
Роман
07 января 2023, 12:08
0
Спасибо, так работает, а на Fenom так нельзя сделать? Без лишних сниппетов?
Alexey
07 января 2023, 11:59
1
0
if ($input && file_exists($path)) {

Делай доп. проверку на пустоту tv -поля
Роман
07 января 2023, 11:53
0
Пока получилось только через сниппет, но все равно криво
Сниппет такой
$path = $_SERVER['DOCUMENT_ROOT'].$input;
if (file_exists($path)) {              
    echo $path. ' файл есть';
} else {
    echo $path. ' файла нет';
}
Но если поле TV с рисунком пусто $input понятно пуста, то он возвращает ФАЙЛ ЕСТЬ потому что $_SERVER['DOCUMENT_ROOT'] путь возвращает :( задолбался
Роман
07 января 2023, 11:45
0
Да спасибо, это уже понял, погуглил как работает file_exist но не пойму как указать путь от корня сервера в этой конструкции? if(file_exists($el.id | resource: 'photo'))