Максим

Максим

С нами с 02 декабря 2015; Место в рейтинге пользователей: #129
Максим
03 мая 2020, 20:43
0
Кажется вам пора познакомиться с исходниками компонента!)))
Задача не тривиальная! В тупую 2 раза вызывать сниппет — некорректно, так как получятся дубли id на странице и работать не будет. Но можно для начала проигнорить сторону фронта и посмотреть как можно заюзать уже имеющуюся реализацию бека. И тут идем идем в исходники компонента. Так как за отображение подсказок отвечает JS, то и идем в /assets/components/msearch2/action.php и смотрим реализацию. На данном этапе вас будет интересовать раздел поиска или дефаулт, а не фильтрации. У меня под рукой только проект с необновленым mSearch2 и там все это дело рулится свичем. Видим так такую строку:
$found = $mSearch2->Search($query);
. Это значит, что вы можете воспользоваться поиском от mSearch2 обратившись к данному файлу и передав ему соответствующие параметры!)
Надеюсь суть ясна, так как партянка уже получилась длинной, и продолжая в том же духе можно разобраться с JS, HTML и CSS.
Максим
03 мая 2020, 20:18
0
Конечно есть!
1) Отказаться от сырых запросов. Зачем сначала получать вендеров, потом получать id товаров и потом еще запускать сниппет для получения товаров по id, если в исходниках miniShop2 указана связь?
2) Зачем тук сложно реализована работа с чанком? Зачем чанку отключать кеширование? У меня, по крайней мере, никогда не было проблем с кешированием. На мой взгляд куда правильнее получить сервис pdoTools и использовать его метод getChank, тем самым получив возможность использовать в чанке fenom и обойтись одним чанком.
Думаю что код станет меньше и корректнее по отношению к MODX и установленным компонентам.
Максим
03 мая 2020, 12:40
0
Есть несколько вариантов решения задачи:

Для создания отдельных страниц для брендов (выбрали Самсунг — попали на страницу Самсунг)
1) Указать у производителя соответствующую страницу и на ней вызывать сниппет (для каждого производителя придется создавать отдельную страницу).
2) Создать единую страницу для всех брендов и воспользоваться этой инструкцией для настройки

Для создания страницы, на которой партянкой отображаются все бренды с товарами я бы написал собственный сниппет для получения брендов с товарами, но так как страница, скорее всего окажется очень большой и будет долго грузиться, то никто не мешает дописать аякс подгрузку на скролл.
Максим
03 мая 2020, 12:30
0
Я бы сделал так:
1) Написал свой сниппет для получения товаров, категорий и статей, который бы в зависимости от класса подтягивал необходимые данные (Для товара это дата превью, вендор..., для категорий и статей — соответствующие TV) и оборачивал в соответствующий чанк.
2) указал бы этот сниппет в параметре element сниппета pdoPage.
Если я все правильно помню, то для корректной работы pdoPage сниппет должен в результат добавлять общее кол-во записей, лимит и страницу.
Максим
21 апреля 2020, 14:26
0
Попробуйте отсортировать по полю rank или docid.
А вообще сниппет достаточно простой и метод сортировки вызывается. Так как объект наследуется от xPDOSimpleObject, то и поле id у него должно быть, и соответственно по нему должна происходить сортировка. Попробуйте поиграть с направлением сортировки. Думаю все должно работать.
Максим
17 апреля 2020, 14:50
+2
Я бы посоветовал копать в сторону Fenom и отказа от использования сниппета getImageList. Написать парочку своих модификаторов и все будет как вы захотите!
Максим
17 апреля 2020, 14:46
+1
Судя по исходнику, Вы никак не сможете выводит нужное сообщение через плагин:
$response = $this->ms2->invokeEvent('msOnGetOrderCost', array(
            'order' => $this,
            'cart' => $this->ms2->cart,
            'with_cart' => $with_cart,
            'only_cost' => $only_cost,
            'cost' => $cost,
        ));
        if (!$response['success']) {
            return $this->error($response['message']);
        }
        $cost = $response['data']['cost'];

        return $only_cost
            ? $cost
            : $this->success('', array('cost' => $cost));
Но Вы можете в JS на Order.getcost.response.success вызвать свой процессор. Ну и там уже делать все, что вам нужно.
Максим
26 марта 2020, 14:29
1
+1
{$longtitle ? '<small>(' ~ $longtitle ~ ')</small>' :'' }
Максим
26 марта 2020, 14:25
0
Описание дополнения msImportExport
Там написано, что умеет. Рекомендую обратиться в поддержку.
Максим
26 марта 2020, 14:20
0
Исходники pdoMenu у вас есть. Можно написать свой сниппет по примеру, и limit направить не на выборку из базы а на кол-во итераций при переборе массива результатов. Это конечно не совсем правильно, так как получается что из базы тащишь все записи, но если подойти с головой, то можно сделать достаточно умную выборку.
Максим
25 марта 2020, 22:06
0
Мне кажется под это можно приспособить pdoMenu. Вродь как обычная структура менюхи.
Максим
25 марта 2020, 19:40
0
В настройках минишопа добавить связи и использовать связанные товары. Там только нужно будет немного JS написать, для добавления товаров в корзину.
Максим
25 марта 2020, 19:35
0
В примере уровень вложенности от 1 до 5, а у вас от 1 до 2. В чем проблема?
Или за вас таки написать вызов сниппета?
Максим
25 марта 2020, 19:31
0
Используйте суперглобальный массив $_GET:
[[#GET.page:isnot=`1`:then=`...`:else=``]]
Только стоит использовать не isnot а проверку на юольше единицы.
Максим
04 марта 2020, 15:49
0
Конечно можно! Особенно если читать описание компонента:
импорт через cron также использует чуть меньше расход ресурсов, а также позволяет частично решить проблему
timeout. Дополнительная инфа по настройки сервера для работы с большими файлами есть в доках дополнения в
разделе “Импорт больших файлов”
А еще можно написать в поддержку компонента и описать проблему.
Максим
04 марта 2020, 15:43
0
1) Удалить руками все из папки /core/cache/
2) Проверить возможность входа в админку.
Если это не помогло, то:
3) В базе деактивировать плагин с id 7
4) Зайти в админку, разобраться (исправить ошибку) с плагином с id 7 и если он нужен, то активировать его обратно.
Максим
04 марта 2020, 12:41
0
Никогда не пользуюсь капчей. Всегда обхожусь скрытым полем и хуком с соответствующими проверками. Можно в стилях прописать для определенных форм что-то типа того: .form input[name=«email»] {display:none;} Тогда поле с name email будет скрыто, а для пользовательского ввода использовать, например userEmail.
Ну а в хуке проверять на заполненность поля с name email + если отправка аяксом, то проверить на аякс, ну и можно еще кнопке отправить дать нейм, например mysubmit и в хуке проверять, есть ли в суперглобальном массиве соответствующий ключь mysubmit.
Почитать про хуки можно тут
Ну и проверка на ajax. Вариант предложенный Василием ни разу еще не подвел.
Максим
03 марта 2020, 23:50
1
+1
Если я правильно понял, то вы для обоих деревьев храните инфу в одной таблице. Тогда нужно ее хоть как-то разграничивать. Помимо category_id добавить еще поля типа market and webmaster, с дефолтным значеним 0. Если дерево маркета, то в маркет 1, если дерево вебмастера, то в него 1.
Максим
21 февраля 2020, 16:18
+2
Вы можете ознакомиться с доступными событиями в документации
Событие которое вы пытаетесь использовать доступно только при работе через процессор