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

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

С нами с 01 июля 2013; Место в рейтинге пользователей: #27
Максим Кузнецов
01 апреля 2018, 15:14
+1
Так… первое: когда у вас не работает что-то с js-скиптами, крайне рекомендуется открыть консоль браузера (f12 в хроме) и посмотреть наличие ошибок.

В вашем случае:
— у вас не работает функция tooltip
— у вас 2 формы #mse2_filters (со всеми вложенными фильтрами). Так делать нельзя, потому что id — параметр, значение которого должно быть уникальным в рамках одной страницы.
Максим Кузнецов
01 апреля 2018, 15:05
+1
Замените current_condition на filter_condition, недоглядел.)
Максим Кузнецов
29 марта 2018, 20:02
0
Была схожая проблема, в итоге все свелось к тому, что в плагине на событие OnPageNotFound (висела кастомная маршрутизация) была строка:
$modx->sendRedirect($redirect_page, array('responseCode'  => 'HTTP/1.1 404 Not Found'));

При такой конструкции на деле срабатывал 301 редирект. Замена строки на простой return решило проблему.

UPD: к слову, у вас происходит 404-редирект, просто до него происходит и 302.
Максим Кузнецов
29 марта 2018, 12:18
+1
modx.pro/help/7433/ — возможно, это вам поможет.
В частности, метод doLayout()
Максим Кузнецов
29 марта 2018, 12:10
+1
Хех… Это, наверное, очень странно, что я нахожу время на то, что считаю нужным сам, да..)

Мог бы. Как и вы могли бы не обращаться с вопросом «стоя на коленях», а решить его своими силами. Но к чему эти вариации?

Вы или не понимаете, или не хотите понимать. Автосервис заинтересован в том, чтобы решить вашу проблему — ему за это платят. Готовы ли вы заплатить за решение вашей?
Если да, то раздел работа ждет вас.

Нет уж, простите, я не вижу смысла отвечать на ваши вопросы, когда вы не готовы отвечать на мои.
Максим Кузнецов
29 марта 2018, 11:58
+1
Это забавно..) Вы считаете, что оскорбив сообщество (которое, к слову, состоит не только из программистов), вы уязвили его самолюбие, но при этом не замечаете то, что причина вашей обиды в том, что вам никто не помог? Так чье же самолюбие уязвилось?

Что же до вашего вопроса… Если это он, то даже опустив придирки о том, что вопроса там, в общем-то, нет, там, к тому же, крайне мало информации о вашей проблеме как таковой.
Где вы хотите вывести ваш checkbox — в ресурсах, виджетах, отдельной странице? Открою для вас секрет — все советы и помощь в этом сообществе мало того, что как правило бескорыстны, так еще и (сюрприз) — отнимают время. И тратить его на тех, кто не в силах даже сформулировать вопрос, порой излишняя роскошь.
Вы никогда не задавались вопросом — с чему вам вообще кто-то должен помогать?

К слову, вы так и не ответили на мой вопрос.
Максим Кузнецов
29 марта 2018, 11:48
0
Авторизацию на поддомене и, как следствие, другой результат проверки isAuthenticated.
Максим Кузнецов
29 марта 2018, 11:45
+1
Подскажите, на сколько из 82 ваших тем с вопросами вы не получили ответ?)
Максим Кузнецов
27 марта 2018, 04:22
0
Возможно, вы и не авторизованы на поддомене?
В таком случае, нужно выставить правильную настройку session_cookie_domain. (*.mysite.ru или .mysite.ru)
Максим Кузнецов
13 марта 2018, 02:11
2
+5
1. Подключается любая библиотека для работы с куками (например)
2. В js создается событие на изменение всех или только нужных вам фильтров, в котором будет запоминаться их состояние, примерно таким образом:

