Всего 123 791 комментарий

Артур Шевченко
03 июня 2023, 00:03
0
Печалька, что мы сломали работу с этим компонентом.Надо будет на досуге покопаться.
Prihod
02 июня 2023, 17:39
0
Середина августа
Николай Савин
02 июня 2023, 16:12
+1
Я аж всплакнул чуть-чуть. Так хорошо сказал. Практически тост
Дима Касаткин
02 июня 2023, 16:10
0
Привет! Google уже пишет в наших аккаунтах, что через ~30 дней отключит сбор данных в счетчиках (потоках данных) которые имеют версии до GA4. Предлагает конвертацию там какую-то и т.п. Короче будущее наступило!
Дима Касаткин
02 июня 2023, 16:07
+6
Класс! И без того давно «не по-детски» функциональный минишоп благодаря таким апдейтам добирает ещё более «взрослой» серьезности.

Казалось бы просто сообщения об ошибках, че там… но на рабочих магазинах где заказы и менеджеры «шуршат» ежедневно, банальные сообщения об ошибках способны сохранять комфортно-прохладную температуру там, где раньше подгорали чьи-то кресла в случаях когда «что-то пошло не так, а я ничего не нажимала» :)

Как не страшно это говорить, но похоже ради этих новых фишек стоит начинать задумываться об обновлении магазинов со «старых» версий MiniShop2 2.x и даже 1.х

Спасибо за релиз!
Николай Савин
02 июня 2023, 15:52
+1
Александр — я думаю многие авторы, особенно бесплатных дополнений с удовольствием воспользуются любезно предоставленным вами художественным описанием и заменят им свой сухой технический текст. Вы не стесняйтесь присылайте.
Также документация открыта всем желающим.
Я вам больше скажу — наш «градообразующий» минишоп нуждается в маркетинге и в подобных человекопонятных объяснениях. Присоединяйтесь. Можем даже сделать маркетинговый сайт силами сообщества.
Vladimir
02 июня 2023, 14:41
0
Сделал так в вызов добавил 2а новых параметра:
1)cacheDataVarName (это имена переменой в кеше из которой возмётся результат)
2)formSelector (это для фронта чтобы отсортировать результат для каждой формы если нужно)

Создал снипет в котором записывается данные в кэш а так же их получения.
Способ вызова для записи:
$saveInvoiceToCache = $modx->runSnippet('customCacheStorage', ['cacheVarName' => 'newInvoice', 'cacheValue' => $generateInvoice['downloadLink']]);
Сам сниппет:

<?php
if ($modx->cacheManager->get($cacheVarName) && !$cacheValue) {
    // Если есть кэш
    $output = $modx->cacheManager->get($cacheVarName);
}else{
    $output = $cacheValue;
    // Запись в кэш
    $modx->cacheManager->set($cacheVarName, $output, 40);
}

return $output;
*********************
Затём в файле core/components/ajaxform/model/ajaxform/ajaxform.class.php
Добавил в конструктор ("__construct") след вещи:

$this->cacheDataVarName = '';
$this->formSelector = '';

В том же файле, уже в методе "process" записал значение для 2х параметров указаных выше:

$this->formSelector = $scriptProperties['formSelector'] ? $scriptProperties['formSelector'] : 'have no form';
$this->cacheDataVarName = $scriptProperties['cacheDataVarName'];

***************************************************************
Затем в методе "success" в начало тела добавил следующие

if($this->cacheDataVarName){
    $getInvoiceFromCache = $this->modx->runSnippet('customCacheStorage', ['cacheVarName' => $this->cacheDataVarName]);

    if(!$data){
        $data = array();
    }

    $data['fileLink'] = $getInvoiceFromCache;
    $data['responseFormSelector'] = $this->formSelector;
}


А на фронте в тригере "af_complete" делаю нужные вещи (само сабой разделяю на === true и === false)
if(response.data && response.data.responseFormSelector && response.data.responseFormSelector == 'invoiceForm'){}
и так далее.

