Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 143 комментария

Василий Наумкин
Василий Наумкин
Можно попробовать сделать плагином, на событие редактирования ресурса.

Просто проверять, если класс ресурса = msTicketsSection, режим работы = create — то выставлять свой контент в массив ресурса.

Не проверял, но может сработать.
Ян Такушевич
Ян Такушевич
Я уже так и понял. Может быть в следующих версиях можно сделать это системной настройкой? Конечно если разделов несколько, то игра не стоит свеч. А вот если разделов десятки, или даже сотник, как в моем случае, то это очень даже удобно.
Ян Такушевич
Ян Такушевич
Я наверное не очень понятно вопрос сформулировал. Можно ли этот код заменить на вот такой:

<ul class="list">
[[!getPage@bootstrapPaging?
&element=`getTickets`
&tpl=`Tickets.list.row`
]]
</ul>
[[!+page.nav]]
Т.е. чтобы он появлялся по умолчанию при создании нового раздела.
Евгений
Евгений
Мне нужно изменить цену товара, взяв ее из TV, для определенной категории пользователей магазина в сниппите msGetPrice.
Большое спасибо за ответ!
Вот мой код:

if (!isset($modx->miniShop) || !is_object($modx->miniShop)) {
$modx->miniShop = $modx->getService('minishop','miniShop', $modx->getOption('core_path').'components/minishop/model/minishop/', $scriptProperties);
if (!($modx->miniShop instanceof miniShop)) return '';
}
// We have object resource - it is usual modResource object.
// Getting id of resource
$id = $resource->get('id');
// Getting properties of product
if (!$res = $modx->getObject('ModGoods', array('gid' => $id, 'wid' => $_SESSION['minishop']['warehouse']))) {return 0;}
if($modx->user->isMember('Оптовики')){
$opt_price = $_REQUEST['data']['wholesalePrice'];
//$res>getTVValue('wholesalePrice');
if(empty($opt_price)){
$price = $res->get('price');;
}
else{
$price = $opt_price;
}
}
else{
// Retrieving price
$price = $res->get('price');
}
Василий Наумкин
Василий Наумкин
Возможно, и ты не заметил, что я пользуюсь своими решениями сам.
Решения из репозитория, без отдельных исправлений лично для меня.

На моём сайте вход через ВК и Яндекс — работает. Делай выводы.
Иван Брежнев
Иван Брежнев
Кстати по поводу e.preventDefault(); есть такой момент, рекомендуют его в начале функции писать, т.к. если вдруг в скрипте во время выполнения всплывет ошибка, перехода по ссылке не будет, т.к. стандартное поведение мы уже сбросили.
Т.е. вот так
$(document).on('click', 'a.ajax_link', function(e) {
	e.preventDefault();
	var action = $(this).data('action');
	$.post(document.location.href, {action: action}, function(data) {
		alert('Запрос успешно выполнен');
		$('#result').html(data);
	})
})
Но так же можно использовать return false; в конце функции, потому что e.preventDefault(); не во всех браузерах правильно срабатывает
Василий Наумкин
Василий Наумкин
Заметка написана давно и там не учтены кое-какие вещи. Например то, что функция click() вешается только один раз на все подходящие элементы — при загрузке страницы.

После появления, кажется jQuery 1.7 нужно использовать функцию on():
$(document).on('click', 'a.ajax_link', function(e) {
	var action = $(this).data('action');
	$.post(document.location.href, {action: action}, function(data) {
		alert('Запрос успешно выполнен');
		$('#result').html(data);
	})
	e.preventDefault();
})
При таком обработчике все ссылки будут проходить через него, независимо от их происхождения.
LinkLib LinkLib
LinkLib LinkLib
Уважаемый Василий! Огромное спасибо за статью.
Со всем вроде разобрался, но, как водится, нашел куда упереться — прошу помощи:

При активации функции (ссылка class=«ajax_link»), возвращается список ссылок class=«ajax_link».
А они работать никак не хотят:( То есть все ссылки, которые были в момент первой загрузке страницы — работают, а новые — не хотят.

Не могли бы подсказать, что это может быть за болячка?

Заранее благодарен,
Дмитрий.
Василий Наумкин
Василий Наумкин
Комментируй в шаблоне по одному все сниппеты\чанки и смотри на скорость загрузки страницы.
Рано или поздно должна резко уменьшиться.

Еще можно поглядеть в лог ошибок nginx — вдруг там что интересное, типа таймаутов на определённой странице?