Вчера в 21:17
самый просто вариант это хукЯ тоже так думаю
Этот хук обрабатывает форму "Купить в 1 клик", создает заказ в miniShop2 1
04 сентября 2025, 12:45
Нет, данную проблему не решил, потому как она мне и не мешала… Так как с сам minishop3 использовал на паре проектов где доставка и не требовалась. Буд...
[MiniShop3] - Новости, Планы 34
04 сентября 2025, 12:35
казалось бы чего, открой другой браузер, где не выполнен вход и заноси заказаМожно установить adminTools и запретить автоматическое залогинивание в ко...
Оформление заказа minishop2 1
04 сентября 2025, 12:27
modx.pro/help/12408#comment-81924
minishop2 отправить фотографию товара заказчику 11
03 сентября 2025, 19:36
Если ты просто скачал компонент из репозитория и не запускал composer install — запусти.
MiniShop3 - 1.0.0-alpha 20
31 августа 2025, 21:09
Экранировать, то есть так: $c->sortby($this->modx->escape('rank'), 'ASC');
Во всех файлах?
/core/components/pageblocks/processors/mgr/co...
PageBlocks. Удобное управление контентом сайта. 46
29 августа 2025, 18:05
Василий, здравствуйте! Очень интересное (и правильное) направление для развития modx экосистемы как мне кажется. В последнее время для разработки боль...
Новый тип дополнений: mmxDatabase и mmxForms 41
29 августа 2025, 17:29
Пересобрал шаблон для новостей которые через Collections.
В какой TV была ошибка так и не нашел (((
Мodx revo 3.1.2 при запросе страницы, связанной с Collections сервер возвращает ошибку 500 3
28 августа 2025, 21:34
Добро. Сейчас, сейчас… прольётся чья-то кровь )))
Доработки сайта сообщества modx.pro 11
p.s. эх, вот бы они ещё систему прав пересмотрели, чтобы не надо было на каждый чих по группе пользователей создавать. И поддержку Postgres в xpdo добавили бы… Мечты-мечты)
Вообще, вся эта ситуация сложилась из-за того, что хипстота возвела ангуляр в статус культа, не особо разбираясь в вопросе, а потом, следуя веяниям этой моды, как на дрожжах начали плодиться фреймворки (rivets, ractive, vue) со схожими подходами, мол смотрите, мы такие же, как и ангуляр, только «лучше»! Ага-ага.
Кто-то идёт своим путём (react, riot, mithril), со своими синтаксисами и идеологиями. Кто-то от этого тащится, но меня к такому жизнь не готовила :) «Смешались в кучу — кони, люди».
Из новой гвардии есть ещё Ember. О нём могу сказать, что это хардкорная годнота с высоким порогом вхождения (мой уровень пониже, поэтому сильно в него не углублялся, времени нет).
Из старой — есть Backbone (со своим разношёрстным набором расширений, на каждый из которых надо потратить кучу времени, чтобы разобраться) и ExtJS.
На Backbone надо много писать руками, у ExtJS весь ui — компонентный уже из коробки, с декларативным подходом (что удобно).
В итоге, пришло осознание, что зря я в своё время с ExtJS'ом не подружился :-D
Грустно. И забавно одновременно)
Тогда в голове прочно сидела мысль, что Ext — это уже что-то монструозно-устаревшее и уж в наши-то времена по-любому есть что-то более удобное. Ага, как же.
Конечно, он тоже не без недостатков (с кучей недостатков)), но быстрота разработки (благодаря декларативному подходу), куча готовых ui-компонентов для crud-интерфейсов и по порогу входа ниже среднего — всё это перекрывает его недостатки и наповал валит всю эту новомодную разношёрстную братию. Для своих проектов и админок — идеален. Но делать на нём интерфейсы со сложной ux-логикой я бы всё-равно не стал, ибо разработка легко может перейти от декларативной к постоянной борьбе с самим фреймворком.
Вот прям чувствую, что ничего нового не предложат. И надеюсь на это. Потому что ExtJS для задач modx'а подходит идеально и доказал временем свою пригодность.
Другим достойным кандидатом может быть только Ember, но авторы Modx'а вряд ли на это пойдут, потому что порог вхождения для написания новых компонентов сильно увеличится, старые авторы отсеятся, новых не прибавится.
И вряд ли они выберут что-то построенное на jQuery (типа KendoUI). Потому что это те же яйца, только в профиль и сильно урезанные.
А больше выбирать-то и не из чего.
Компоненты, не завязанные на ext, легко можно делать хоть сейчас. Кому это нужно — тот пользуется такой возможностью, а кому нет — использует ext. Баланс идеальный. Вряд ли это станут менять. Да и не хотелось бы.
Единственное, что хотелось бы видеть — так это коннекторы чуть более restful-ориентированными и ui-kit (css-фрейворк со гайдлайнами), не завязанный на ext, описание которого вывести отдельным разделом в документации (чтобы получился свой getbootstrap.com). Вот тогда будет действительно офигенно и абсолютно универсально и каждый будет использовать то, что ему нравится и что умеет.
А не могли бы вы в той теме (ссылку на которую я выше кинул) по-подробнее расписать — что на что поменяли и т.п. На будущее, ткскзать, и для потомков)
Я очень много времени провёл в выборе адекватного фреймворка/библиотеки с двухсторонним дата-биндингом, отсутствием магии в исходниках, простоте в поддержке кода, и отсутствием навязывания структуры приложения.
Много чего смотрел — vue.js, riot.js, angular, react, ractive, rivets, mithril, куча их
plnkr.co/edit/leZaT043Yffz4LfG8Ykq
Так вот. Нахер ангуляр. Если вам кто-то рьяно советует брать ангуляр, то это либо очень хороший спец (каких действительно мало), либо ведомый на моду новичок (который не делал ничего сложнее примеров из туториалов). Причём очень хороший спец вряд ли будет вам его советовать, потому что он прекрасно знает сколько подводных камней может собрать неопытный разработчик. Писать на нём что-то серьёзное — это постоянная борьба с самим фреймворком (при условии отсутствия должного опыта). А набивать этот опыт — смысла тупо нет ибо сами авторы от своих подходов уже отказались и пилят новую версию с нуля вообще выбросив дата-биндинг со своим dirty-checking'ом.
Реакт можно брать и изучать только в том случае, если вас не воротит от адовой смеси html и типа-js (jsx). Меня лично воротит :-D
Та же история с riot — он прикольный, но для действительно сложных интерфейсов может не подойти. Та же адова смесь логики и вьюхи, но до кучи — каждый компонент должен лежать в отдельном изолированном tag-файле. Расширяемые насыщенные интерфейсы делать сложновато.
Vue — очень схожий с ангуляром в плане синтаксиса вьюх (если это вообще можно назвать вьюхами). Есть скринкаст, где парень за час написал на нём excel (прям с редактированием ячеек и формулами). Но если взглянуть на этот код через полгода, то хоть с бутылкой, хоть без неё — разобраться проблематично. В плане поддержки кода и вхождения в проект — не оч.
Rivets/ractive — всё туда же, но со своими приколами.
Лично для себя я выбрал (не поверите) матрёшку. Я приверженец выбранного автором матрёшки подхода — вьюхи отдельно, логика работы с вьюхами — отдельно. Из коробки двухсторонний дата-бинд без магии (на геттерах и сеттерах). Это то, чего мне так не хватало в любимом мною Backbone'е.
Структура приложения не навязывается — хочешь писать на «классах» — пиши, хочешь писать универсальные расширяемые ui-компоненты — пиши (если умеешь)). Шаблонизатор — бери любой по вкусу (я выбрал swig). Хочешь компилировать вьюхи на этапе сборки? Всё в твоих руках (привет ангуляр, vue, ractive).
Да, кода надо писать побольше, но зато он полностью под твоим контролем и в нём разберётся любой джуниор, миддл — тем более.
А если нету жёстких условий по интерфейсу и дизайну — берите ExtJS, используйте его обширную библиотеку готовых компонентов и не заморачивайтесь.
Как-то так.
modx.pro/help/4080/
Может и вам что-нибудь из того списка поможет
Потому что мне, для этих же целей, он ключик зажал. Прям хоть в яглу иди, блин.
где вместо domain.tld подставьте домен своего сайта (точку в начале не забудьте).
Но имейте в виду ещё и такой нюанс. Может быть проблема в этом?
Да даже я для себя делал такой вот скрипт clickjacking'а, только так ни разу им и не воспользовался ибо совесть.
Холиваров на эту тему было мерянно-немерянно и прошли они года два назад. Как-то поотстали вы от современного интернет-маркетинга)
Судя по тому, что сервисы живут и здравствуют уже несколько лет — с юридической точки зрения к ним не подкопаться.
Так что смысла в ещё одном холиваре нет — все обсуждения прекрасно гуглятся. А использовать или нет, честно/нечестно, красиво/некрасиво, как обычно, каждый решает для себя сам.
p.s. сорри, веткой промахнулся
Но, первым делом, я бы изучил код msdGetDiscount-сниппета, изучил бы его логику, с какими таблицами он работает, как работает с акциями, скидками, группами пользователей и т.п.
И по аналогии написал бы плагин на событие регистрации нового пользователя, который и сделает нужную работу.
Обратиться можно, конечно, да только вот, к сожалению, времени нет. И в ближайшие несколько месяцев — не появится.
Но я могу дать вам пару рекомендаций, чтобы вы смогли двигаться в верном направлении :)
1. Обратите внимание на msDiscount.
2. Можете также обратиться к любому разработчику из списка пользователей сообщества. Уверяю — там много талантливых разботчиков (гораздо талантливее меня)), с которыми вы сможете прийти к каким-либо договорённостям.
3. Создать объявление о работе — тоже вариант :)
Надеюсь, помог)
4) modx.pro/howto/5139-super-modx-strict-seo-accelerated-frontend/
По интернету, конечно, есть отдельно взятые статьи и на русском, и на английском, но назвать это документацией — сложно)
MyISAM не поддерживает транзакций. И php никаким образом не может заставить эти транзакции работать, потому что это уровень базы данных — если мускул не умеет, то php тут бессилен.
Вызов функций $modx->beginTransaction(), $modx->commit() и $modx->rollBack() не даёт ровным счётом ничего, ибо это просто обёртки над стандартными одноимёнными функциями встроенного в php PDO-класса.
Сейчас лень проверять, но, если мне не изменяет память (больше года назад с этим разбирался, не помню уже), ни одна из этих функций не возвращает false, если идёт работа с нетранзакционными таблицами (т.е. с MyISAM) и ведут они себя просто как заглушки, не влияя на ход выполнения программы и не выбрасывая никаких исключений или ошибок.
Как мы выяснили выше, xPDO умеет работать только с MyISAM. Транзакции есть в InnoDB.
Автор в той статье не уточняет — научил ли он работать modx с innodb или нет. Если бы научил, подозреваю, что статья была бы именно об этом, а не о транзакциях.
Вывод? Какая-то бессмысленная там статья.
Решал это тем, что в методе открытия окна делал проверку на существование этого же окна в dom'е. Если в dom'е оно есть, то делаем hide(), remove(), а потом создаем окошко заново.
У окна, соответственно, жестко прописанный id-шник.
Как-то так: