Algirdas

Algirdas

С нами с 23 июля 2019; Место в рейтинге пользователей: #544

Управление плагинами и событиями из файлов [ExtraPlugins]

Всем привет.

На конец то придумал решения чтобы не лазить в админку для подключения плагинов и подписания их на события.

Это особо актуально, если работаешь через IDE, так как подписывать на события как не крути всегда приходиться через админку.

От проекта к проекту приходиться таскать и заново подключать разные плюшки через плагины, а это рутина)
Всегда удобнее скопировать готовый файлик и прописать строчку кода для подключения каких то плюшек.

Теперь свои плагины можно будет хранить в core/plugins/ModxPlugins/.
Андрей Степаненко
18 августа 2021, 08:52
modx.pro
6
2 022
+8

PageBlocks. Галерея и Коллекция блоков.

Всем привет!

В новой версии компонента улучшено множество деталей, но самым главным нововведением стала галерея и коллекция блоков. Вот основной список изменений:

  • Добавлен источник файлов к блоку
  • Изменен тип поля изображения
  • Добавлен тип поля комбо
  • Добавлен тип поля галерея
  • Добавлена коллекция блоков
  • Рефакторинг
Aleksandr Huz
09 июля 2021, 17:46
modx.pro
2
2 241
+12

Как сделать количество товара в minishop2 дробным?

Приветствую, вопрос этот встречался мне не один раз тут и здесь и ещё вон там, но решения, которое не требует вмешательства в исходники и подробно расписанное, я не нашёл. Поэтому, взяв за основу этот комментарий и получив подсказку от @PG, я сделал следующее:
Артур Шевченко
20 июня 2021, 19:26
modx.pro
3
1 465
+1

Адрес в профиле пользователя Office

Здравствуйте.
Нужно на странице профиля добавить основной адрес для доставки с возможностью редактирования.
Вставил поля:
<div class="form-group row">
        <label class="col-md-2 col-form-label">улица</label>
        <div class="col-md-10">
            <input type="text" name="address" value="{$address}" placeholder="город" class="form-control">
         </div>
    </div>
    <div class="form-group row">
        <label class="col-md-2 col-form-label">дом</label>
        <div class="col-md-10">
            <input type="text" id="building" name="building" value="{$extended['building']}" placeholder="Дом" class="form-control">
        </div>
    </div>
    <div class="form-group row">
        <label class="col-md-2 col-form-label">квартира</label>
        <div class="col-md-10">
            <input type="text" id="room" name="room" value="{$extended['room']}" placeholder="Квартира"
                   class="form-control">
         </div>
    </div>
C полем «Улица» все хорошо, а вот поля «Дом» и «Квартира» никак не хотят сохранятся.
Нужно какой-то плагин написать на событие OnUserProfileBeforeSave, наверное? У меня пока ничего не получается. Помогите пожалуйста.
Игорь
11 июня 2020, 11:40
modx.pro
1
750
0

Создание проекта в стиле Fishki net с магазином и другими плюшками на MODX

Всем привет.

Есть проект на MODX и хочется его модернизировать и оптимизировать. 8 месяцев ждал этой модернизации на Laravel, но человек не смог сделать… и в итоге решил снова пробовать на MODX.

В проекте должны быть такие возможности как:

1) Добавление новости пользователем из ЛК пользователя в стиле Fishki net ( там можно добавлять разные блоки в одном посте )
2) Избранное, лайки дислайки, подписки
3) Комментирование новостей пользователями и видимость коментов и ответов на коменты в ЛК
4) Доска объявлений в стиле АВИТО с управлением из ЛК
5) Добавление организаций любым пользователем, но управление только после подтверждения причастности к данной организации.
6) Магазин для организаций — обычный пользователь не сможет ничего туда добавить
7) Календарь мероприятий организаций — обычный пользователь не сможет добавить мероприятие.
8) Запись на мероприятия
9) Отзывы к организациям
10) Бонусная система для мотивации пользователей.
11) Личный кабинет

