Дисконтная система для miniShop2

Вась, привет!

Я тут пишу дисконтную систему для miniShop'а. Потихоньку-понемногу получается, но вот ExtJS меня просто вымораживает :-(

Вот значит нужен супербокс с возвожностью ввода пользователей (и подсками этих пользователей, соответственно).

В ms2.combo.js написал вот это:
miniShop2.combo.Users = function(config) {
	config = config || {};
	Ext.applyIf(config,{
		xtype:'superboxselect'
		,allowBlank: true
		,msgTarget: 'under'
		,allowAddNewData: true
		,addNewDataOnBlur : true
		,resizable: true
		,name: 'coowners'
		,anchor:'100%'
		,minChars: 2
		,store:new Ext.data.JsonStore({
			id: config.name + '-store'
			,root:'results'
			,autoLoad: true
			,autoSave: false
			,totalProperty:'total'
			,fields: ['username','id']
			,url: MODx.config.connectors_url + 'security/user.php'
			,baseParams: {
				action: 'getlist'
				// ,username: config.value
			}
		})
		,mode: 'remote'
		,displayField: 'username'
		,valueField: 'id'
		,triggerAction: 'all'
		,extraItemCls: 'x-tag'
		,listeners: {
			newitem: function(bs,v, f){
				var newObj = {
					username: v
				};
				bs.addItem(newObj);
			}
		}
	});
	config.name += '[]';
	miniShop2.combo.Options.superclass.constructor.call(this,config);
};
Ext.extend(miniShop2.combo.Options,Ext.ux.form.SuperBoxSelect);
Ext.reg('minishop2-combo-users',miniShop2.combo.Options);
И для всплывающего окна добавляю поле:
{xtype: 'minishop2-combo-users',fieldLabel: _('ms2_discountcard_coowners'), name: 'coowners', anchor: '99%',  id: 'minishop2-discountcard-coowners-'+type}
И всё, приехали:
TypeError: this.el is undefined
Скрипты modx'ом клеются, но ошибка вылетает в ExtJS-их файлах.
Я уже парочку своих xtype'ов сделал (по аналогии с твоими), и ошибок не было, а здесь вот хоть убей…

