Всего 123 793 комментария

Игорь
28 октября 2023, 16:43
0
Самое страшное, что я пока не сильно понимаю, как сделать всплывающее окно станицы «Заказ получен» со всеми данными из GetOrder ((
Игорь
28 октября 2023, 16:33
0
А кто же его знает? Хозяин — барин, спорить что-то доказывать бесполезно… ((
Артур Шевченко
28 октября 2023, 16:30
0
{if ($idx | resource: 'published') == 1}
idx это как правило порядковый номер, лучше переименуй в id
Артур Шевченко
28 октября 2023, 16:27
0
А зачем выносить полноценное оформление заказа в модалку?
Игорь
28 октября 2023, 15:59
0
Не знаю, насколько это правильно, но со стоимостью доставки вроде получилось решить таким костылем:
<script src="/assets/components/minishop2/js/web/default.js"></script>
<script>
    miniShop2.Callbacks.Order.getcost.response.success = function(response) {
 $('.mydeliverycost').text(miniShop2.Utils.formatPrice(response.data['delivery_cost']));
 $('.myorderprice').text(miniShop2.Utils.formatPrice(response.data['cost']));                 
	}
</script>
(естественно, что полям, где должна меняться стоимость нужно добавить соответствующие классы '.mydeliverycost' и '.myorderprice')… С причиной, почему не работало по умолчанию в аяксе (хотя, например, корзина в аяксе нормально работает) так и не удалось разобраться — будем надеяться, что более умные люди, нам объяснят… а лучше переделают, что бы сразу всё работало красиво ;))… сейчас, почему-то все хотят эти всплывающие окна
al1ve
28 октября 2023, 15:55
0
В общем, я переделал свой слайдер при помощи migx по этой статье — web-revenue.ru/modx-revo/sozdanie-slayderov-pri-pomoshhi-migx только в поля я ввёл переменные вида [[#id ресурса.pagetitle]], а сам код теперь выглядит так:
{set $rows = json_decode($_modx->resource.slider, true)}
<div id="portfolio-category-caption" class="carousel slide">
  <div class="carousel-indicators">
    {foreach $rows as $idx => $row}
	{if$_modx->resource.idx | resource: 'published' == 1}
    <button type="button" data-bs-target="#portfolio-category-caption" data-bs-slide-to="{$idx}" {if $idx==0}
	class="active" aria-current="true" {/if} aria-label="{$row.caption}"></button>
	{/if}
    {/foreach}
  </div>
  <div class="carousel-inner">
    {foreach $rows as $idx => $row}
	{if $_modx->resource.idx | resource: 'published' == 1}
    <a href="{$row.url}">
      <div class="carousel-item {if $idx == 0} active{/if}">
        <img src="{$row.slide}" class="d-block w-100"
		alt="{$row.caption}">
        <div class="carousel-caption d-none d-md-block">
          <h5>{$row.caption}</h5>
          <p class="list-style-none">{$row.description | limit:'1000'}</p>
        </div>
      </div>
    </a>
	{/if}
    {/foreach}
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#portfolio-category-caption" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#portfolio-category-caption" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>
Всё получилось динамическим кроме одного — не знаю как правильно написать проверку. Если ресурс снят с публикации или отсутствует, то и слайда с ним нет в карусели.
Игорь
28 октября 2023, 13:18
0
Подключил скрипт минишопа default.js и тестовое сообщение в модальном окне — видно что так стоимость доставки пересчитывается (без default.js не пересчитывается), но во фронтенде так ничего и не меняется — что я мог упустить? (
<script src="/assets/components/minishop2/js/web/default.js"></script>
<script>
    miniShop2.Callbacks.Order.getcost.response.success = function(response) {
var rdc = response.data['delivery_cost'];
alert(rdc);	
	}
</script>
Futuris
28 октября 2023, 09:21
+1
Тоже столкнулся с проблемой после обновления. Перестали создаваться превьюшки галереи MS2. Причем видел этот пост, но поскольку phpThumb у меня не стоял — я подумал, что меня это не касается. Однако умные люди в чате объяснили, что phpThumb в ядро MODX вшит, независимо от того установлен он или нет)) Подсказали и метод лечения — взять папку
core/model/phpthumb
из установочного архива MODX 2.8.5 и перезалить на свой, обновленный до 2.8.6 сайт. После этого все опять нормально заработало.
Евгений
27 октября 2023, 23:00
0
оказался плагин autoredirector, непонятно только почему именно на родителей влиял
Евгений
27 октября 2023, 22:34
0
Ну и дурик)))) выделяешь элемент на Delete удаляешь!
Николай Савин
27 октября 2023, 22:10
0
Для такого есть раздел избранное
Игорь
27 октября 2023, 18:26
0
себе на заметку.
Денис Усманов
27 октября 2023, 15:16
0
Вызов msOrder как у меня, с! знаком? Т.е. всё не кешированное вызывается?
Игорь
27 октября 2023, 15:14
0
ну так и у меня практически также: в модальном окне корзины есть кнопка вызова модального окна заказа…
У тебя меняется стоимость доставки и общая сумма заказа в модальном окне? У меня нет
Денис Усманов
27 октября 2023, 14:18
0
Вот код чанка msOrder.tpl у меня:
Денис Усманов
27 октября 2023, 14:17
0
Ну вот же, я показал, что можно просто сделать модальное окно в модальном окне по сути, во 2 пункте у меня в коде посмотри, идёт вызов msOrder, где код опять же как модальное окно, а в корзине кнопка «оформить» это вызов этого модального окна… ну и с getOrder так же просто поступи…
Игорь
27 октября 2023, 14:15
0
Корзину-то в модалку я уже вывел (это по верстке отдельное окно) — там все работает хорошо (суммы меняются и т.п.)… А вот страница оформления заказа что-то не хочет подружиться с аяксом — стоимость доставки не подхватывается (на обычной странице все хорошо работает)
Денис Усманов
27 октября 2023, 14:02
0
Ну, а что бы как в моём случае после оформления заказа открывалась модалка с id (в конце скрина во 2 пункте) orderSuccess, необходимо изменить js файл MiniShop2:
assets/components/minishop2/js/web/default.js
Строки примерно такие:
callbacks.submit.response.success = function (response) {
                if (response.data['redirect']) {
                    document.location.href = response.data['redirect'];
                } 
                else if (response.data['msorder']) {
                    $('#msMiniCart').removeClass('full');
                    $('#miniCart').removeClass('open');
                    $('body').find('.global-overlay').removeClass('overlay-open');
                    $.fancybox.close([{
                          src  : '#msOrder'
                      }]);
                    $.fancybox.open([{
                          src  : '#orderSuccess',
                          padding: 0
                      }]);
                }
                else {
                    $.fancybox.open([{
                          src  : '#orderSuccess',
                          padding: 0
                      }]);
                }
            };
Денис Усманов
27 октября 2023, 13:49
0
1) Создаёшь ресурс без шалона со сниппетом msCart


2) В чанк (как моём случае customMiniCart) вкладываешь код самой корзины, сниппет msOrder и т.п., а так же доп. скрипты


3) На миникорзину вешаешь вызов модального окна, так же такой скрипт:

<script>
  $(document).on('click', '.msMiniCart', function(e) {
	e.preventDefault();
	$.ajax({  
	  type: "POST",  
	  url: '[[~ID ресурса созданного при 1 пункте]]', 
	  data: {parent: '[[*id]]'},
	  success:  function(data) { 
		if (data){
		    $('#miniCartContainer').html(data);
		    miniShop2.Order.initialize();
		}else{
		  AjaxForm.Message.error('Что-то пошло не так, попробуйте позже!');
		}
	  } 
	}); 
  });
</script>
#miniCartContainer — это то, что должно быть в модальном окне, куда будет подгружаться корзина

Ну и напоследок: Для динамического изменения кол. товаров и при чём корректного, я использую компонент msMiniCartDynamic
Евгений
27 октября 2023, 12:56
0
MODX Revolution 2.8.5-pl
Не работает плагин, настроил всё правильно, отображает на поддомене просто главную страницу