Сейчас мы с вами выведем галерею товара. Галерея по умолчанию в miniShop2 подходит под наш шаблон практически идеально, поэтому мы будем использовать стандартное решение.
Для начала нам нужно загрузить изображения в галерею товара:

И затем вызовем сниппет msGallery в шаблоне “Товар” на месте нашей галереи:

И увидим, что у нас получилась следующая картина:

Сейчас выведем некоторые параметры в карточку товара. Начнем с бренда. Для того, чтобы его выбрать необходимо перейти в “Приложения”->”miniShop2”->”Настройки” и перейти на вкладку “Производители товаров”. Создайте бренд Apple:

Теперь на странице редактирования товара можно выбрать бренд “Apple”. Также установите цену, текущую и старую. Кроме того, можете написать “Аннотацию” и “Содержимое ресурса”.

Теперь в шаблоне “Товар” вызовем то, что мы только что вбили в базу и реализуем добавление в товара в корзину. Я приведу кусок кода с вызовами тех элементов, которые мы заполнили:
<div class="no-margin col-xs-12 col-sm-6 col-md-5 gallery-holder"> [[msGallery]] </div> <div class="no-margin col-xs-12 col-sm-7 body-holder"> <div class="body" id="msProduct"> <form class="form-horizontal ms2_form" method="post"> <input type="hidden" name="id" value="[[*id]]"/> <div class="star-holder inline"><div class="star" data-score="4"></div></div> <div class="availability"><label>Availability:</label><span class="available"> in stock</span></div> <div class="title"><a href="[[~[[*id]]]]">[[*pagetitle]]</a></div> <div class="brand">[[+vendor.name]]</div> <div class="social-row"> <span class="st_facebook_hcount"></span> <span class="st_twitter_hcount"></span> <span class="st_pinterest_hcount"></span> </div> <div class="buttons-holder"> <a class="btn-add-to-wishlist" href="#">add to wishlist</a> <a class="btn-add-to-compare" href="#">add to compare list</a> </div> <div class="excerpt"> <p>[[*introtext]]</p> </div> <div class="prices"> <div class="price-current">[[+price]] руб.</div> <div class="price-prev">[[+old_price]] руб.</div> </div> <div class="qnt-holder"> <div class="le-quantity"> <a class="minus" href="#reduce"></a> <input name="count" readonly="readonly" type="text" value="1" /> <a class="plus" href="#add"></a> </div> <button type="submit" class="le-button huge" name="ms2_action" value="cart/add">В корзину</button> </div> </form> </div>
Заметили форму? Будьте внимательней с полями формы. Содержимое ресурса мы вызовем во вкладке ниже. Заметил, что некоторые стили у нас слетели, будем править. И могу сказать, что теперь у нас работает добавление в корзину! Поздравляю!
1) Создать обычное TV-поле2) Сделать расширение класса продукта miniShop23) В уроке про настройку фильтров мы добавляли опции к товарам
$('.fotorama').on('fotorama:fullscreenenter', function() { $(this).data('fotorama').setOptions({fit: 'contain'}); }); $('.fotorama').on('fotorama:fullscreenexit', function() { $(this).data('fotorama').setOptions({fit: 'cover'}); });<input type="hidden" name="id" value="[[+id]]"/> <input type="hidden" id="count" name="count" min="0" max="[[+count_availability]]" data-availability="[[+count_availability]]" onchange="isright(this);" onKeyUp="if(this.value>numlimit){this.value=oldvalue;alert('Неа!');}else{oldvalue=this.value;}" value="[[+count_availability:notempty=`1`]]"> <input type="hidden" name="options" value="[]" /> [[-<input type="hidden" name="count" value="1">]] [[-<input type="text" name="count" size=16 class="num_only" value="15" onkeyup="this.value=this.value.replace(/[^0-9]+/g,''); isright(this);">]] <script> function isright(obj) { var value= +obj.value.replace(/\D/g,'')||0; var min = +obj.getAttribute('min'); var max = +obj.getAttribute('max'); obj.value = Math.min(max, Math.max(min, value)); } numlimit = 10; // tut postavish limit var availability = $("#count").data("availability"); window.onload = function() { var oldvalue = document.getElementById('count').value; } </script>Пробовал по всякому, так и не решил эту проблему.miniShop2.controller = function () { var self = this; switch (self.sendData.action) { case 'cart/add': miniShop2.Cart.add(); break; ...Но ведь надо сделать ограничение где максимальное число, то есть проверку на тв. в котором сохранено кол-во. А как?$this->config = array_merge(array( 'cart' => & $_SESSION['minishop2']['cart'], 'max_count' => $this->modx->getOption('ms2_cart_max_count', null, 1000, true), 'allow_deleted' => false, 'allow_unpublished' => false, ), $config);Как ограничить добавление товара в Modx Revolution имея тв поле остаток?Все круто! Спасибо!
Р, а мне надо руб dverishop-spb.ru/ потому что яндекс этот значок не понимать и пишет вопросительный знак вместо единицы измерения, где можно отредактировать Р на руб?сайт на Modx revo<button class="minus dec count__form-btn input_count_action" href="#reduce" ></button> <span class="field-arr up"></span> <input name="count" type="number" class="count__form-el count__form-val" name="count" value="{$product.count}" /> <span class="field-arr down"></span> <button class="plus count__form-btn input_count_action" href="#add"></button>У вас они так сделаны!Как реализовать не знаю уже ((