Ян Сонов
С нами с 10 июня 2015; Место в рейтинге пользователей: #686ZoomX Быстрый старт - разбираем на практике. Часть первая.
Я уже неоднократно писал комплиментарные заметки компоненту ZoomX, никак не останавливаясь на практических моментах. Пришло время закрыть этот гештальт. Давайте разберемся как устроен компонент, как им пользоваться и напишем первое приложение.
Прежде всего скажу, что выделяю в компоненте ZoomX несколько частей, каждая из которых отвечает за решение своей глобальной задачи.
Таких задач я для себя выделил две.
Прежде всего скажу, что выделяю в компоненте ZoomX несколько частей, каждая из которых отвечает за решение своей глобальной задачи.
Таких задач я для себя выделил две.
- Построение полноценного RESTfull API
- Отказ от парсеров MODX и построение шаблонов сайта на основе правильного взрослого шаблонизатора (это ведет, в том числе к ускорению загрузки сайта)
Как сдвинуть id заказов minishop2 на определённый интервал?
Добрый день!
Возникла необходимость сдвинуть нумерацию id заказов minishop2 на некоторую величину, положим 100000. Изначально на сайте были заказы с id 55, 56, 57. Сейчас нужно, чтобы заказы нумеровались дальше в таком виде: 100058, 100059, 100060 и тд. Если просто переименовать id заказов в БД 100055, 100056, 100057 во всех таблицах и оформить новый заказ, он оформится просто как 58. Подскажите, пожалуйста, как нумеруются заказы и как можно реализовать нумерацию по-новому?
Спасибо за помощь
Возникла необходимость сдвинуть нумерацию id заказов minishop2 на некоторую величину, положим 100000. Изначально на сайте были заказы с id 55, 56, 57. Сейчас нужно, чтобы заказы нумеровались дальше в таком виде: 100058, 100059, 100060 и тд. Если просто переименовать id заказов в БД 100055, 100056, 100057 во всех таблицах и оформить новый заказ, он оформится просто как 58. Подскажите, пожалуйста, как нумеруются заказы и как можно реализовать нумерацию по-новому?
Спасибо за помощь
modx + webp просто и надежно - автоматически
Недавно нашел удачный плагин для преобразования картинок/рисунков в webp в автоматическом режиме — плагин сам решит поддерживает ли браузер webp и отдаст ему кэш страницы с webp, а если нет (apple) то отдаст обычную страницу… От вас ничего не требуется кроме установки плагина, не из репозитория (на странице все расписано).
Оптимизации и тонкости работы с БД для больших магазинов на MODX Revolution
Небольшое вступление
Данная статья не претендует на универсальное решение. Всегда пользуйтесь собственной головой. Всё описанное ниже актуально для MODX Revolution 2.8.3-pl, miniShop2 2.9.1-pl.
Данная статья не претендует на универсальное решение. Всегда пользуйтесь собственной головой. Всё описанное ниже актуально для MODX Revolution 2.8.3-pl, miniShop2 2.9.1-pl.
Фид товаров для Facebook
Рекламщики дали задачу собрать им фид товаров для импорта в facebook*.
Распишу этапы работ, которые делал, может кому нибудь пригодится. А заодно может кто-то предложит решение лучше и укажет на мои ошибки, которые возможно есть))
Распишу этапы работ, которые делал, может кому нибудь пригодится. А заодно может кто-то предложит решение лучше и укажет на мои ошибки, которые возможно есть))
*Meta, которой принадлежат facebook и instagram признана экстремистской в России
Localizator. Вывод списка языков
Доброго времени суток, сообщество.
Предлагаю решение для вывода списка языков при использовании дополнения Localizator.
[СДЕЛАЙ САМ] Авторизация и регистрация по СМС
Всем привет. Я ни на что не претендую, прекрасно понимаю, что вариантов решения данной задачи много, и мой, наверное, не лучший, но меня попросили написать решение и эту инструкцию, поэтому поехали.
Нам понадобится:
Нам понадобится:
- Console
- CMP Generator
- AjaxForm
- miniShop2
[СДЕЛАЙ САМ] DaData. Определение города по ip
Сниппет называется detectRegion. Для работы необходимо зарегистрироваться на сайте DaData и создать системную настройку для ключа api с названием dadata_api_key
<?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;
}
P.S. isSiteAvailible [УПУЩЕННОЕ] Настраиваем расчёт скидки в minishop2 версии 2.7.0 и выше
Приветствую, как-то так случилось, что я упустил вот этот релиз, и тут понадобилось мне сделать возможность устанавливать скидку на каждый товар, начал я писать плагин и увидел в объекте корзине два ранее не встречавшихся ключа discount_price и discount_cost, связался с @Иван Бочкарев, он меня и просветил, что расчёт скидки уже внедрён, надо только указать старую цену и всё посчитается. Это круто, но зачастую удобнее указать скидку в % от цены или просто числом, поэтому я написал небольшой плагин, который при сохранении товара рассчитывает новую цену, а старую записывает в поле old_price, если же скидка равна 0 или не указана и поле old_price заполнено, то его содержимое переносится в price, а old_price обнуляем. Уверен, что многие сами могут такой плагин написать, но кому-то возможно захочется сэкономить 5 минут, код под катом.
mfilter2 - вывод значений фильтра в алфавитном порядке, с группировкой по первой букве
Добрый день, давно не писал ничего, вот делюсь рабочим вариантом группировки значений фильтра по первой букве.
Как это должно выглядеть:
Как это должно выглядеть: