Дмитрий Танцирев

Дмитрий Танцирев

С нами с 03 декабря 2013; Место в рейтинге пользователей: #118
Дмитрий Танцирев
18 апреля 2021, 09:13
0
Ок, с этим разобрались =) Благодарю за ответ.

Когда планируешь допилить вот это?: yadi.sk/d/gzaSCy4zrTnLTw
Дмитрий Танцирев
18 апреля 2021, 08:46
0
Да ёмаё.
Модуль вообще хоть как-то допиливается? Работа по нему ведется?
Или он заброшен?

Мне нужен ответ, только на этот вопрос.
Дмитрий Танцирев
18 апреля 2021, 08:31
0
Под обновлением я имею ввиду выход новой версии этого пакета.

Доработки по этому модулю вообще ведутся?
Будет ли допилен не достающий функционал, закрыты мелкие баги?
Дмитрий Танцирев
17 апреля 2021, 20:03
0
Павел, приветствую! Планируется ли в ближайшем будущем обновление пакета?
Дмитрий Танцирев
13 февраля 2021, 08:33
+3
Привет!) Исправляюсь)
Я уж если честно, забыл совсем про этот коммит.
Мне уведомления приходят, что тут какая-то движуха происходит, но всё как-то времени не было посмотреть нормально.

@Андрей Шевяков протестировал верно. На сколько я вижу, тестировал он именно в корзине. Если тест производился в карточке товара — то не ок.
Не ок в том плане — что мой коммит работает тогда не верно =)

Логика:
1. Кладём товар в корзину с любой опцией (с выбранным размером, цветом, фасоном, хоть с чем).
2. Теперь идём в корзину (именно в корзину) и по аналогии с кол-вом товара, мы можем менять и опции товара.

Если мы зашли в карточку товара, положили этот товар с опцией в корзину, остались в карточке этого товара и снова добавили этот же товар в корзину но с другой опцией — то в корзину должен упасть «новый» товар. Т.е. этот же товар, но с другой опцией.
Если же вместо этого поменялась опция — то мой коммит работает НЕ верно.
Ибо в этом случае не возможно будет заказать несколько позиций одного и того же товара, но с разными опциями (с разным размером, цветом и т.п.).
Тобишь коммит должен работать только в корзине.

Тест:
1. Положили товар в корзину с опцией.
2. Положили этот же товар еще раз в корзину но с другой опцией — если добавился новый товар — то всё ок.
Если же у товара в корзине обновилась опция — то можно прекращать тест — мой код работает не верно.
3. Идём в корзину. В &tpl сниппета msCart, как и писал @Андрей Шевяков по аналогии с кол-вом товара добавляем:

<form method="post" class="ms2_form">
        <input type="hidden" name="key" value="{$product.key}">
        <input type="hidden" name="count" value="1">
        <input type="text" name="options[size]" value="{$product.options.size}">
        <button type="submit" name="ms2_action" value="cart/change">Изменить размер</button>
    </form>
Ну и собственно пытаемся изменить размер.

По поводу лексикона:
— просто добавить новый лексикон и надеется что всё заработает — не получится =)
— коммит изменяет стандартную функцию $miniShop2->cart->change(). А она в свою очередь предназначалась только для изменения кол-ва товара.
Соответственно нужно дописывать код и смотреть что именно изменяется.
Если изменилось кол-во — то выводить одно уведомление.
Если изменилась опция — то выводить другое уведомление.
Если изменилось и то и другое — то ваш сайт удалится =) шучу =)
Дмитрий Танцирев
18 января 2021, 16:31
+1
Спасибо большое! Полезная фича =) Плюс объясняет как работать с контекстным меню в минишопе.
Дмитрий Танцирев
26 октября 2020, 17:50
0
Если нужна просто проверка кол-ва товаров в корзине, то решение дали выше.
Создаёте плагин, вешаете его на событие msOnSubmitOrder и делаете проверку.
Дмитрий Танцирев
21 сентября 2020, 06:45
0
Алексей, вы случаем не реализовали данную фичу? =)
Дмитрий Танцирев
16 сентября 2020, 13:10
+1
Откровенно криво реализован данный момент в самом минишопе (не в вашем скрипте — а непосредственно в самом минишопе).
Из-за этого приходится сначала удалить товар из корзины, затем по новой его добавить с новой опцией.
Хотя Василию ни что не мешало в минишоповскую функцию change — отправлять массив с опциями.
Может пофиксит этот момент.

Спасибо за подсказку! Сижу вот мучаюсь с такой же задачей.
Теперь хоть появилась мысль как сделать костыль без изменения минишоповких исходников =)
Дмитрий Танцирев
23 июля 2020, 15:10
0
При указании пресловутого this.renderChunk и указания ему renderchunktpl, MIGX начинает перезаписывать значение отрендеренного поля.

Т.е., сначала в поле «ID параметра» сохранится значение: «37», как и положено.
Потом произойдет рендер этого поля с помощью this.renderChunk.
Да, в таблице у вас отобразится не ID, а текст «Цвет» который соответствует этому ID.
Но! При этом, this.renderChunk — так же перезаписывает значение и в самой JSON-строке, которая сохраняется в TV поле.

