Максим Кузнецов

Максим Кузнецов

С нами с 01 июля 2013; Место в рейтинге пользователей: #33
13 декабря 2015, 09:57
+6
Если не возражаете, выскажусь по поводу видения данного дополнения и метода его работы в целом:

На мой взгляд, основное назначение «групп пользователей» — разделение прав доступа к ресурсам, к общему перечню их возможных действий и визуальному оформлению бэкэнда/фронтэнда.

Соответственно, потенциальный список разделения (в большинстве проектов) выглядит так:
— Админинстратор (управление всем)
— Модератор (управление другими пользователями)
— Публицист/Контенщик/Менеджер (управляет определенными страницами сайта)
— Премированная группа пользователей (доступ к определенным «закрытым» ресурсам)
— Пользователь (минимальный уровень персонализации)

Вне зависимости от активности того или иного пользователя, вряд ли есть необходимость в автоматизированном переходе от одной группы к другой в вышеописанной структуре. Просто потому, что потенциально разные полномочия не связаны с тем, как часто пользователь что-то совершает.

Динамичное же изменение «статуса» пользователя в зависимости от его рейтинга/потраченной суммы денег, относится скорее к понятию «подгруппа» и, за исключением применения в конкретных сниппетах, не имеет «глобальной» уникальности, присущей группам пользователей в понятии modx'a.

Пример подгрупп:
Статусы «форумного рейтинга»: Новичок, Ветеран, Бывалый, Старожил, Наумкин
Статусы «покупателя»: Покупатель, Активный покупатель, Суперактивный покупатель, 50% прибыли компании

К чему все это:

Если отталкиваться от возможности переключения именно групп пользователей, то правильнее было бы напорядок расширить понятие «кармы», внеся возможности вписывать произвольные условия, не ограничиваясь числовым показателем.
Например: заполнив все требуемые поля профиля, пользователь переходит в более «провинутую группу». Или просуществовав на сайте Х лет, к примеру.

В противном случае, создавать под каждую «рейтинговую» группу полноценную группу modx'a воспринимается излишне громоздко и, на мой взгляд, для такой задачи вполне достаточно ограничиться одним доп. полем для пользователя, где будет записываться «подгруппа».
12 декабря 2015, 22:39
+3
Лично я больше постараюсь ни в чьи вопросы-топики не лезть. Пусть все со своими вопросами разбираются сами, если они итак все знают.
Только ситхи все возводят в абсолют..)

Если серьезно — дело ваше, но на мой взгляд, это лишнее. За ту неделю, что ваша команда modxclub провела здесь, объем сгенерированного контента и процент активности в темах с вопросами возрос в разы. Да и с позицией «универсальности» полностью поддерживаю.

Весь вопрос только в минимизации попутно генерируемого негатива. И не важно, с чьей стороны.
12 декабря 2015, 22:32
+2
Не за что..)

Имхо, самый приятный вариант для нерадивых менеджеров, которым трудно перемещаться далее одного клика… Особенно если на сайте присутствуют настройки url-ов соцсетей, контактов, адресов и прочее прочее — тут никаких полей пользователя не хватит..)
12 декабря 2015, 22:24
+1
Сегодня просто сайт и нет авторизованных, а завтра есть.
Страно мыслить такими критерями…

Был вопрос: «Как сделать Х»

И ответы:
~ Лев: «Х и У делается вот так»
~ Сергей: «Х делается вот так»
~~ Николай: «Эй, здесь не учли У»

С тем же подходом стоит приводить возвращаемый телефон к требуемому формату, добавить автодозвон при нажатии и возможность прикрепления нескольких телефонов. А оттуда и до битрикса недалеко.

UPD: К слову о вышеперечисленном, если что — все это легко добавляется через ClientConfig..)

UPD2: Нет, я никому минусы не ставил.
11 декабря 2015, 05:14
0
Нет, просто если верстка идентична дефолтной — проблема, скорее всего, не в ней.

Приложите лог ошибок (консоли) — возможно проблема в javascript'e, лог журнала ошибок (маловероятно, но все же), если можете — сам сайт.
10 декабря 2015, 23:29
+2
Также, как и любой другой визуальный редактор:
1. Подключаем во фронтэнд требуемые стили и скрипты (по умолчанию здесь: assets/components/typomce/)
2. Инициализировать редактор для требуемых форм:
<script type="text/javascript">
	tinyMCE.init({
		//опции
	});
</script>
Но, если судить по описанию TypoMCE — это тот же TinyMCE, только с плагинами. Плагин на сохраниние по ctrl+s вам не потребуется на фронте -> вы можете установить любой tinymce, подключить его к форме стандартным способом (гайдов в интернете на эту тему хватает) и подключить к нему плагин на типограф.
10 декабря 2015, 19:23
0
Точно такая же форма на другом сайте обрабатывается нормально
Тогда, скорее всего, проблема в хостере — у них может банально стоять антиспам-модуль, запрет на отправку писем с тестового хостинга и тд и тп — вариантов удивить у них всегда хватает…

Попробуйте отправить тестовое письмо вот этим, чтобы узнать наверняка.
10 декабря 2015, 19:17
+3
Заказ не отправляется из-за того, что вы выбираете/добавляете обычные ресурсы, а не товары minishop2.
10 декабря 2015, 19:11
+1
Ну, каких то вопиющих ошибок в коде/вызове я не обнаружил, разве что:
name="phone" value="[[+fi.email]]"
— насторожило.

