Всего 123 805 комментариев

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 и на вкладке опции товара будет указан филиал
Илья
02 июня 2023, 11:27
0
Версия 2.7
Правильно ли я его вставляю
[[!xLike]]
Dan
Dan
02 июня 2023, 08:49
0
Версия Modx какая?
Компонент рабочий 100%. Подозреваю, что где-то в ваших кастомных скриптах есть ошибка, поэтому и не работает.
Александр Мельник
02 июня 2023, 07:59
0
Если это дополнение все таки нацелено на интернет магазин и мы создаем разные филиалы, то как работает система оформления покупки?
1) пользователь может добавлять в корзину товары из разных филиалов? Я вошел в один филиал (поддомен), добавил в корзину один товар. Потом сразу перешел на второй поддомен и добавил в корзину уже товар из другого филиала? Или программа отслеживает это и не дает формировать заказ из товаров разных филиалов?
2) в документации указано, что есть учет остатков при покупке. Как это работает. К примеру у меня два филиала. А и Б. Насколько я понял из документации у вас товары имеют привязку к филиалу. К примеру у меня есть всего один товар. Назовем его Т. Но он представлен как в филиале А так и в филиале Б. В филиале А его 10 штук, а в филиале Б его 20 штук. Я клиент, делаю заказ. Сначала помешаю в корзину товар находясь в филиале А (a.site.com), потом перехожу в филиал Б (b.site.com) и снова добавляю товар. В корзине два раза товар Т но из разных филиалов. Оформляю заказ. Как будет работать учет остатков? У каждого филиала уменьшится на 1?
2) куда приходит уведомление о заказе? У каждого филиала своя почта для получения? Я клиент, вошел на домен одного филала, сделал заказ. Вошел на домен другого филиала, сделал заказ. Заказы пришли разным менеджерам? Или если одному, то в заказе видно, для какого филиала он был оформлен? Как менеджер филиала в караганде поймет, что это ему нужно идти на склад и собирать товары для этого заказа.
Александр Мельник
02 июня 2023, 07:35
0
Видео не отображается ни здесь, ни в документации — залито как приватное.

Подскажите пожалуста:
1) вы нигде не уточняете о каких филиалах вообще идет речь? Только из упоминания в тексте о товарах, можно предположить что речь о филиалах магазина.
2) а могу ли я создать филиалы НЕ магазина. Не нужны мне там товары, например у меня бизнес по приемке металла и у меня 20 филиалов в разных странах. Но товаров в этом бизнесе нет. А вот иметь отдельные страницы (ресурсы) у каждого филиала хотелось бы. Тоесть у филиала номер один есть страница контакты, у филиала 2 — нет. Но при этом у филлиа два есть страница — наши преимущества.
3) возможность переключения между поддоменами. Достаточно просто в админке создать поддомен и все рабоатет? Не нужно создавать реальный поддомен? Не нужно вносить изменения в конфигурацию вебсервера? Работает и для apache и для nginx? SSL сертификат сразу работает и на этих поддоменах?
4) «Создание для каждого филиала своего sitemap.xml файла, который содержит только товары филиала». Это еще больше убеждает меня, что под словом «филиал» Вы имели ввиду исключительно филиалы магазинов. Или же я могу сгененировать карту сайта в которой будут не товары этого филиала, а его ресурсы-страницы?
спасибо.
Vladimir
01 июня 2023, 17:28
0
Да показать нужно на экран, я так понял такого сопряжения formit и ajaxform нет, как вариант можно запихнуть в кэш и потом в исходнике поправить и взять с кэша
Алексей Смирнов
01 июня 2023, 17:27
0
А куда вы хотите эту ссылку отправить? На почту? Показать человеку на экран?
это $AjaxForm->success — оно работает, только если вы запускаете свой сниппет, а не formit.
Поэтому если нужно на почту ссылку отправить — просто добавьте еще поле одно с сылкой.
А если вы хотите показать, то тут сложнее.