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

Артур Шевченко
09 января 2023, 12:05
+1
Я, наверное, отвечу про мультикатегории раз никто другой не стал. В minishop2 они есть из коробки. Однако вы пытаетесь использовать два подхода разом: либо вы ставите галочки и составляете условие вывода, либо создаёте в каталоге два ресурса типа Категория товаров (Распродажа и Акция) и добавляете в них товары, также проставляя галочки, но не в опциях, а на вкладке Категории у конкретного товара. В этом случае достаточно просто отправлять пользователя, кликнувшего по баннеру, на соответствующую страницу (Распродажа или Акция), где должен быть как минимум вот такой вызов
{'!msProducts' | snippet: ['parents' => $_modx->resource.id]}

Или так
[[!msProducts?parents=`[[*id]]`]]
Артур Шевченко
09 января 2023, 11:54
0
Почистить лог и по очереди открывать страницы сайта, на какой странице появится ошибка там и надо искать где идёт получения url без корректного id.
Артур Шевченко
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 -поля