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

pobnpolk
30 января 2021, 17:09
0
Ну а всё-таки, где меняется язык?
pobnpolk
30 января 2021, 16:51
0
Иван, где можно хорошо научиться, из какого источника, писать свои обработчики, плагины, и компоненты под ваш продукт. Доделывать уже существующие. Всё вроде здорово, сообщество умное, но когда начинаешь делать или спрашивать всем как обычно нет особого времени объяснять, все у все индивидуально, кто-то старается ради авторитета, кто-то ради продаж. Поэтому приходится всегда искать решения индивидуально и очень долго, а это невыгодно.
Иван Бочкарев
30 января 2021, 16:47
0
пока не было обращений по данному вопросу. Обновлено или установлено более 80 магазинов.
pobnpolk
30 января 2021, 16:33
0
Всплывающие сообщения — при добавлении товара в корзину, или удалении. Message.success
Иван Бочкарев
30 января 2021, 16:23
0
Это вопрос? О каких уведомлениях идёт речь?
pobnpolk
30 января 2021, 16:20
0
Иван, добрый день. Спасибо за релиз.
Подскажите пожалуйста, после обновления все уведомления стали на английском?
Alexey
30 января 2021, 16:07
0
Привет! Попробуй в чанке письма заказчику — по дефолту это tpl.msEmail — вывести что-то такого плана:

<a href="{$total.payment_link}">Ссылка на оплату</a>

Если правильно помню содержимое класса минишопа, если класс платежа есть в настройках (и в платежном классе есть метод getPaymentLink), то автоматом генерируется плейсхолдер со ссылкой на оплату.
Артур Шевченко
30 января 2021, 12:28
0
А вы можете пошаговое решение написать или дать ссылку? Я бы почитал для саморазвития.
Dima
30 января 2021, 10:50
0
То что Евгоний скинул, полностью подходит, msminicartdynamic, просто не сталкивался с этим плагином ранее
Николай Савин
30 января 2021, 10:06
0
Вам нужно быстрое решение, чтобы не вникать или пошаговое объяснение механики работы? Иными словами как объяснить как такое реализовать самому?
Dima
30 января 2021, 01:04
0
Да, верно
Артур Шевченко
30 января 2021, 00:53
0
То есть если товар есть в корзине, нужно это показать и дать возможность изменить его количество, верно понимаю?
Dima
30 января 2021, 00:42
0




Вот пример. Если я обновляю страницу, то у товара остается поле для изменения его количества, т.к. он есть в корзине
Как вы сказали, но не только при добавлении идет проверка, но и при загрузке страницы.
Артур Шевченко
29 января 2021, 23:34
0
Ох, тяжело… Вы хотите чтобы на странице каталога, там где выводятся все товары из всех категорий и, возможно, есть фильтры, после нажатия на кнопку добавления в корзину, происходила проверка на наличие этого товара в корзине и если он там есть, то кнопка добавления должна скрываться и показываться поле для указания количества?
Илья Александрович
29 января 2021, 19:46
0
в первой версии msPromoCode есть такое
Кейсы — Именные промокоды для пользователя

во второй версии это есть?
Артур Шевченко
29 января 2021, 18:39
0
Спасибо всем участвующим. Будем считать вопрос решённым.
Артем
29 января 2021, 18:21
0
Зачем высчитывать все эти расхождения, если можно просто заново проиндексировать массив на основе нового значения?
Я предполагаю, что в этом массиве у тебя собраны сразу все необходимые id:
<?php

$array = [246 => 1, 267 => 2, 296 => 3, 308 => 4, 309 => 5];
$affectedResource = 308;
$newIndex = 2;

$array[$affectedResource] = $newIndex - 0.5;
asort($array);
$index = 1; // индексирование будет начато с единицы
foreach ($array as $id => &$oldIndex) {
    $oldIndex = $index;
    $index++;
}

return $array;

Если тебе не принципиально, чтобы первый индекс был единицой, то можно еще проще:
<?php

...
asort($array);
return array_flip(array_keys($array));
Артур Шевченко
29 января 2021, 16:01
0
Ну суть та же, только я хотел обойтись без промежуточного массива. По факту
$resources = $modx->getIterator('msProduct', array('parent' => $resource->get('parent')));
Массив для пункта 1 можно вытащить только перебрав $resources. И да, с массивом работать удобнее, но п.3 это проблема. Давайте псевдокод напишу
$oldValue // старое значение позиции текущего ресурса
$newValue // новое значение
$resources // массив со всеми значениями [id => menuindex]
//По идее надо перебрать $resources предварительно сравнив $oldValue и $newValue
if($newValue < $oldValue){
foreach($resources as $r){
//надо прибавить  1 ко всем menuindex которые соответствуют  $newValue <= menuindex < $oldValue
}
else{
//надо отнять  1 ото всех menuindex которые соответствуют  $newValue > menuindex >= $oldValue
}
}
Но получается что если $newValue < $oldValue, то последнее значение не меняется.
Alexey
29 января 2021, 15:25
0
Если честно, я не сильно вчитывался в код, приведенный в условии. Но я бы в принципе по-другому пути пошел.

  1. Вначале вытащил бы в отдельный массив данные нужных ресурсов (ключ-id, значение-menuindex)
  2. Сохранил бы в отдельные переменные новый menuindex и его id (в плагине он и так доступен)
  3. И спокойно бы раскурочил массив из п.1 так как нужно — не в пример нагляднее, чем перебирать ресурсы. Есть методы сортировки, array_flip и так далее..
  4. Полученный в результате «пыток» в п.3 массив должен содержать: ключ — id ресурса, значение — новое значение menuindex, которое соответствует условиям
  5. Сохраняем menuindex из массива в ресурсы, id которых в ключе

Тут всё наглядно, при работе с массивом можно каждый шаг дебажить и тестить. А так с наскока — перебирая ресурсы — мне, к примеру, тяжеловато сообразить