$(document).on('change', '.filter-class', function(e) {
	//В примере все состояния фильтров хранятся в одной переменной куков 'filters_condition' в json-формате
	var filters_condition = $.cookie('filters_condition');
			
	//Смотрим, существует ли она уже, чтобы не затирать другие значения
	if (typeof filters_condition !== 'undefined' && filters_condition !== null) {
		var params = filters_condition != "" ? $.parseJSON(filters_condition) : {};
	}
	else {
		var params = {};
	}
	
	var filter_condition;
			
	if ($(this).is(':checked')) {
		filter_condition = 'checked';
	}
	else {
		filter_condition = 'not_checked';
	}

	//Уникальный атрибут, по которому будет находиться фильтр, в моем случае - name
	//Если есть риск существования одинаковых значений инпутов/селекторов в разных формах, то можно переназначить на id
	params[$(this).attr('name')] = current_condition;
		
	$.cookie('filters_condition', JSON.stringify(params));
});

3. В чанках, отображающие фильтры в mFilter2 перехватываем нужные данные в куках, после чего выставляем результат:

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

//$filter_key - переменная чанка mFilter2, содержащая name фильтра
{var $filter_condition = $filters_condition[$filter_key]}

//...
//В нужном месте инпута/селектора выводим состояние:
{$filter_condition == 'checked' ? 'checked' : ''}

Пример демонстрационный, для наибольшей наглядности. То же состояние $filters_condition в шаблоне лучше единожды распарсить из JSON-a, после чего записывать в плейсхолдер, чтобы в последствии данные дергать уже из него.
Максим Кузнецов
11 марта 2018, 19:22
-1
*пожал плечами* Можно. А еще задачу можно решить так:

{$.php.array_reverse(
	$.php.array_reverse(
		$.php.array_reverse(2 | resource : 'video' | fromJSON)
	)
)}

Только лучше от этого решение не становится, равно как и то, что такая альтернатива не имеет преимуществ.
Максим Кузнецов
11 марта 2018, 17:24
+2
Для данной задачи достаточно вынести функцию в свой модификатор.
Максим Кузнецов
04 марта 2018, 03:37
+2
В extended-полях пользователя все данные хранятся единой json-строкой, поэтому нормально фильтровать и сортировать по ней не получится.
Могу посоветовать расширить родную таблицу пользователей данным способом — после этого вопрос с фильтрацией отпадет.
Максим Кузнецов
22 февраля 2018, 22:12
1
+1
При желании — можно, но зачем?

Особенность fenom-a такова (помимо преимуществ шаблонизации), что он отрабатывает только 1 раз, тогда как родной парсер MODX-a может пробегаться по шаблонам до 10 раз.

Совмещая родные теги и теги MODX-a, вы лишь создаете дополнительную нагрузку.

UPD: советую особенно внимательно посмотреть раздел синтаксиса из ссылки выше, это позволит закрыть многие вопросы.
Максим Кузнецов
22 февраля 2018, 21:54
+1
[[+id]] != [[*id]]
[[*id]] — идентификатор текущей страницы

[[+id]] — плейсхолдер внутри сниппета/чанка, относящийся к выводимому результату сниппета.
Максим Кузнецов
22 февраля 2018, 21:39
+2
Может из-за этого?

[[+id]] = {$id}
[[*id]] = {$_modx->resource.id}
Максим Кузнецов
19 февраля 2018, 15:50
0
Отчасти причина в удобстве переопределения — если вы укажете дефолтное значение тв-поля, а затем переназначите на другое, то системе не придется пробегаться по всем ресурсам и искать заполненность старым значением для последующей замены.
Максим Кузнецов
14 февраля 2018, 19:10
0
MIGX хранит данные в json-формате.

То есть по-умолчанию вы сразу достаете все данные, поэтому для реализации пагинации у вас есть 2 способа: визуально прятать часть результатов (внутри цикла foreach, например), отображая нужный промежуток в зависимости от get-параметра или с помощью jQuery при помощи display block/none.
Максим Кузнецов
12 февраля 2018, 23:31
0
Вы можете поменять реакцию ckeditor при нажатии клавиши enter с тега p на br.

В файле manager/assets/components/ckeditor/ckeditor/config.js
CKEDITOR.editorConfig = function( config ) {
	config.enterMode = CKEDITOR.ENTER_BR;
	config.shiftEnterMode = CKEDITOR.ENTER_P;
};

Максим Кузнецов
20 января 2018, 07:04
+1
case 'OnWebPagePrerender':
	$html = $modx->resource->_output;
	$html = preg_replace('|\s+|', ' ', $html);
	$modx->resource->_output = $html;