Сергей

Сергей

С нами с 01 марта 2013; Место в рейтинге пользователей: #310
Дмитрий Середюк
16 марта 2019, 23:22
4
+1
<form method="post" class="ms2_form form-inline" role="form">
    <input type="hidden" name="key" value="{$product.key}"/>
    <div class="number-item">
        <button class="minus">-</button>
            <input type="num" class="amout" data-amout="amout" data-min="1" data-max="9999" name="count" value="{$product.count}">
        <button class="plus">+</button>
    </div>
    <button class="btn btn-default" type="submit" name="ms2_action" value="cart/change"></button>
</form>

function itemCount(field){
    var fieldCount = function(el) {
        var
	    // Мин. значение
	    min = el.data('min') || false,
	    // Макс. значение
	    max = el.data('max') || false,
	    // Кнопка уменьшения кол-ва
	    dec = el.prev('.minus'),
	    // Кнопка увеличения кол-ва
	    inc = el.next('.plus');
	function init(el) {
	    if(!el.attr('disabled')){
		dec.on('click', decrement);
		inc.on('click', increment);
	    }
	    // Уменьшим значение
	    function decrement() {
		var value = parseInt(el[0].value);
		value--;
		if(!min || value >= min) {
		    el[0].value = value;
	         }
	    }
	   // Увеличим значение
	   function increment() {
		var value = parseInt(el[0].value);
		value++;
		if(!max || value <= max) {
		    el[0].value = value++;
		}
	    }
	}
	el.each(function() {
	    init($(this));
	});
    };
    $(field).each(function(){
        fieldCount($(this));
    });
 } itemCount('[data-amout="amout"]');
Евгений Webinmd
16 марта 2019, 22:31
3
+1
у меня такой код

js
$('.bminus').on('click',function () {
    var $input = $(this).parent().find('input');
    var val = +$input[0].defaultValue;
    var count = parseInt($input.val()) - 1;
    count = count < 1 ? 1 : count; 
    $input.val(count);
    $input.change();
    return false;
});

$('.bplus').on('click',function () {
    var $input = $(this).parent().find('input');
    var val = +$input[0].defaultValue; 
    $input.val(parseInt($input.val()) + 1);
    $input.change();
    return false;
});
html
<div class="quantity">
    <input type="text" name="count" value="1"  required>
    <span class="bplus"></span>
    <span class="bminus"></span>
</div>
Максим Кузнецов
10 февраля 2016, 11:00
1
0
Ну, что-то в духе:
$query = $modx->newQuery('modResource', array('template' => 2)); //ограничить выборку по вкусу
$query-> limit(0);

if ($resources = $modx->getCollection('modResource', $query)) {
	foreach ($resources as $resource) {
    		$resource->set('alias', ''); //удаляем старые алиасы
		$resource->save();

		print "Ресурс . $resource->get('id') . обновлен.";
	}
}
else {
	print "Ошибка";
}

+если ресурсов много, то лучше делать все это пошагово.

++не забывайте о бэкапах.
Андрей
21 марта 2015, 16:31
8
+1
Ну вот как-то так набросал на скорую руку. -)

Создал плагин, повесил на событие OnDocFormSave.

<?php
if ($modx->event->name == 'OnDocFormSave') {

	$parentIds = $modx->getParentIds($id, 4, array('context' => 'web'));   // Получаем id всех родителей ресурса
	$res = $modx->getObject('modResource',$id);
	$curAlias = $res->get('alias');   // Алиас текущего ресурса

	$cnt = count($parentIds);  // Количество родителей

	if($cnt > 2) { 

		$aliases = array();   // Массив для всех найденных алиасов

		foreach($parentIds as $v) {
			if($v == 22 || $v == 0) continue;  // Если родитель - контейнер Shop(22) или главный родитель (0) - пропускаем.

			$obj = $modx->getObject('modResource', $v);
			$alias = $obj->get('alias');
			$aliases[] = $alias;
		}

		$resource->set('uri', implode('/',array_reverse($aliases)) . '/' . $curAlias);

	} else {
		$resource->set('uri', $curAlias);
	}

	$resource->set('uri_override', true);
        $resource->save();

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

if ($mode == 'new') {
    // код выше
}