Понятное дело, что по приведённому коду диагностировать — что пальцем в небо, а сам не могу уже — для меня ExtJS тёмный лес, страх и ужас :-(

Поэтому прошу помощи — может посмотришь/поможешь?

Дисконтная система будет классная. Если есть возможность — можно в скайпе скооперироваться, чтобы проще было и быстрее. Заодно расскажу, что планируется.
Все последние изменения можно у меня с гитхаба забрать, посмотреть.
Алексей Карташов
03 августа 2013, 13:12
modx.pro
2
2 796
0

Комментарии: 21

Василий Наумкин
03 августа 2013, 17:15
0
В админке MODX можно использовать и jQuery, ExtJS не обязателен.

Ну и не совсем понятно, зачем оно вообще в админке? Этим только менеджер будет рулить, для юзера ничего не будет? Иначе можно было бы это написать как контроллер к Office — без админки, и с любыми скриптами и внешним видом.
    Алексей Карташов
    03 августа 2013, 17:31
    0
    Не, тут надо с админкой. Будут огромные возможности.

    Смысл какой — во настройках добавляется новая вкладка — «Типы скидок». Вот описание этой вкладки:
    Укажите типы скидок для дисконтных карт. Например, «5%» или «2000».
    Здесь же вы можете привязать скидку к конкретному товару. Например, у вас есть товар «Дисконтная карта на сумму 5%». Создайте тип скидки «5%» и свяжите её с этим товаром.
    К этому товару автоматически привяжутся все дисконтные карты (созданные в панели управления) с этим типом скидки. И тогда, пользователь, купивший этот товар, автоматически становится владельцем первой свободной дисконтной карты с данным типом скидки.

    И так же можно будет создавать дисконтные карты из админки. Можно назвать это промо-кодом, как угодно, суть не меняется. Эти карты могут быть общими для всех, именными, иметь совладельцев, иметь ограничение на количество использования.
    Здесь, вы можете создавать дисконтные карты и связывать их с созданными раннее скидками.
    Так же можно устанавливать лимит пользования (0 — неограниченно).
    Дисконтные карты могут быть:
    — общего пользования;
    — именными, т.е. привязываются к определённому пользователю. Вы можете назначать владельца карты вручную, либо это будет происходить автоматически, если скидка, привязанная к этой карте, связана с товаром и пользователь приобретёт этот товар.

    Именные карты могут:
    — иметь совладельцев, т.е. пользователей, которые, помимо владельца, также могут воспользоваться данной картой;
    — быть публичной, т.е. этой картой может воспользоваться любой. Разница с картой общего пользования только в том, что у этой карты есть конкретный владелец.
    Пара скринов того, что готово:


    Вот в первом скрине — осталось только в окошко создания/редактирования добавить superbox с возможностью выбора нескольких юзеров сразу.

    И всё, что в описаниях выше — всё сделаю, но вот с ExtJS никак не совладаю :-( Он меня убивает просто. И ведь осталось-то с ним совсем немного — остальное дело техники — сниппет для упраления картами для фронта и обработки.

    В админке MODX можно использовать и jQuery, ExtJS не обязателен.
    Дак а как мне из jQuery юзать Ext-овские виджеты? А именно superbox.
      Василий Наумкин
      03 августа 2013, 17:34
      0
      Ты бы написал об этом в Simple Dream, им будет очень интересно.
        Алексей Карташов
        03 августа 2013, 17:39
        0
        Они мне помогут разобраться с Ext'ом? ^_^

        А ты примешь этот коммит, если что? :-) Задумка-то клёвая! Да и возможности гибкие будут)

        p.s. как там, кстати, дела с no-js?)

          Василий Наумкин
          03 августа 2013, 18:07
          0
          Они могут помочь это выпустить отдельным дополнением, так как раздувать MS2 я не собирюсь.

          По no-js я тебе сразу сказал — ждать будешь долго, я завален работой на месяц вперед.
            Алексей Карташов
            03 августа 2013, 18:15
            0
            Они могут помочь это выпустить отдельным дополнением
            Ну это вариант, конечно. С самого начала я так и хотел, но вот установил modExtra и дальше не продвинулся. С твоими наработками куда проще было начать это делать, поэтому и начал «внедрять» в твой код.

            на месяц вперед
            Воу, аж на месяц счёт идёт… Ну хотя бы так, куда деваться)
    Ilya Ev
    23 апреля 2014, 23:22
    0
    Добрый день, а ваша разработка вылилась в какое то решение? а то тут скоро понадобиться промокоды внедрять, был бы признателен)
      Олег
      23 апреля 2014, 23:46
      0
        Ilya Ev
        24 апреля 2014, 07:53
        0
        так там нет промокодов к большому сожалению (
        Алексей Карташов
        24 апреля 2014, 10:47
        1
        +1
        Приветствую!

        К сожалению, разработка не закончена. Заказчику, для которого это делалось, в итоге промо-коды не понадобились, а больше подобных заказов не было.

        Я вам историю одну расскажу, реальную, про промо-коды (не моя, рассказывали).

        Так вот. Был сайт. Было поле для ввода промо-кодов при оформлении корзины.
        И решили это поле ввода убрать. Просто выпилили любое упоминание о промо-кодах.
        Вуаля — конверсия при оформлении корзины выросла на 15-20%. Т.е. убрали одно поле, а прибыль магазина увеличилась (грубо говоря) на 5ю часть. Приносил магазин 100 тысяч прибыли, стал приносить 120 тысяч. Убрали промо-коды. Чудеса? Отнюдь, всё довольно логично — юзер, дошедший до этапа оформления корзины, видел поле для ввода промо-кодов, шёл в гугл, чтобы найти себе заветную скидочку, и… больше на сайт не возвращался. Убрали это поле — убрали мотивацию уходить с сайта не завершив покупку.

        После этой истории, продолжать разработку на добровольных началах стало не интересно. Плюс к этому, зная, что эта разработка может наоборот ухудшить конверсию и уменьшить прибыль, я её доделывать уже точно не буду.

        Такие дела. Расскажите эту историю вашему заказчику — может он передумает и вам не придётся внедрять эти промо-коды :-)
          Василий Наумкин
          24 апреля 2014, 11:23
          0
          Кстати да, замечал за собой такое — запросто могу уйти искать промо-код.

          А если не пойду, то вся равно появляется стойкое ощущение, что я переплачиваю, а мог бы и сэкономить.
            Ilya Ev
            24 апреля 2014, 20:27
            0
            Реально улыбнуло) Такой грамотный ответ заказчику, чтобы не внедрять что-то) А давайте внедрим вот это, не не надо конверсия упадет…

            но в целом мысль верная, сам себя ловил на этом, при покупке чего-то на сайте, поход в гугл, но как правило, все равно возвращался, так как вроде надо было купить, хотя по себе не судят конечно)

            А если все же убедить не удастся) во сколько бы вы оценили спонсорскую помощь для продолжения разработки?

              Алексей Карташов
              24 апреля 2014, 20:49
              +1
              Только без обид, но ни во сколько.
              У меня работы на 2 месяца вперёд и с modx никак не связанная. К тому же с ExtJS мы хорошими друзьями так и не стали — до сих пор очень долго и скурпулёзно объясняю ему, чего мне хочется, а он всё время нос от меня воротит (extjs — одна из причин из-за чего не доделал. Причин, на самом деле, было намного больше, только вот найти ту статью с тем комментарием, в котором они были расписаны, что-то не могу).
              Так что возвращаться к тому, что радости мне не принесёт — желания нет. Извините.
              Mihan
              25 апреля 2014, 11:58
              0
              Да, есть такое. Конверсия падает, если поле ввода промокода есть в корзине.

              Но это мощный инструмент для работы с уже существующими клиентами. Делается рассылка, чтобы конверсию увеличить, клиенту предлагается уникальный промокод на сколько-то процентов. Но поле ввода доступно только тем, по кому делалась рассылка или только авторизованным.
                Алексей Карташов
                26 апреля 2014, 18:51
                0
                Ваша правда. Email-маркетинг вкупе с промо-кодами — сильный инструмент.
                Вот только на практике, к сожалению, среднестатистический заказчик не особенно задумывается над ребаями. Тем более не задумывается о ребаях с помощью email-маркетинга. И точно не задумывается об объединении рассылок с промо-кодами.
                И рассылку составлять такой заказчик, в большинстве случаев будет сам (со своим, далёким от нормального качества, подходом к составлению писем), либо наёмный работник, которому вообще всё это не надо.

                А на выходе получается забитая папка «Спам» с совершенно безсодержательными и навязчивыми письмами из таких рассылок.

                Описанный вами подход — удел крупных игроков e-commerce'а. Но там в ход идут уже другие инструменты, гораздо профессиональней, со статистическим анализом проводимых маркетинговых кампаний и прочими плюшками. И с собственным штатом маркетологов (нормальных, не липовых).

                А среднестатистический заказчик такими возможностями не обладает.

                Я перфекционист, поэтому считаю, что лучше никак, чем кое-как.
                  Купчинский Михаил
                  11 сентября 2015, 16:53
                  0
                  Алексей, добрый день! На одном сайте есть необходимость реализовать систему скидок с использованием Дисконтных карт. Можно к Вам обратиться за помощью в данном вопросе? Разумеется не безвозмездно )
                    Алексей Карташов
                    11 сентября 2015, 17:06
                    0
                    Здравствуйте!
                    Обратиться можно, конечно, да только вот, к сожалению, времени нет. И в ближайшие несколько месяцев — не появится.

                    Но я могу дать вам пару рекомендаций, чтобы вы смогли двигаться в верном направлении :)

                    1. Обратите внимание на msDiscount.
                    2. Можете также обратиться к любому разработчику из списка пользователей сообщества. Уверяю — там много талантливых разботчиков (гораздо талантливее меня)), с которыми вы сможете прийти к каким-либо договорённостям.
                    3. Создать объявление о работе — тоже вариант :)

                    Надеюсь, помог)
                      Купчинский Михаил
                      11 сентября 2015, 17:17
                      1
                      0
                      Отчасти помогли)
                      msDiscount уже есть.
                      К сожалению многие разработчики как и Вы заняты)
                      К вам обратился, т.к. у Вас уже были наработки по данной теме.
                      Может тогда подскажите как правильней решить данную задачу:
                      Нужно в момент регистрации пользователя проверять номер вводимой дисконтной карты (хотя бы по принадлежности к диапазону номеров) и разносить его в разные группы с разными скидками.
                        Алексей Карташов
                        11 сентября 2015, 18:13
                        +1
                        Я с msDiscount не работал, поэтому это гадание на кофейной гуще…

                        Но, первым делом, я бы изучил код msdGetDiscount-сниппета, изучил бы его логику, с какими таблицами он работает, как работает с акциями, скидками, группами пользователей и т.п.
                        И по аналогии написал бы плагин на событие регистрации нового пользователя, который и сделает нужную работу.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          21