Сuriosity

Сuriosity

Был в сети 27 декабря 2021, 13:55
Заказы не принимаю
Все ваши новые поля поломаются, если, при внесении записи в это поле, вставить одинарную кавычку (апостроф).
Если следовать вашему примеру, то зайдя в профиль юзера, ​
в поле «Новое поле профиля» написать вместо:
Можно сохранять что угодно…
например
Можно сохранять что угод'но…

Сохраняем, заходим еще раз в профиль этого пользователя и вуаля… нового поля нет (а если было не одно новое поле, то и других бы тоже).

Неприятность находится здесь:
case "OnUserFormPrerender":
        if (!isset($user) || $user->get('id') < 1) {
            return;
        }

        if (!$modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) {
            $data['new_checkbox'] = $user->new_checkbox ? 'true' : 'false';
            $data['new_field'] = htmlspecialchars($user->Profile->new_field);
Внесите в код правку:
$data['new_field'] = htmlspecialchars($user->Profile->new_field, ENT_QUOTES);
Или, как вариант, впихнуть какую-то регулярку…
Надеюсь, это кому-то поможет.
добавьте плагин на событие отвечающие за выход пользователя из личного кабинета и перед выходом сохраняйте список товаров в корзине.
Я тоже думал в этом направлении, но появилась мысль, не будет ли это лишним, возможно есть уже готовое решение из коробки того же Office или miniShop2. А, если нет, может какое-то готовое элегантное решение…
Александр, спасибо за внимательность. Я действительно забыл заменить концовку из мануальной на оригинальную:
$response = $this->ms2->invokeEvent('msOnValidateOrderValue', array(
            'key' => $key,
            'value' => $value,
        ));
        $value = $response['data']['value'];

        return $value;
P.S.
Код поправил.
Только-что перенес.
Хотя, насколько я помню, изначально эту статью не мог занести в раздел «Готовые решения», потому как не хватало рейтинга.
А если это так, то только-что обнаружился баг.
Если вначале создать статью в разделе «Вопросы», то после редактирования можно, не смотря на рейтинг, перенести в раздел «Готовые решения».
(:
Более того, немного расширил проверку на апостроф.
Т.к. апострофы народ пишет кому как удобно…
’, ʼ, ', ` — все это разные символы.
Но теперь, какой бы из этих вариантов пользователь не ввел, автоматом заменит на '.
Нет, не поломалось! Очень даже рабочий вариант. Правда с регулярным выражением пришлось повозиться…
Дело в том, что в эту регулярку нельзя прямо вставить нужные символы, приходится прописывать краказябры, как будто я написал символы в utf-8, а вижу как windows-1251.
Пока остановился на варианте:
— добавляю товарам опцию, например:
clothes_gallery_id_id (id Галереи главного товара);

— соответственно в Майка4 (104) и Майка5 (105) в этой опции указываю 103;

— в шаблонах для карточек товаров дубликатов пишу что-то вроде:
{if $_pls['clothes_gallery_id.value'] > 0}
            {$_modx->runSnippet('!ms2Gallery', [
                'resources' => $_pls['clothes_gallery_id.value'],
                'tpl' => '@FILE chunks/gallery/tpl.ms2Gallery.tpl'
            ])}
        {else}
            {$_modx->runSnippet('!ms2Gallery', [
                'tpl' => '@FILE chunks/gallery/tpl.ms2Gallery.tpl'
            ])}
        {/if}

Все же лучше, чем использовать TV