Максим

Максим

С нами с 02 декабря 2015; Место в рейтинге пользователей: #127
Максим
23 июня 2020, 13:40
0
Тогда получается, что проблема на стороне компонента mspSberbank. Так как он платный, то рекомендую обратиться в поддержку. Но лично я бы перед обращением сам бы продебажил. Ведь вам известен файл, кудадолжен стучать сбер для ответа после проведения транзакции, и так же есть мнтод
$modx->log(1, print_r(array(1,2,3), 1))
, который позволяет логировать данные. Возможно выяснится, сто в настройках сбера ссылка указана некорректная!)))
Максим
23 июня 2020, 13:22
0
Ругается, что не может загрузить контекст web и вы пытаетесь отправить пустое письмо. У вас сайт содержит несколько контекстов? Если да, то из какого контекста происходит оформление заказа и попытка оплатить?
Максим
23 июня 2020, 13:18
1
+1
VirtualPage не доступен с прошлого года. И на данный момент его нет в репозиториях. Читаем последние комментарии.
Да и нужно ли устанавливать компонент, если можно обойтись одним плагином на событии OnHandleRequest примерно с такой логикой:
1) Проверяем наличие get-параметра. Если нет, то ничего не делаем иначе редирект на нужный url (данные для формирования все есть).
2) Дальше (предположим, что значение get-параметра genre равно uri нужного ресурса) ищем нужный нам ресурс и если находим, то делаем sendForvard, иначе ничего не делаем и получаем 404.
К сожалению пример есть только кода вынесенного в отдельный класс и в плагине вызывается только метод события. Да и в самих методах куча другой логики. Поэтому без примера…
Вот старенький пример от Василия со всеми пояснениями.
Максим
22 июня 2020, 14:21
0
Да, сори. Не видел эту документашку. Посмотрите параметры сниппета, в частности параметр «resource»
Максим
22 июня 2020, 14:14
0
Предполагаю, что такую логику и не закладывали в функционал, так как не факт, что во все одноместные номера можно с животными и во всех есть кондиционер и т.д. Думаю для этого есть поле описание… Ну а если его не достаточно, то нужно тщательно продумывать доп функционал и реализовывать. А дополнение предоставит отличную базу и основную логику бронирования.
Максим
22 июня 2020, 12:38
0
Ну у меня сегодня лайтовый день. Можно попробовать в скайпе созвониться… Может со второго захода получится победить эту проблему… Но не уверен… Если есть желание, то давайте скайп в личку.
Максим
22 июня 2020, 12:06
0
Я так понимаю что такая же проблема?
Если да, то пока придумал только костыльное решение в виде создания плагина и в нем устанавливаю значение.
<?php
/** @var modX $modx */
switch ($modx->event->name) {
        
    case 'OnDocFormPrerender':
        if ($mode == 'upd') {
            $inshop = implode(',', $resource->get('inshop'));
            $modx->controller->addHtml('<script type="text/javascript">
                Ext.onReady(function() {
                    Ext.getCmp("modx-panel-resource").getForm().setValues({"inshop[]":[' . $inshop . ']});
                });
                </script>');
        }
}
Но у вас в окно нужно подставлять… Можно попробовать в этом плагине ловить открытие окна и подставлять.
Другое решение пока не нашел, да и не искал, честно говоря.
Максим
22 июня 2020, 11:45
0
Все зависит от задачи. Если стандартные notification (jGrowl) совсем не нужны, то корректнее будет скопировать файл /assets/minishop2/js/web/default.js, изменить в нем объект miniShop2.Message (не забываем про метод initialize — там подключается либа) и указываем в настройках minishop2 новый js файл.
Ну а если они не нужны только в определенных случаях, то можно в своем js файле, в участке который начинает выполняться после загрузки DOM, просто переопределить, как показал Василий по первой ссылке в комментарии выше.
Максим
19 июня 2020, 13:52
0
Ну если tpl_N уже не работает или он не подходит, так как эти блоки должны повторяться, то можно включить феном, от сниппета получать только список id, а потом уже разбить по разделителю и в форыче заложить ту логику, которая нужна. Хотя я бы предпочел скопировать и подправить сниппет под нужную мне логику.
Максим
19 июня 2020, 13:30
0
А что пример даст? Ну вот пример: junior35.nabami.ru/kostyum-little-maven-/-art.-lm-1525.html (это дев версия сайта)
Есть возможность заказать размерами и весь размерный ряд. Размерный ряд — это товары размером от 2 до 7 в количестве по 1 штуке. Иными словами — при добавлении размерного ряда, в плагине происходит чтение размеров и добавляется в корзину как один товар. Но цена пересчитывается как за 6 товаров. Вот только в коде плагина много всего лишнего и в данном проекте пришлось переписывать класс корзины.
Так что для решения вашей проблемы совсем не нужно переопределять класс корзины (менять основную логику работы корзины) и достаточно просто написать несколько строк кода JS и написать доп логику в плагине.
Если, что мой скайп max-gopher. Можно голосом обсудить.
Максим
16 июня 2020, 20:04
0
Готового ничего не предложу так как ничего такого не делал, но если заглянуть в документацию то там есть параметр «menuConfig». Думаю, что можно расширить или переопределить с нужным параметром MODx.tree.Tree
Максим
16 июня 2020, 18:17
0
Я в подобных случаях создаю меню через MIGX. Там и сортировку могут сделать как хотят и заказчик сам изменить пункты может и доп обработки при выводе можно повесить, если потребуется.
Максим
16 июня 2020, 18:10
0
Почему минусанули? Вопрос был про кол-во и предложенный мной метод прекрасно работает. Если вы не увидели в ответе решения с ценой, так и в вопросе про цену ничего не сказано. Да и сложного ничего нет в создании плагина на событии «msOnBeforeAddToCart». Все данные для формирования корректной цены есть…
Что не так?
Максим
13 июня 2020, 14:49
0
Все исхдит от потребностей, если на одной странице выводится например 10 результатов, то можно написать свой сниппет, которы будет получать 50 записей и возврящать список id для параметра resources сниппета pdoPage.Либо указать этот сниппет в параметре element.
Максим
13 июня 2020, 14:38
0
Ну самое первое, что приходит в голову — это значение поля count формировать по формуле, где одна из переменных будет поле для ввода количества пользователем. Шаг добавления можно определить атрибутом тега input type=«number» (Стилизовать его можно как угодно).
Например поле для ввода пользовательского кол-ва будет таким:
<input name="user_count" type="number" step="100" min="100">
Тогда, count = user_count / 100
Ну а уж как получать значение из поля и записывать значени в поле, думаю что знаете.
Максим
13 июня 2020, 14:30
+1
Для нормального ответа не хватает некоторой информации, например: Где это должно происходить? На фронте личном кабинете или в админке?
Если в общих чертах, то:
1) При получении id заказа (кстати а откуда мы его получаем) проверяем его статус. Если статус «Оплачен», то выходим. Иначе идем дальше.
2) Получаем и выводим доступные методы оплаты. Примеры корректного получения можно посмотреть в исходниках минишоп (не забываем, что они связаны со способами доставки).
3) Для запуска метода оплаты смотрим сюда и реализовываем.
Вродь как алгоритм есть!)
Максим
10 июня 2020, 15:32
+1
Уверен на 90%, что такого компонента нет!) Но и проблем не вижу. Есть же Tickets, для которого можно написать «Коннектор», который будет возвращать json. Ну часть логики придется вынести из сниппета в «коннектор», но ведь основная логика уже реализована в классах и для админки все предучмотрено.
Максим
10 июня 2020, 15:19
0
По Fenom:
'tvFilters' => ('category==%' ~ $_modx->resource.id~'%')
— Скобки гарантируют, что сначала произойдет конкантенация, и только потом установится значение.
tvFilters не использую, но судя по сторке выше и описанию, из-за % в условие подставляется LIKE и в результате вы получаете и будете получать результаты, где есть совпадение в любом месте (44,444,144,244,443 и т.д.).
Попробуйте убрать знак процента или использовать where вместо tvFilters.
Максим
03 мая 2020, 21:20
0
А такой подход пробовали? Мне кажется все должно отработать, если указать условие единым элементом массива.
Максим
03 мая 2020, 20:43
0
Кажется вам пора познакомиться с исходниками компонента!)))
Задача не тривиальная! В тупую 2 раза вызывать сниппет — некорректно, так как получятся дубли id на странице и работать не будет. Но можно для начала проигнорить сторону фронта и посмотреть как можно заюзать уже имеющуюся реализацию бека. И тут идем идем в исходники компонента. Так как за отображение подсказок отвечает JS, то и идем в /assets/components/msearch2/action.php и смотрим реализацию. На данном этапе вас будет интересовать раздел поиска или дефаулт, а не фильтрации. У меня под рукой только проект с необновленым mSearch2 и там все это дело рулится свичем. Видим так такую строку:
$found = $mSearch2->Search($query);
. Это значит, что вы можете воспользоваться поиском от mSearch2 обратившись к данному файлу и передав ему соответствующие параметры!)
Надеюсь суть ясна, так как партянка уже получилась длинной, и продолжая в том же духе можно разобраться с JS, HTML и CSS.