Предполагаемое число пользователей в сутки — 5000

Внимание первый вопрос! Я правильно выбрал компоненты для создания такого сайта?

1 ) Для фронтенда добавления постов пользователями я хотел использовать — ContentBlocks от modmore, но на чем делать сами посты? На Tickets?
2) данные дополнения есть на modxtore и с ними проблем вроде нет
3) Коменты к постам опять же на Tickets
4) Доску объявлений думаю делать на minishop2 + ms2form
5 ) Добавление организаций на Organizations
6) Магазин так же на minishop2 + ms2form
7) Календарь событий — eventsCalendar2
8) Запись на мероприятия — tEvent
9) Отзывы для организаций на — easyComm
10) Бонусная программа — msReferralProgramCoin
11) Личный кабинет — Office

Внимание вопрос номер 2!
Денис
30 мая 2020, 21:23
modx.pro
1
862
0

Лайфхак по config.inc

В modx есть файл с конфигом core/config/config.inc.php, в нем кроме установки имени базы, есть еще возможность переопределять настройки:
[[++site_name]]
{'site_name'| config}
<?php
$modx->getOption('site_name');

Но как?


1. Удаляем запись в системных настройках с ключом site_name


Андрей Степаненко
13 мая 2020, 22:08
modx.pro
3
4 039
+15

SweetAlert2. Красивые уведомления для AjaxForm, Office, Minishop2 и msOneClick

Компонент переопределяет уведомления jGrowl для AjaxForm, Office и Minishop2.



Системные настройки:
  • swal2_position — Позиция модального окна, может быть 'top', 'top-start', 'top-end', 'center', 'center-start', 'center-end', 'bottom', 'bottom-start', или 'bottom-end'. По умолчанию: 'top-end'.
  • swal2_timer — Таймер автоматического закрытия модального окна. Установить в миллисекундах. По умолчанию: 3000.
  • swal2_showconfirmbutton — Если установлено значение false, кнопка 'Подтвердить' не будет отображаться. По умолчанию: false
  • swal2_toast — Следует ли рассматривать предупреждение как тостовое уведомление. Эта опция обычно связана с параметром позиции и таймером. Тосты НИКОГДА не автофокусированы. По умолчанию: true
  • swal2_width — Ширина уведомления. По умолчанию: 19rem
Aleksandr Huz
08 мая 2020, 11:50
modx.pro
7
3 345
+21

Изменение цены в корзине при переоценке

Привет.

Иногда возникает такая ситуация, когда пишите интернет-магазин на MODX и miniShop2 и при этом вы импортируете товары или переоцениваете их с какого-нибудь внешнего сервиса (Например 1С). Проблема которая возникает абсолютно всегда в таких случаях, что цены на товары меняются достаточно часто. В miniShop2 нет (пока нет) события, который бы позволял хендлить события перехода в коризну. Однако, мы можем сделать это на уровне MODX, его событий и API

Создаем плагин cartCheck и вешаем его на событие OnWebPagePrerender. Это событие уже спарсило ресус и его данные, но еще не вывело на страницу — все что нам нужно. В коде, делаем проверку на шаблон страницы. Обычно, корзина имеет свой выделенный шаблон. Далее нам предстоит инициализировать минишоп, получить корзину, модифицировать ее как угодно и назначить обратно. Так же мы сделаем проверку на то, опубликован или удален ресурс и не дадим его купить. На этом, собственно все. Ниже привожу код плагина

<?php
if ($modx->event->name = 'OnWebPagePrerender'){
    if ($modx->resource->id == 5) {
        /** @var miniShop2 $miniShop2 */
        $miniShop2 = $modx->getService('minishop2');
        $miniShop2->initialize();
        $cart = $miniShop2->cart->get();
        foreach ($cart as $key => &$element) {
            /** @var msProduct $product */
            if ($product = $modx->getObject('msProduct', $element['id'])) {
                $element['price'] = $product->get('price');
                if (!$product->get('published') || $product->get('deleted')){
                    unset($cart[$key]);
                }
            }
        }
        $miniShop2->cart->set($cart);
    }
}
Павел Бигель
07 мая 2020, 15:56
modx.pro
9
1 814
+11