Само собой это не лучший вариант, и не совсем продакшен, к тому же это делалось для внутренних целей, не для публики. ПОЖАЛУЙСТА кто может добавьте что лучше сделать для данной задачи, с радостью исправлю и научусь новому.
.
Само собой лучше не трогать исходники, и есть лучшие методы для моей задачи, такое как заменить снипет формит и не пришлось бы городить балаган с исходниками и кэшем, и просто там отправить письма! Позже так и сделаю
Александр Мельник
02 июня 2023, 13:44
0
так как для проекта для которого он разрабатывался этого не нужно
Вот вот! Я так сразу и подумал, что родился этот компонент исключительно под требования какого то одного заказчика. Ему требовалась конкретная бизнес логика и вы ее реализовали.

Поэтому и есть некое ощущение оторванности от всего остального мира, поскольку сделано под конкретные нужды.
Но это не значит что компонент плохой, ни в коем случае.
Александр Мельник
02 июня 2023, 13:42
+1
Это прекрасно.
Но чтобы об этом узнать, нужно купить.
Да наверное можно мне ответить, что можно бесплатно попробовать на модхосте, но все равно это время и не малое — регистрируйся, устанавливай, сам разбирайся — а что можно сделать, а что нет.
Да проще уже самому написать функционал, чем методом тыка разбиратсья в чужом.

А вот когда в документации помимо сухих технических данных, есть человеческим языком написанный текст, что мол после установки вы сможете решить такие то и такие то свои проблемы, вот это и это станет делать более просто и так далее — это же прекрасно.
Вот для примера, компонет в магазине (да простит меня автор)
modstore.pro/packages/alerts-mailing/socialtools
Название — Компонент с социальным функционалом
Описание — SocialTools — это компонент с социальным функционалом для CMS / CMF MODX. С помощью него можно отправлять и читать сообщения

Ну жесть же. Компонент с социальным функционалом, который позволяет читать и отправлять сообщения. Какие сообщения? Где читать? Куда отправлять? Чьи сообщения… А ниже только примеры вызовов сниппетов. Ничего не понятно, ни варианты использования, ни решаемые компонентом задачи. С таким же успехом название и описание можно было написать на латинском языке или на суахили, ничего не изменилось бы.

Ну это я так, бурчу от старости)
Prihod
02 июня 2023, 13:34
+1
Что касается уведомления менеджеров разных филиалов то это будет добавлено в последующих версиях так как для проекта для которого он разрабатывался этого не нужно, а нужно изначально сео составляющая и остатки
Игорь
02 июня 2023, 13:33
0
Здравствуйте.
Подскажите, как можно получить название или id зон доставки. Т.е. планируется при оформлении заказа, в зависимости от выбранной зоны делать то или иное действие.
Prihod
02 июня 2023, 13:30
0
Но для этого нужны отдельные домены и отдельно ресурсы. Чтобы у филиала А был домен a.site.com и сооствественно СВОЕ содержимое страницы a.site.com/contacts или a.site.com/about
а у филиала Б свое содержимое этих страниц. Но получается что это не так.
это все можно сделать так как можно создавать сео поля и привязывать их к шаблонам и филиалам
Александр Мельник
02 июня 2023, 13:10
+1
Понятно, спасибо.
Честно скажу, мне часто в описании новых компонентов (не обязательно ваших) не хватает «художественной части». Почти всегда все авторы акцентируют внимание на том, как вызвать сниппет, что ему передать и так далее и это правильно.
Но этого мало. Это уже технические аспекты, которые интересны сугубо разработчику.
А вот рассказать — зачем был создан этот компонент, какие задачи он призван решать, как именно он решает эти задачи, чем он облегчит жизнь менеджеру? сеошнику? покупателю? Ведь это важно, чтобы привлечь потенциальных покупателей.

Вот мне не особо понятно, зачем вообще может использоваться деление сайта на филиалы. Я думал, что это даст возможность в рамках одного сайта делать СЕО продвижение сразу нескольких своих филиалов. Но для этого нужны отдельные домены и отдельно ресурсы. Чтобы у филиала А был домен a.site.com и сооствественно СВОЕ содержимое страницы a.site.com/contacts или a.site.com/about
а у филиала Б свое содержимое этих страниц. Но получается что это не так.
Если бы в админке были разделены списки заказов для разных филиалов, то это могло бы облегчить жизнь менеджеров. Раз уж вышло что в рамках одного сайта например должны работать менеджеры 10 филиалов, то им было бы легче если бы они получали на свою почту уведомления о заказах сделанных по их филиалу, видели в админке только свои список заказов. Получается что и для менеджера никаких особых выгод нет.
Пользователю сайта есть небольшой бонус — только если включены поддомены, только если настроен редирект на самый близкий к пользователю филиал, то теоретически он сделает заказ в этом филиале и возможно товары к нему прибудут быстрее, чем если бы он заказал в другом филиале.

