Всего 125 983 комментария

Тодор
29 ноября 2021, 15:32
0
Я если мне нужно значение языка в js, то я в теге html прописую cultureKey
...
<html lang="[[++cultureKey]]">
...
потом в js обращаетесь к этому зачению
var lang = $('html').attr('lang');
Виктор
29 ноября 2021, 14:27
0
Приветствую!
Подскажите, пожалуйста, как правильно настроить локализацию типа en.site.ru.

На хостинге создал поддомен, создал локализацию, создал перевод страницы. Но открывается заглушка хостинга при клике на язык. Что-то еще нужно донастроить?
Виктор
29 ноября 2021, 14:27
0
Приветствую!
Подскажите, пожалуйста, как правильно настроить локализацию типа en.site.ru.

На хостинге создал поддомен, создал локализацию, создал перевод страницы. Но открывается заглушка хостинга при клике на язык. Что-то еще нужно донастроить?
Дмитрий
29 ноября 2021, 11:54
0
Подскажите, почему не работает сортировка по кол-ву просмотров в левой панели?
Слева за месяц, справа — за все время.
Сниппеты используют общие чанки. Предполагаю, что не «очищается» {$output}.
Евгений Webinmd
29 ноября 2021, 11:46
0
в коллекции можно добавлять свои колонки и делать возможность сортировать по ним. Что именно не понятно? Что было сделано для решения этой задачи?
Максим
29 ноября 2021, 10:45
0
<div class="row-fluid">
                    <label>Ваше ФИО (полностью)</label>
                    <input class="input" required type="text" name='fields[0][name]'>
                </div>
               
                <div class="row-fluid">
                    <label>Ваш E-mail</label>
                    <input class="input" required type="email" name='fields[0][email]'>
                </div>
                <div class="row-fluid" >
                    <label>Ваш телефон (в международном формате)</label>
                    <input class="input" required type="text" name="fields[0][phone]">
                </div>
чанк emailTpl

{foreach $fields as $field index=$i}
{$field[phone]}
{$field[email]}
{/foreach}
на почту ничего не приходит, вернее этих полей нет
Sergey
29 ноября 2021, 08:38
0
Все то что вы описали, верно. Нужно что бы плагин срабатывал всегда, при изменении кол-ва товаров, когда удалил 2 из 3-х товаров, у него возвращаеться цена, или если человек закинул 6 товаров в корзину, тогда два самых дешевых становятся с нулем)) Возможно кто то сможет написать плагин не за бесплатно)?
Александр Мельник
29 ноября 2021, 08:24
0
Мне кажется вам нужно и сами условия акции хорошо продумать. К примеру — человек покупает 3 товара и у самого дешевого ваш плагин поставит цену равную ноль. Но потом человек добавит в корзину еще 2 товара и у один из них еще более дешевый. Как быть — тому товару что обнулили возвращать изначальную стоимость, и теперь самому дешевому из пяти ставить нулевую? Плюс нужно позаботаться о том, что человек может и удалять товары из корзины, к примеру добавил три товара, один из них стал бесплатным, а потом удалил два с ценой и купил один товар за нулевую цену. Тоесть ваш плагин должен еще отрабатывать событие удаления товаров, изменения их количества и так далее.
Артур Шевченко
28 ноября 2021, 22:08
0
Можно использовать 1 плагин на 2 события.
Вероятно я мы по-разному считаем количество плагинов))) А по поводу остального, это было моё предположение.
Артур Шевченко
28 ноября 2021, 22:05
0
Так ты проверил, событие срабатывает?
Sergey
28 ноября 2021, 20:45
0
switch ($modx->event->name) {
    case 'msOnChangeInCart': case 'msOnAddToCart': case 'msOnRemoveFromCart':
    $tmp = $cart->get(); //Получаем информацию о козине - т.е. список товаров
    //$modx->log(xPDO::LOG_LEVEL_ERROR, print_r($tmp, true));
    foreach ($tmp as $key1 => $value) {
            if ($product = $modx->getObject('msProduct', $value['id'])) {
                $quantity = $value['count']; // получаем кол-во товара в корзине
               
                if ($quantity > 2) {
                    $tmp[$key1]['price'] = $product->get(0);
                }
                else {
                    $realPrice = $product->get('price');
                    $tmp[$key1]['price'] = $realPrice; // Устанавливаем новую цену для товара в корзине
                }
            }
        }
    //$modx->log(xPDO::LOG_LEVEL_ERROR, $realPrice);
    $cart->set($tmp);
    break;
}
Нашел как бы пример, если кол-во больше 2 то ставит цену 0, но ставит всем товарам, а как найти товар с наименьшей ценой и ему поставить не знаю, не особо разбираюсь в написании (((
if ($quantity > 2) {
                    $tmp[$key1]['price'] = $product->get(0);
                }
                else {
                    $realPrice = $product->get('price');
                    $tmp[$key1]['price'] = $realPrice; // Устанавливаем новую цену для товара в корзине
                }
            }
        }
https://modx.pro/help/18846 тут оригинал
Aleksandr Huz
28 ноября 2021, 20:33
0
На всё это нужно два плагина, но возможно, я не учёл какие-то нюансы.
1. Можно использовать 1 плагин на 2 события.
2. msOnBeforeAddToCart — не подойдет, цена устанавливается после этого события, и после него есть еще событие msOnGetProductPrice, где какой-то компонент может изменить цену товара.
Артур Шевченко
28 ноября 2021, 19:18
0
Я бы сделал так. Перед добавлением товара в корзину (msOnBeforeAddToCart) проверял бы сколько товаров уже есть в ней, если 3 и больше обнулял стоимость, соответственно при удалении товара из корзины (msOnRemoveFromCart) делал бы аналогичную проверку, но возвращал товару с нулевой стоимостью его первоначальную цену. На всё это нужно два плагина, но возможно, я не учёл какие-то нюансы.
Aleksandr Huz
28 ноября 2021, 19:17
0
Использовать событие msOnAddToCart
Евгений
28 ноября 2021, 18:02
0
да, вот пытаюсь разобраться как такой плагин сделать :)
Евгений
28 ноября 2021, 18:01
0
еще бы внутри коллекции сортировку, чтото там как то странно, не могу понять :(
Артур Шевченко
28 ноября 2021, 17:44
+1
Если XParser создаёт ресурсы через процессоры, то скорее всего срабатывают системные события, значит можно попробовать на OnDocFormSave отменять публикацию.
Евгений Webinmd
28 ноября 2021, 16:53
+1
из документации
sortby = { "tvname":"ASC", "publishedon":"DESC" }
с ASC и DESC уже меняй как надо