Встречайте первый компонент реферально-бонусной программы для miniShop2 - msReferralProgramCoin

Компонент маркетинга(реферально-бонусная система основанная на кешбэке собственной монетой твоего магазина и персональных промокодах для учета рефералов от количества которых зависит индивидуальный процент кешбэка) приводящего клиентов для магазинов основанных на miniShop2 — msReferralProgramCoin

По просьбам пользователей добавлено:
  • В контекстное меню списка товаров добавлены пункты массовой установки и снятия флага участия товара в бонусной программе у выбранных в этом списке товаров
  • Две настройки приветственного бонуса при регистрации:
    1. Само количество бонусных монет зачисляемых на баланс покупателя при регистрации (по умолчанию 0).
    2. Флаг зачисления приветственных бонусов только в том случае если введен валидный промокод пригласившего, что усилит мотивацию ввода промокода пригласившего!

  • Для простоты установки и контроля флаг участия товара в бонусной программе кешбэка добавлен в саму таблицу товаров в дополнение к чекбоксу на вкладке «Свойства товара».
  • Массовое ручное начисление/списание бонусных монет с баланса пользователей.
  • В компонент добавлен пересчет бонусов к начислению и списанию и соответственно пересчет общей суммы заказа с учетом списываемых бонусных монет и стоимости доставки при редактировании заказа в панели управления сайтом!
  • Добавлена настройка количественного отношения бонусной монеты к валюте магазина с показом пользователю сколько одной единице бонусной монеты будет приходиться частей(1, 0.1, ...) валюты магазина.
в версии 1.2.0 будет добавлено:
  • Регистрация по рефссылке в дополнение к уже имеющейся регистрации по персональному промокоду пригласившего.

Пример использования на одном из сайтов клиентов здесь

Уточнение по механизму начисления и списания монет с новыми возможностями:
  • В последней версии 1.1.6 добавлена кратность монет т.е. если в настройке прописать 100 то 1 коин будет стоить 0.01 валюты магазина, и если у покупателя установлен процент кешбэка 3% и покупка на $1000(товарами отмеченными для участия в бонусной) то ему на баланс придет 3000 монет.
  • Оплата корзины идет по настроенному максимальному проценту оплаты корзины т.е. если настроено, что монетами можно оплатить 30% корзины то при покупке на $10 с установленным чекбоксом оплаты монетами сумма заказа станет $7 и на балансе останется 2700 монет из предыдущего пункта.
  • Приветственные монеты можно добавить в панели управления сайтом, но, думаю в версии 1.1.7 добавлю настройку в которой можно внести количество приветственных бонусов при регистрации ;)
  • Статусов золотой, платиновый… нет, но можно доработать за доп оплату.
  • Название монеты сам придумываете в настройках.
Руслан
03 мая 2020, 16:40
modx.pro
3
3 229
+10

Не могу посчитать total

<div class="main-mask">
                <ul class="list-unstyled list-inline offer-price-1">
                    <li class="price">$[[+tv.price]]<span class="divider">|</span><span class="pkg">
                    [[getImageList?
                        &tvname=`itinerary`
                        &totalVar=`daystotal`
                        &tpl=`@CODE: [[+daystotal]]`
                        &limit=`1`
                        &docid=`[[+id]]`
                    ]]
                        Days Tour</span></li>
                </ul>
            </div><!-- end main-mask -->
Пытаюсь таким образом вывести количество элементов в TV Migx, но правильное количество выводится только со второго раза, в смысле когда второй раз обновлю страницу. С первого раза везде выводит количество первого айтема. Если вызов делать некешируемым, то правильное количество вообще не выводится, а берется из первого айтема.
Algirdas
06 марта 2020, 10:43
modx.pro
1
600
0