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

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

С нами с 03 декабря 2013; Место в рейтинге пользователей: #142
Дмитрий Танцирев
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, придётся писать свой собственный рендер.
Дмитрий Танцирев
25 мая 2020, 12:18
0
Ошибочка, сдэк прекрасно отдает пункты самовывоза если вместо названия или id города ему скрамливать индекс, именно по этому в компоненте есть настройка об отключении учитывания id города
Нет тут ошибочки. Я про это и пишу, что если сдэку отправить просто название города — он ничего не выдаст. Но при этом если ему отправить индекс и (или) код города — он выдаёт пункты.

Можно подробнее? Вы имеете ввиду способ который описал выше? Если да — он работать не будет
Ну да. Тут согласен. Работать не будет. И теперь ясно для чего были придуманы эти коды городов. Т.к. городов с одним и тем же названием — может быть множество. Справедливо.

Опять же, почему вы так думаете? То что индекс не меняется от смены города — задумано специально, пользователь врятли ошибется в своем индексе, а вот в городе запросто выбрав например Ростов, вместо «Ростов-на-Дону» и если в этом случае индекс у него автоматически изменится, а пользователь даже не заметит — пользователь получит все шансы не получить посылку, а магазин все шансы понести убыток.
Как вы уже писали — «пользователь всегда идиот». И введя название другого города и выбрав его из выпадающего списка, он будет долго соображать, че же у него пункты самовывоза то старые остались. А всё потому, что индекс города остался прежним.

Мне всегда было интересно почему есть целый пласт людей считающий что остальные дебилы, а вот они умные, я работаю с интернет магазинами уже 5 лет, и интернет магазины с которыми я работаю относительно большие с 50-150 заказами в день, вы правда считаете что я не сделал замену индекса только потому что я дурак и не проверил этот момент?
Эм. Я где-то вас назвал дебилом? Или дураком?
Вы как-то очень критично и агрессивно относитесь к комментариям (ну или мне так кажется).
Да и похоже сами считаете, что кроме вашей точки зрения, не должно быть никакой другой.

Смею заверить, что мой опыт разработки и работы с инет. магазинами — не чуть не меньше вашего.
И чем глубже в лес, тем больше приходит понимания, что далеко не всегда даже 100% кажущаяся правильной вещь — действительно правильная.

Сейчас модуль работает именно со сменой индекса при смене города. Заказы поступают постоянно и не было еще не одной жалобы. (Но при этом надо учесть, что в настройке «cdek_calc_city» — стоит «Нет». Это ключевой момент, в данном случае)

Можете не переделывать этот момент. Это вам решать.
Дмитрий Танцирев
25 мая 2020, 11:37
+1
Вместо того чтобы отрефакторить код и документацию, всё превращается в какую-то санта-барбару.

Адреса пунктов самовывоза, СДЭК умеет отдавать только если получит индекс города получателя и (или) код города получателя по базе СДЭК.

Ссылка на документацию API СДЭК:
clck.ru/NdXeu

Соответственно, СДЭК не умеет отдавать адреса пунктов самовывоза, если вы ему просто отправите название города получателя. Он должен получить именно код города.
Отсюда и начинается гемор.
Город указали (и самое главное — выбрали его из выпадающего списка) — вам выдало пункты самовывоза. Затем начинаете менять название города (и самое главное — НЕ выбираете его из списка, а просто меняете в поле) — СДЭК никак на это не реагирует, и выдаёт адреса прошлого города.

Всё потому, что код города получателя, умеет отдавать только JS плагин «autocomplete» (выпадающий список со списком городов). И только если вы выберете город из этого выпадающего списка городов.

Решения тут два:

1. Пользователю — идти в конфигурацию, искать настройку «cdek_calc_city» (Учитывать город) и ставить «Нет».
2. Разработчику — допилить свой код и сделать так, чтобы код города получателя отдавался не JS плагином «autocomplete», а непосредственно в самом классе «msCDEK_handler».

P.S. в файле: /assets/components/ms_cdek2/js/libs/autocomplete.js:47

Вместо:
/* инициализация индекса */
            var index = $('[name=index]').val();
            if (!index) {
                setTimeout(function () {
                    $('[name=index]').val($(item).data('index'));
                    miniShop2.Order.add('index', $(item).data('index'));
                }, 1500);
            }
Надо:
setTimeout(function () {
                $('[name=index]').val($(item).data('index'));
                miniShop2.Order.add('index', $(item).data('index'));
            }, 1500);
Иначе, если мы выберем город из выпадающего списка (и при этом если у нас указан индекс), то индекс не будет изменен. А по сути должен. Т.к. город то мы поменяли.
Дмитрий Танцирев
29 апреля 2020, 17:00
0
То что я не проверил модуль — да, мой косяк. Глянул бы глубже — не купил.

Тут обсуждение модуля — так мы его и обсуждаем (я бы сказал: осуждаем).

Надеюсь что ты адекватно воспримешь фидбек и всё таки причешешь и оттестишь код. Хотя бы для себя.
Дмитрий Танцирев
29 апреля 2020, 16:36
0
Окей. Делай возврат за модуль.
Дмитрий Танцирев
29 апреля 2020, 16:19
0
Модуль — откровенный шлак. Крайне не советую к покупке. Ладно бы он еще бесплатно отдавался — претензий бы не было, но за 1,5к. и такое — по мне так это позорно товарищ.

В JS скриптах черти чё и сбоку бантик. Ощущение что накидано за пять минут, с мыслями: «И так сойдёт».

Банально куча багов даже на демо-сайте. Вбиваем город — выдаёт подсказки — выбрали город из подсказок — отобразились пункты выдачи. А теперь вводим вручную другой город и не выбираем его из подсказок — выдаст пункты выдачи прошлого города.
И таких багов — множество.
Ты хоть тестируй своё чудо перед релизом.
Дмитрий Танцирев
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
Т.к. она вне области видимости.
Дмитрий Танцирев
06 ноября 2018, 11:26
0
печально) ну чтож, будем ожидать новую версию)
Дмитрий Танцирев
06 ноября 2018, 11:05
0
Приветствую!
У msOptionsPrice2 есть возможность добавить такие вот вкладки: yadi.sk/i/WcBfOwmW0PddvA
(Описание и Галерея)

Данные из вкладки «описание» сохраняются в этот столбец базы данных: yadi.sk/i/z9hibu2ekNmThQ
(т.е. этот столбец идет по умолчанию из коробки)

Данные из вкладки «галерея» сохраняются в таблицу «msop_modification_images»
Во вкладке «галерея» мы можем присвоить каждой модификации несколько фото, которые были загружены в галерею товара yadi.sk/i/5e8fIxLMnNkquw

Вопрос: Подскажите, каким образом делать импорт-экспорт этих «вкладок»? Прописан ли данный функционал в самом msImportExport?