Александр Мельник

Александр Мельник

С нами с 02 сентября 2016; Место в рейтинге пользователей: #66

[СДЕЛАЙ САМ] Промокоды для minishop2 с помощью MIGX.

Приветствую, начнём с того, что есть много прекрасных дополнений реализующих данных функционал, и я советую всем использовать именно их, поскольку функциональность их значительно выше, а цена вполне демократичная. Но если бюджет сильно ограничен, а промокоды очень хочется и самому придумывать реализацию не с руки, то читайте дальше.
Артур
25 мая 2021, 14:37
modx.pro
1
493
-3

Поиск источника ошибки Instantiated a derived class

Всем привет!

На одном из сайтов стала появляться ошибка следующего содержания:
Instantiated a derived class CollectionContainer that is not a subclass of the requested class ArticlesContainer

которая забивала Журнал ошибок за 2-а дня на 60 мб.

Поиск источника по БД, через сниппеты, через Batcher и другие способы не принесли результата.

Иван Бочкарев
23 мая 2021, 22:39
modx.pro
5
628
+17

[СДЕЛАЙ САМ] Авторизация и регистрация по СМС

Всем привет. Я ни на что не претендую, прекрасно понимаю, что вариантов решения данной задачи много, и мой, наверное, не лучший, но меня попросили написать решение и эту инструкцию, поэтому поехали.
Нам понадобится:
  1. Console
  2. CMP Generator
  3. AjaxForm
  4. miniShop2
!!! ВАЖНО!!! Корзина и оформление заказа должны быть разными страницами.
Артур
17 мая 2021, 00:31
modx.pro
3
1 489
+1

msPaidOptions. Платные опции к товару

Компонент позволяет создавать дополнительные опции к товару, которые могут повлиять на его итоговую стоимость.


Aleksandr Huz
06 мая 2021, 10:13
modx.pro
9
878
+18

[СДЕЛАЙ САМ] Контексты для регионов в интернет-магазине.

Задача: сделать максимально простое добавление новых контекстов на сайт для создания региональных копий с собственными ресурсами, robots.txt и sitemap.xml, уникальными для каждого региона ресурсами и ценами на некоторые товарные позиции.

Проблемы:
1. Вывод галереи изображений товаров
2. Добавление дополнительных категорий к товарам в новом контексте.
3. Связывание товаров.

Решение:
1. Настраиваем редирект со всех поддоменов на основной домен (как это сделать уточняйте у хостера или в Google);
2. Подключаем плагин для переключения контекстов:
<?php
// Работаем только на фронтенде
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}

// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];
$ctx = $modx->getObject('modContextSetting', array('key' => 'http_host', 'value' => $host)); 

if($ctx->get('context_key') != 'web'){
    $modx->switchContext($ctx->get('context_key'));
}

Логика такая: определяем по url какой контекст запросили, если это не основной контекст (web), то переключаем контекст на запрошенный, в противном случае смотрим есть ли в $_COOKIE город, если нет, то устанавливаем $_COOKIE['curCity'], проверяем есть ли в списке контекстов запрошенный, если есть, то переключаем, если нет остаемся на основном контексте. На фронте этим управляет вот такой код
let btns = document.querySelectorAll('.jsChooseBtn'), // это кнопки подтверждения ДА и НЕТ
        tooltip = document.querySelector('.jsCityTooltip'); // это само окно с вопросом "ЭТО ВАШ ГОРОД"
    for(let i = 0; i < btns.length; i++){
        btns[i].addEventListener('click', function(e){
            tooltip.classList.add('d-none');
            if(e.target.classList.contains('jsCityConfirm')){ // если нажали да
               document.cookie = 'curCity='+ e.target.dataset.city + '; path=/;domain=ecodecking.ru'; 
            }
        });
    }
    if(document.cookie.indexOf('curCity') != -1){ // проверяем есть ли город в куках
        tooltip.classList.add('d-none'); 
    }


2.1 если кому интересно город я определяю через сайт DaData.Код сниппета detectRegion тут.
<?php
$url = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address';
$siteIsAvaliable = $modx->runSnippet('isSiteAvailible', array('url' => $url));
if($siteIsAvaliable){
    $token = $modx->getOption('dadata_api_key');
    $ip = $_SERVER['REMOTE_ADDR'];
    $headers = array(
    	'Accept: application/json',
    	'Authorization: Token ' . $token
    );
    $ch = curl_init($url.'?ip='.$ip);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $result = json_decode(curl_exec($ch),1);
    curl_close($ch);
    $region = $result['location']['data']['city'];
    return  $region;
}else{
    $modx->log(1, 'detectRegion: Не возможно определить регион. Сервис DaData недоступен');
    return false;
}

3. Подключаем плагин для создания настроек контекста, при копировании или создании нового.
Артур
07 апреля 2021, 19:51
modx.pro
4
480
+3

[СДЕЛАЙ САМ] Добавляем отображение прогресса загрузки файлов в AjaxForm

Пишу себе на память, но вдруг кому-то тоже нужно. На 17-ю строку в этом файле assets/components/ajaxform/js/default.js добавляем вот такой код
Артур
01 декабря 2020, 13:49
modx.pro
3
404
+1

excelConvertRule - Конвертация полей базы для импорта-экспорта с Excel

По работе приходиться с Excel подключаться к сайту на MODX и выгружать с него или загружать в него данные. Постепенно наработался лучший путь. В excelConvertRule редактируются правила конвертации колонки excel в колонку базы MODX. В модуле vba modx_main подготовлены функции LoadToBase для загрузки с excel в MODX и LoadToExcel обратно. В файле core/components/excelconvertrule/users_editor.xlsm, для примера, сделан редактор пользователей MODX. Используя этот пакет можно быстро сформировать нужную выгрузку(загрузку) из любых таблиц MODX.
Александр
16 октября 2020, 00:37
modx.pro
4
866
+5

Управления плагинам minishop2 или добавление полей в ms2_products через компонент [msAddField]

Все давно уже познакомились с методом добавления полей через плагины который написал Василий еще в каком то 17 или 2018 году, может раньше

Давно уже написал класс для управления полями через мой компонент который так и не представился миру msCml (синхронизация 1С с характеристикам msOptionsPrice2).

На этих выходных все таки дошли руки и собрал таки компонент msAddField (пока только на github, для самых маленьких))))): там же ссылка на яндекс диск)
Андрей Степаненко
13 октября 2020, 17:11
modx.pro
23
1 789
+22

Модуль оплаты для сервиса Яндекс.Касса по новому протоколу

Всем привет!
Возникла необходимость написать собственный модуль оплаты по Яндекс.Кассе, набросал за пару дней — делюсь.
Дмитрий
12 сентября 2020, 14:07
modx.pro
7
717
+12

Генерация ссылки на корзину и восстановление корзины по ссылке.

Добрый день.

Давайте попрактикуемся с задачкой описанной в заголовке и за 10 минут напишем готовое бесплатное решение, без применения дополнительных компонентов.
Николай Савин
03 августа 2020, 11:42
modx.pro
8
889
+14