По итогу, при попытке вывести данное TV поле на сайте, у вас выведется не «37», а «Цвет».

Зачем Bruno17 сделал таким образом — одному ему известно.

Поэтому, если вы не хотите чтобы this.renderChunk перезаписывал значение вашего TV, придётся писать свой собственный рендер.
Дмитрий Танцирев
20 марта 2020, 08:35
-3
Господи, мужик, да что с тобой?
И так понятно, что это решение не претендует на примию оскар. Оно было у меня в закромах, т.к. приходилось с такой же проблемой столкнуться. Накидал за полчаса… овнокода, выполнил задачу и забыл.
Если упираемся в лимит времени, значит огрничиваем количество документов обратнных за раз (с 50 до 10 например).

Выложите тогда своё решение, если диадема жмёт.
Зачем этот срач на пустом месте?
Ради рейтинга чтоль?
Дмитрий Танцирев
20 марта 2020, 02:12
0
Создаём файл resavepdf.php в корне сайта.

Пишем в него следующее:

<?php 
	
	ini_set('max_execution_time', 0);
	ignore_user_abort(true);

	define('MODX_API_MODE', true);
	require_once 'index.php';

	$offset = isset($_GET['offset']) ? htmlspecialchars($_GET['offset']) : 0;
	$c = 'modResource';
	$q = $modx->newQuery($c);
	$q->where(array('template' => 13));
	$q->limit(50,$offset);
	$q->sortby('id');
	$q->select(array("{$c}.*"));
	$s = $q->prepare();
	$s->execute();
	$i = 0;
	while($row = $s->fetch(2)){
		$response = $modx->runProcessor('resource/update', $row);
		if($response->isError()){
			print_r($response->getResponse());
			return;
		}
		$i++;
	}

	if($i){
		$offset += 50;
		header("Location: https://site.ru/resavepdf.php?offset=$offset");
	}else{
		echo "Готово.";
	}
 ?>
Запускаем.
Дмитрий Танцирев
11 ноября 2019, 22:27
0
В корзине, old_price берется из дефолтного минишоповского поля old_price, вместо old_price модификации.

Я бы и сам поправил, но в ваших хитровымудренных сплетениях хитровымудренного недокументированного кода — черт ногу сломит.
Дмитрий Танцирев
11 ноября 2019, 21:56
0
Этот ваш old_price в корзину отправляется? Или он только в карточке товара работает? =)
Дмитрий Танцирев
31 октября 2019, 02:59
0
Ставим &processTVs=`1` и проблема решена.
Дмитрий Танцирев
22 октября 2019, 15:44
0
Приветствую! Наблюдаю странное поведение старой цены.
Даже на вашем демо-сайте.

1. Идём сюда — s6200.h3.modhost.pro/katalog/tovar1.html

Выбираем айфон цвета — «Белый», размер памяти — 256
yadi.sk/i/iaUKW-L9izOPqQ
И кладём в корзину.

Переходим на страницу корзины и видим старую цену: 13 645.74 руб

Тут всё ок.

2. Снова идём на эту же страницу с товаром.
Но теперь кладём в корзину саму модификацию — yadi.sk/i/YQJIsBoduyia7A

Переходим в корзину и видим что старая цена у нас совершенно другая — yadi.sk/i/2fD84ME5EajDvg

По логике, это скорей всего старая цена которая указана в поле old_price самого Minishop2

Точно так же, ваш модуль ведет себя и на моём сайте.
Он не отправляет старую цену модификации в корзину.
В корзине всегда выводится old_price из поля минишопа. — yadi.sk/i/XYFbAXVVoqs5Pg
Дмитрий Танцирев
12 сентября 2019, 10:00
2
+1
1. Откройте файл: "/{core_path}/components/yandexmaps/tv/input/tpl/tv.yandexMaps.input.tpl

2. Вырежьте из 108-ой строки:
window.suggestView = new ymaps.SuggestView('suggest', {literal}{'results':'9'}{/literal});
3.1 И вставьте её перед: (примерно 180-я строка)
suggestView.events.add('select', function (e) {
3.2 Таким вот образом:
var suggestView = new ymaps.SuggestView('suggest', {'results':'9'});
Дмитрий Танцирев
12 сентября 2019, 09:56
0
Оч давно пользуюсь данным компонентом, спасибо Павел!
Но, всегда возникает один и тот же вопрос после установки этого компонента на каждый новый сайт: «как оно у тебя работает?» =)

Всегда и на всех сайтах, консоль браузера выдаёт одну и ту же ошибку: «Uncaught ReferenceError: suggestView is not defined». Карта прогружается, но не работает поиск, маркер и клик по карте (на переставляет маркер).

Приходится лезть в "/{core_path}/components/yandexmaps/tv/input/tpl/tv.yandexMaps.input.tpl

Удалять из 108-ой строки, строку:
window.suggestView = new ymaps.SuggestView('suggest', {literal}{'results':'9'}{/literal});
И вставлять её перед 180-ой строкой, перед:
suggestView.events.add('select', function (e) {
Таким вот образом:
var suggestView = new ymaps.SuggestView('suggest', {'results':'9'});
Только после этого карта запускается и начинает работать.
Ибо suggestView.events.add банально не видит window.suggestView
Т.к. она вне области видимости.