И я прекрасно понимаю, что вы сделали огромную работу, но без какого-то художественного представления, рассказа о том, зачем вообще это все нужно, сложно увидеть реальные случаи использования.
Николай Савин
02 июня 2023, 13:05
+1
Ответил в директ
Баха Волков
02 июня 2023, 12:29
+1
Кроме того, команда работает над новым большим проектом для сообщества, релиз которого будет чуть позже.
Абсолютно не понимаю о чем речь
Prihod
02 июня 2023, 12:25
0
Поддомены для каждого филиала создавать не обязательно только если этого требует SEO
Илья
02 июня 2023, 12:21
0
Вообще без скриптов полностью вывел, такая же история…
Илья
02 июня 2023, 12:18
0
Uncaught TypeError: Cannot read properties of undefined (reading 'extend')

at self.initialize (default.js:38:35)
self.sendData = $.extend({}, self['sendDataTemplate']);
at new xLike (default.js:324:18)
if (self.initialize(options)) {
            self.run();
        }
Dan
Dan
02 июня 2023, 12:13
0
да, верно. Но у вас же проблема в скриптах, а не в вызове сниппета. Может напишите полный код ошибки из консоли. И попробуйте вызвать xLike на тестовой странице с простым шаблоном, без подключения лишних скриптов — если там работает, значит проблема в скриптах сайта
Prihod
02 июня 2023, 12:11
0
Видео уже доступно
1) вы нигде не уточняете о каких филиалах вообще идет речь? Только из упоминания в тексте о товарах, можно предположить что речь о филиалах магазина.
Наличие товаров не обязательно для работы с филиалами. Наличие товаров minishop2 необходимо только когда нужен функционал остатков.

3) возможность переключения между поддоменами. Достаточно просто в админке создать поддомен и все рабоатет? Не нужно создавать реальный поддомен? Не нужно вносить изменения в конфигурацию вебсервера?
в админке не нужно ничего создавать, поддомен для сайта подвязывать в настройках сервер как алиас

4) «Создание для каждого филиала своего sitemap.xml файла, который содержит только товары филиала». Это еще больше убеждает меня, что под словом «филиал» Вы имели ввиду исключительно филиалы магазинов. Или же я могу сгененировать карту сайта в которой будут не товары этого филиала, а его ресурсы-страницы?
спасибо.
ну если у тебя нет остатков по которым идет отбор ресурсов в частности товаров то нет резона и делать уникальный sitemap.xml так что можно воспользоваться стандартным сниппетом создания sitemap

пользователь может добавлять в корзину товары из разных филиалов? Я вошел в один филиал (поддомен), добавил в корзину один товар. Потом сразу перешел на второй поддомен и добавил в корзину уже товар из другого филиала? Или программа отслеживает это и не дает формировать заказ из товаров разных филиалов?
Работа с корзиной завязана только на остатках и в ней можно ограничить добавление как на основании данных текущего филиала так и для данных из всех

2) в документации указано, что есть учет остатков при покупке. Как это работает. К примеру у меня два филиала. А и Б. Насколько я понял из документации у вас товары имеют привязку к филиалу. К примеру у меня есть всего один товар. Назовем его Т. Но он представлен как в филиале А так и в филиале Б. В филиале А его 10 штук, а в филиале Б его 20 штук. Я клиент, делаю заказ. Сначала помешаю в корзину товар находясь в филиале А (a.site.com), потом перехожу в филиал Б (b.site.com) и снова добавляю товар. В корзине два раза товар Т но из разных филиалов. Оформляю заказ. Как будет работать учет остатков? У каждого филиала уменьшится на 1?
у каждого на 1

2) куда приходит уведомление о заказе? У каждого филиала своя почта для получения? Я клиент, вошел на домен одного филала, сделал заказ. Вошел на домен другого филиала, сделал заказ. Заказы пришли разным менеджерам?
заказы придут на все те ящики которые указана в настройках minishop2 и на вкладке опции товара будет указан филиал