Если у вас возвращается положительный ответ, то, скорее всего проблема не в форме (тем более, что ajaxform просто обертка для обработки formlt), а в последующих действиях:
— попадает ли что-нибудь в лог?
— есть ли ошибки в консоли?
— чем у вас отправляются письма — smtp?
— возможно, письма просто ушли в спам?

+ могу еще поррекомендовать выставить &emailFrom и &hooks=`email` — на некоторых хостингах замечал такую багу, что без его указание форма обрабатывалась некорректно.

И да, напрямую к делу не относится, просто интересуюсь — у вас корректно отрабатывает этот код:
[[+fi.success:is=`1`:then=`
		<div class="alert alert-success">[[+fi.successMessage]]</div>
	`]]
	[[+fi.validation_error:is=`1`:then=`
		<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
	`]]
10 декабря 2015, 12:55
+1
&sortOrder=`DESC` &sortBy=`menuindex`
Документация.

А вообще — с evo чаще работают на modx.im, здесь больше по Revo.
10 декабря 2015, 10:14
1
+4
$modx->regClientStartupHTMLBlock('<meta name="viewport" content="width=device-width, initial-scale=1">');

Подробнее (eng)
10 декабря 2015, 10:09
1
+3
<?php
	if ($modx->event->name != 'OnManagerPageInit') return;
	$modx->regClientCSS('/путь/media.css');
09 декабря 2015, 18:40
+2
Там, где сейчас -3 и менее — я не могу голосовать более одного раза, да и дублей аккаунтов у меня нет..)

И дело даже не в самом факте стремительных падений рейтингов — просто зная специфику данного сообщества, в разделе Вопросов, если вы не Alexander V, ваш рейтинг редко опускается ниже значения 0/-1.

Впрочем думаю, здесь не лучшая тема для этого.

По теме: был бы очень рад увидеть полноценное дополнение для добавления/использования опросов (с мультивариантами, ajax'ом, голосованием только для гостей/юзеров и прочими радостями).
*мечтая* может быть, даже с добавлением с фронтэнда..)
09 декабря 2015, 18:33
+1
Да, с мультиаккаунтами беда, без шуток: зашел вот в эту тему, пока читал — все по нулям. Спустя минуту обновления — рейтинги в среднем до -4/-5 проседают у несогласных…

Может, сообществу нужен компонент, защищающий от накруток?)
09 декабря 2015, 08:04
0
Да, верно.
Для второго нужно юр.лицо или ИП.
09 декабря 2015, 06:47
+1
Яндекс.Деньги и Яндекс.Касса — 2 разных модуля.

Первый (mspYandexMoney) — позволяет оплачивать счет при помощи кошелька яндекса.

Второй (mspYaCassa) — представляет из себя ворох возможных способов оплаты через популярные сервисы, используя интерфейс и уже настроенный функционал яндекса. Подробнее.
09 декабря 2015, 00:44
+2
Допустим, у вас есть сниппет msProducts/mFilter2 для вывода/сортировки товаров. Для того, чтобы организовать сортировку по рейтингу нужно:
— загрузить модель easycoms в вызов &loadModels
— обозначить классы вызываемого контента
&class=`msProduct` &element=`msProducts`
— заджоинить таблицы easycoms в &leftJoin и &select
— вывести желаемую сортировку в &sort или &sortby, в зависимости от вызываемого сниппета

В итоге у вас получится примерно (напрямую с easycomm не работал) такая конструкция:
[[!mFilter2? &loadModels=`voteforms` &class=`msProduct` &element=`msProducts`&sort=`желаемый_плейсхолдер_для_рейтинга:desc`
	&where=`{"class_key":"msProduct"}`
	&leftJoin=`{
		"Класс_для_easycomm": {
			"class": "Класс_для_easycomm",
			"on": "msProduct.id = Класс_для_easycomm.поле_с_айди_страницы_в_таблице_easycomm"
		}
	}`
	&select=`{"Data": "*",  "Класс_для_easycomm": "Класс_для_easycomm.поле_рейтинга AS желаемый_плейсхолдер_для_рейтинга"}`
]]
В вызываемом чанке рейтинг можно будет выводить плейсхолдером [[+желаемый_плейсхолдер_для_рейтинга]], соответственно.

Извиняюсь, что не даю конкретный пример join'a — не работал с easycomm. Впрочем, составить запрос по аналогии, надеюсь, труда не составит.
08 декабря 2015, 20:02
0
Нет, в msGallery это не требуется — там достаточно просто указать плейсхолдер.

&includeThumbs — для подключения превьюшек в списке товаров (сниппет msProducts) и корзине (msCart).

Посмотрите журнал ошибок, может быть там что есть.
08 декабря 2015, 19:49
+2
Класс) Жду в магазине.
Искренне рад, что ваши дополнения появятся в modstore.
08 декабря 2015, 19:00
0
Вы указали требуемые для генерации превьюшки в медиа-источнике? (картинки вообще генерируются?)

Полная последовательность действий для отображения желаемых превьюх:

1. «Медиа — Источники файлов — создание/редактирование нужного источника» Параметр thumbnails: вводим в json-массив перечень желаемых превьюшек с требуемыми параметрами (водяной знак, % качества при сжатии и тд)

2. Подключаем в желаемый сниппет &includeThumbs (или leftjoin'ом, если параметра includeThumbs нет) с перечнем требуемых превьюшек

3. Выводим в чанке сниппета соответствующий плейсхолдер