42 минуты назад
Понятно, изучать вкладки в migx…
Так то я пока освоил: создаем и заполняем таблицу с данными… Потом ее выводим…
Битый день гадаю: как сделать в migx-структуру с плавающими колонками.... 7
1 час назад
Сегодня узнавала в СДЭК, что при наличии договора есть самый дешевый тариф посылка склад-склад — это для юр лиц в договором. И такой же по срокам, но ...
[msCdekWidget] Альтернативный калькулятор доставки СДЭК 18
Сегодня в 11:32
Это указивать в контекстах админки субдомена или основного?
Как объединить два modx? 7
Сегодня в 10:30
Вывожу файл на странице через посредника
8kbit.ru/assets/components/webdav/index.php?action=proxy&source=2&ctx=mgr&src=files/personal/nes/videos/Zoid...
[WebDAV] Медиа источник для облачных хранилищ 22
Сегодня в 00:59
Будет обновление АПИ до 3 версии или нет????
[ms_CDEK2] Вывод информации в виджете на других языках 10
Вчера в 14:36
Насколько я помню, не во всех последних релизах была проблема со старой версией PHP (с 7й), а в 2.8.6 и 3.0.4 (предыдущих на текущий момент релизах из...
Вышел MODX 2.8.7 - починили превью, можно обновляться! 11
Вчера в 00:32
Демо вроде автор закрыл, а ссылка из поста на компонент вполне рабочая, или о чем речь?
Quiz или как не потерять клиента. 86
24 апреля 2024, 14:54
Давай попробуем вот так — youtu.be/BbyfFDARgZU
mmxApp - разработка новых composer дополнений 4
1. Добавляем в параметры допустимых полей сниппета ticketForm необходимое тв-поле (tvname1)
2. Добавляем внутри формы создания/обновления мультиселектор:
2. Добавляем для тега select атрибут data-real, со значением, равным названию нашего тв-поля и произвольный класс (пусть будет bimbo-input, от слова «пустышка»):
3. После тега select (или в любом другом месте внутри тега form) добавляем настоящий инпут, хранящий значение тв-поля:
4. В js добавляем событие, переносящие заполненные значения от селектора-пустышки в настоящий инпут при изменении первого:
5. В тот же js добавляем событие, переносящие реальное значение из скрытого инпута в пустышку при загрузке страницы:
В итоге:
— решение относительно универсально, т.к. не привязано ни к ticket-ам, ни к конкретным родителям, а упирается только в наличие нужных классов и скрытых полей
— вся лишняя нагрузка происходит в процессе заполнения
— может работать не только с мультиселекторами, но и простыми селекторами или инпутами (удобно в случаях, если селектор нужно кастомизировать каким-либо js-скриптом, который в процессе видоизменяет его структуру)
— когда вызывается файл main/default.js и auth/default.js, в первом определяется переменная Office и вложенные в неё общие функции, а во втором добавляется функция, работающая с авторизацией и регистрацией (и там же инициируется)
— принцип «переопределения» функции в том, что мы как бы переписываем переменную, содержащую саму функцию, и в её последующих вызовах уже будет выполняться то, что мы изменили.
И этот вариант хорош для больших файлов, где масса функций, а нам нужно изменить только одну из них. Например, в mSearch2 — таким образом мы сведем к минимуму проблемы, которые могут появиться при обновлении.
Но в файле auth/default.js всего 1 функция, которую мы и переопределяем. Поэтому в переопределении нет смысла, и вариант со своим файлом наиболее оправдан.
Так как переадресация должна происходить только после успешной регистрации, вам по-прежнему нужен сегмент, отправляющий данные на проверку и получающие ответ.
Вызов ДО основого файла будет перезаписан новой функцией от Office.
Вызов ПОСЛЕ приведет к тому, что у вас будет 2 идентичных скрипта, работать из которых будет только последний.
Если не секрет, какой объект resource вы получаете? И не легче ли получить его внутри плагина стандартными способами, как-то так:
(к слову, в редакторе сообщений есть тег code, который красиво оформляет синтаксис кода)
Приложите содержимое вашего плагина msOnCreateOrder. Если он выдает ошибку даже при пустом содержимом, стоит подумать о переустановке дополнения minishop2 и/или обновлении версии MODX-a
Способ с Inline-чанком избавляет от лишнего запроса к БД, способ с обычным чанком более читаем и удобнее, когда один и тот же чанк используется в нескольких вызовах. Лично я стараюсь использовать файловые чанки.
Документация.
Также не лишним будет открыть консоль браузера и посмотреть, не появляется ли в ней ошибка при нажатии на кнопку «заказать».
UPD: плюс, на мой взгляд, с точки зрения СЕО, переадресация с помощью js здесь более уместна, чем редирект. Но, возможно, сеошники меня поправят или предложат правильный код ответа (не 301/302).
Вообще, я изначально и писал вариант с переопределением функции (без необходимости замены js), но затем обратил внимание, что родной файл итак содержит, по-сути, всего 1 функцию, которую мы и заменяем.
В итоге загружаемый браузером код увеличивается в два раза без какой-либо необходимости — поэтому я и привел вариант с подменой файла.
Если подразумевалась пошаговая инструкция, то как-то так:
1. В чанке формы регистрации (по умолчанию tpl.Office.auth.login) дописать:
2. Создаем новый js-файл и копируем в него содержимое /assets/components/office/js/auth/default.js
3. Указываем путь до него в системной настройке office_auth_frontend_js
4. В новом файле заменяем данный код:
следующим:
Опционально, если до редиректа нужно дать время пользователю на просмотр сообщения об успешной регистрации, то строчку window.location.href можно обернуть таймаутом:
В рамках Office можно также переопределить функцию Office.Auth:
(функцию можно переопределить так)
Навскидку, тут одно из: или сторонний плагин или код, влияющий на функционал, или в новых версиях UserFiles что-то изменилось, или не все восстановили.
Дело в том, что при создании тикета, он физически формируется лишь при нажатии на кнопку «добавить», в то время как сами изображения в моем способе загружаются ДО создания ресурса, а в процессе его создания уже переназначаются новому ресурсу. Поэтому и необходим промежуточный родитель.
2. Визуально скрываете эту же кнопку с помощью стилей или классов
3. На кнопку «добавить фотографию» вешаете событие, указав id из шага 1:
(для примера из шага 3 требуется подключенный jQuery до кнопки «добавить фотографию»)
— вы можете подключить любую библиотеку всплывающих окон, засунуть во всплывающее окно вызов ufForm, а на кнопку «добавить файлы» повесить открытие этого окна
— вы можете скрыть форму ufForm с помощью css, а при нажатии на кнопку «добавить файлы» менять её отображающие классы или стили
Если вопрос был в том, где необходимо дописать html кнопки: чанки tplFormCreate/tplFormUpdate.
> which will result in a lot of the Dutch (and Vasily & Yana) to dress in orange
— вы оделись в оранжевую одежду или нарядились апельсинами? (нужны пруфы)
Если целью сайта было научиться азам программирования и верстки, то конечный продукт не будет эффективным для боевых задач. Если же вам необходим конечный продукт, реализованный своими силами, то совсем не обязательно писать все с нуля.
Разработка целого сайта подразумевает очень обширную сферу деятельности, и нет ничего зазорного в том, чтобы делегировать часть задач. Вы же не писали все используемые дополнения с нуля — поступите также и с дизайном, возьмите готовый шаблон. В процессе настройки его под себя вы все равно будете узнавать что-то новое, но в правильной дозировке, не превращая всю полученную информацию в кашу.
Что же до самого сайта, из того, что сразу бросается в глаза:
— скрипты, подключаемые с google fonts, можно склеить в один запрос (примерно так):
— без оглядки на небольшую эффективность тега keywords, его максимально допустимая длина — 250 символов (лучше уложиться в 150).
— иконку для сайта (favicon) можно сгенерировать детальнее для разных устройств — https://realfavicongenerator.net/
— для минимизации количества запросов, шрифты и стили лучше склеивать и минифицировать. Не углубляясь в детали, для вашего текущего уровня знаний подойдет MinifyX
— код, указанный ниже, не работает, т.к. он вызван до инициализации jQuery (вообще рекомендую при разработке почаще заглядывать в консоль браузера на наличие ошибок):
— при помощи плагина на событие OnWebPagePrerender можно реализовать сжатие html, что позитивно оценивается поисковыми системами.