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

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

С нами с 01 июля 2013; Место в рейтинге пользователей: #27
Максим Кузнецов
11 апреля 2018, 11:17
0
Адаптивность (по ширине), как правило, формируется из двух составляющих:
1. нужные элементы и их потомки имеют процентный параметр width или max-width
2. использование media-запросов для изменения логики отображения нужных элементов при определенной ширине

Если у вас не адаптируется какой-то элемент (хотя должен, исходя из пунктов выше), вы можете проинспектировать их через консоль (f12 в хроме или пкм по проблемному объекту -> просмотреть код) и таким образом локализовать проблему. Дальше применяем пункты 1 и 2.
Максим Кузнецов
09 апреля 2018, 13:24
+5
Вопрос для тех, кто это читает: подскажите как для вас лучше — переводить текст максимально близко к оригиналу (как сейчас) или переписывать в более удобочитаемую форму, сохраняя основную мысль?
Максим Кузнецов
06 апреля 2018, 16:26
+1
Небольшая просьба по поводу улучшения алгоритма подсчета — отключить влияние на итоговый рейтинг добавление автором в избранное своих собственных комментариев и тикетов.

А то, на мой взгляд, тут эксплойт на лицо.
Максим Кузнецов
05 апреля 2018, 14:13
+3
То есть ровно то, что я описал в варианте 2?

Только:
— при чем здесь именно Office? (HybridAuth, Login, ...)
— зачем сохранять id, а потом при каждой загрузке страницы делать доп. запрос к таблице пользователей? И зачем для этого OnUserSave, если данные статичны.

И да, все же — что в итоге входит в мифические 90%? Триггер события OnUserSave?

UPD: не поймите меня неправильно, вашим решением тоже можно натянуть сову на глобус. Просто оно хуже.
Максим Кузнецов
05 апреля 2018, 14:00
+2
Не за что.)

К слову, при выборе второго способа, для вашей задачи можно ограничиться одним плагином (создание тикета в нужном разделе при активации), а редактирование страницы реализовать через родной компонент TicketForm c правами «только редактировать».
Максим Кузнецов
05 апреля 2018, 13:54
+1
Безусловно, Office — отличный компонент, основной вектор которого — профиль пользователя.

Но о какой «90% работы» идет речь, если вопрос звучал: «как сделать персональную страницу при регистрации пользователя»?
Максим Кузнецов
05 апреля 2018, 13:30
+4
Office тут не при чем, он отвечает лишь за регистрацию пользователя и редактирование его полей. (ну и вывод покупок minishop'a)
Максим Кузнецов
05 апреля 2018, 13:28
+4
У вас, условно, есть 2 варианта реализации страницы пользователя:

1. Виртуальная страница (напрямую не существует в БД, данные собираются на лету исходя из запрошенного урл). Пример такой реализации — modx.pro.
(способ реализации)

2. Полноценная страница (точно такая же, как и любая другая страница, создаваемая через интерфейс ресурсов MODX и хранящаяся в БД. Создается при регистрации/активации пользователя и, при изменении профиля пользователя, новые данные проецируются на страницу).
(способ реализации)
Максим Кузнецов
03 апреля 2018, 22:42
+1
Попробуйте задать массив так (подробнее):
'parent:IN' => array(1, 2, 3, 4);
Максим Кузнецов
03 апреля 2018, 22:40
+1
В текущем варианте — да (свой класс обработки события msDeliveryHandler).

А вообще, зависит от того, на каком этапе формирования цены вклиниться.
Максим Кузнецов
03 апреля 2018, 20:50
1
+1
Нет, имею ввиду вот так:
switch (true) {
	case $cart['total_cost'] <= 1000:
		$cost += 350;
		
		break;
		
	case $cart['total_cost'] <= 5000:
		$cost += 250;
		
		break;	
		
	case $cart['total_cost'] > 5000:
		$cost += 0;
		
		break;	
}

return $cost;
Максим Кузнецов
03 апреля 2018, 20:34
0
Если наценка указана в процентах (присутствует соответствующий символ) — то считаем наценку и прибавляем, иначе просто прибавляем.

В вашем случае достаточно свитчить $cart['total_cost'] и, в зависисимости от требуемых условий, приплюсовывать к $cost нужную сумму.
Максим Кузнецов
01 апреля 2018, 17:39
+1
Последняя попытка, если не поможет — мой скайп justbekami, давайте туда.

У вас сейчас при переключении фильтров записывается его id (вы смотрите результат с примесью старых записей, их нужно очистить):
"{"mse2_tv_pol_0":"checked","mse2_tv_pol_1":"checked"}"
(смотрю по dev.nosi.ru)

А в чанке мы ищем по name. Или замените в скрипте .attr('value') на .attr('name') или в чанке ищите по айди:
{var $filter_condition = $filters_condition['mse2_' ~ $table ~ '_' ~ $filter ~ '_' ~ $idx]}
Максим Кузнецов
01 апреля 2018, 17:31
+1
params[$(this).attr('value')] = filter_condition;
Для чего вы ставите ключ массива, равный значению фильтра?

Для начала, замените 'value' на 'name'.
Максим Кузнецов
01 апреля 2018, 17:23
+1
Так… смотрите:

1. Содержимое $.cookie('filters_condition') хранит json-строку с шаблоном
«name-фильтра»:«состояние фильтра».
2. Ваша задача в шаблоне фильтра получить нужную переменную куки и преобразовать её в массив:
$.cookie['filters_condition'] | fromJSON
3. Далее, вам нужно получить состояние конкретного фильтра по ключу массива (по-умолчанию, поле name):
{var $filter_condition = $filters_condition[$table ~ '_' ~ $filter]}
4. И, наконец, в зависимости от полученного состояния, проставить checked для фильтра.

Сейчас вы на шаге 3 — смотрите содержимое получаемого массива и, в частности, значение $filter_condition.
Скорее всего, мы ищем не по тому ключу (сравните передаваемое значение со значением name фильтра).
Максим Кузнецов
01 апреля 2018, 17:14
+1
Заместо $filter_key пропишите так:

{var $filter_condition = $filters_condition[$table ~ '_' ~ $filter]}
Максим Кузнецов
01 апреля 2018, 17:06
+1
Примерно сюда:

{var $filters_condition = $.cookie['filters_condition'] | fromJSON}
{var $filter_condition = $filters_condition[$filter_key]}

//Многоточие копировать не нужно - заместо них у вас будут родные переменные чанка для инпута
<input type="checkbox" ... {$filter_condition == 'checked' ? 'checked' : ''}  />
Максим Кузнецов
01 апреля 2018, 17:05
+1
Значит js-часть отрабатывает корректно.

Вы модифицировали шаблоны фильтров в вызове mFilter2?
Код из шага 3 внутри чанков теперь должен проставлять checked-статус для нужных фильтров.
Максим Кузнецов
01 апреля 2018, 16:56
+1
Я так понимаю, в приложенной библиотке куков, вызывать её нужно так:
Cookies.set('name', 'value');
Cookies.get('name');
— замените методы $.cookie в скрипте выше и будет вам счастье.

UPD: или можете попробовать подключить библиотеку, для которой был написан код выше:
oil-rf.ru/assets/global/js/lib/cookie.js
Максим Кузнецов
01 апреля 2018, 15:50
+1
Конечно не добавляет.
$.cookie is not a function
— вы не подключили скрипт, работающий с куками.

github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js