Антон Тарасов

Антон Тарасов

С нами с 25 июля 2014; Место в рейтинге пользователей: #67

Закалка MODX Revolution (перевод)

Своего писать я пока сомневаюсь, уровень не тот, а вот перевести полезную статью с официальной документации — это с удовольствием. Перевод местами может показаться несколько вольным, что касается формулировок, — иначе переводить скучно. Но в том, что касается технических деталей, старался быть дотошно точным. Так что, если найдёте технические неточности — ругайтесь в комментах. А на филологию прошу не жаловаться:) И тем более на идеологические расхождения с Вашим мировоззрением — тут все вопросы к авторам доков. Паранойи и почвы для громких споров среди «экспертов по безопасности» в статье предостаточно. Помни, о читатель, всё это касается в первую очередь важных и заметных проектов.
Добро пожаловать под кат.
mngatoff
15 февраля 2016, 02:03
modx.pro
61
22 118
+13

Минимальный заказ

Дорогие вы мои, подскажите пожалуйста, есть ли какое готовое решение чтобы запрещать отправку формы оформления заказа или ее вывод, если сформированный заказ не дотягивает до минимальной цены?
Андрей
26 января 2016, 11:20
modx.pro
13
5 139
0

Упрощаем работу с TV

Продолжая тему, начатую Василием, предлагаю решение для упрощения работы с TV. Оно поможет тем, у кого логика сайта завязана на TV — запросы, фильтры и т.п.
Решается эта задача созданием полей в таблице ресурсов и копированием в них значений TV.
Сергей Шлоков
02 декабря 2015, 09:18
modx.pro
49
8 217
+7

Расширение любых таблиц MODX

В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.

Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.

Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
Василий Наумкин
16 ноября 2015, 07:07
modx.pro
117
10 473
+11

Кастомный класс доставки. Бесплатно дост. от суммы

Имеется кастомный класс доставки:
<?php
class msxxxDeliveryHandler extends msDeliveryHandler{
    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
        $cart = $this->ms2->cart->status();
        $total = $_SESSION['minishop2']['mode_total'];
        
        if ($total<10000) { 
            $add_price = $delivery->get('price');
            if (preg_match('/%$/', $add_price)) {
                $add_price = str_replace('%', '', $add_price);
                $add_price = $cost / 100 * $add_price;
            }
            $cost += $add_price;
        }
        return $cost;
    }
}
При достижении суммы корзины свыше 10000, страница обновляется и вся корзина пересчитывается по оптовым ценам. Доставка становится бесплатной (по условию, свыше 10000, доставка бесплатная ).

Пример, Товар стоимостью 3500р (розничная цена), 3300р (оптовая).
Добавляем 3 наименования.
ИТОГ: в корзине 9900р, доставка бесплатная (по обычной цене сумма получилась 10500)

ВОПРОС: Подскажите, пожалуйста, как сделать, чтобы доставка всегда считалась по оптовой цене?
Klike
13 августа 2015, 09:48
modx.pro
4
2 777
0

Бесплатная доставка курьером от определенной суммы

Здравствуйте. Пожалуйста, подскажите как реализовать данный функционал:
например, до 5000 тысяч доставка 300 рублей, от 5000 тысяч – бесплатно?

joxi.ru/zAN5Mxls156329
Александр Янк
02 августа 2015, 15:23
modx.pro
14
7 216
0

Чистим сайт от старых пакетов

При обновлении какого-нибудь компонента, MODX загружает новый пакет в папку /core/packages и добавляет запись в таблицу modx_transport_packages. Со временем в папке /core/packages накапливается приличное количество пакетов компонентов разных версий. И глядя на это разнообразие хочется избавиться от старых версий. И самое просто решение — удалить из папки не нужное. Решение простое, но неправильное. Так как в таблице остаются ссылки на эти пакеты и MODX их помнит. И иногда может и поругаться, что не нашел какой-то пакет. Чтобы не нарушать гармонии, лучше удалять их через специальный интерфейс.
Сергей Шлоков
24 февраля 2015, 12:13
modx.pro
13
3 300
+8

Изменение стоимости доставки в default.js

Привет ребята!
Столкнулся с небольшой проблемой, думаю многие уже с ней сталкивались, но в поиске ничего стоящего не нашел.
Задача стояла в том, чтобы сделать бесплатную доставку при заказе от 10 т.р. в пределах МКАД и от 15 т.р. за пределы мкад.
Назначил свои кастомные классы для каждого способа доставки, все считает прекрасно в [[+order_cost]]. Но вот не пойму как сделать чтобы вместо [[+price]] (цены доставки) подставлялось налету 0 руб. чтобы сказать клиенту что доставка теперь бесплатна?
Нашел этот коммент Василия, но так и не понял где что поправить.
Артём Добряков
21 сентября 2014, 23:15
modx.pro
5
5 783
0

miniShop2 - скидка или наценка к сумме заказа

Добрый день!

Такой вопрос… нужно реализовать логику: наценка 5%, если в корзине 1 или 2 товара, скидка 2%, если в корзине 8 товаров или больше. Как это делать?

Пока идея: переопределить msCartHandler, в методе get реализовать мою логику:

public function get() {
	$cart['skidka'] = array('id' => 'skidka', 'price' => -100, 'weight' => 0, 'options' ),
	return $this->cart;
}

… но… есть еще

public function status($data = array()) {

… окей, и там можно реализовать эту логику. И еще немного надо будет поправить js файлы, хорошо… хотя уже что-то много правок намечается… я верно пытаюсь сделать? или нужно по другому реализовывать? Василий, как бы ты поступил? Общие мысли интересуют, реализовать — справлюсь :)

Естественно, мне нужно, что бы все заработало и в маленькой корзине в шапке сайта, и в большой корзине.
Наумов Алексей
05 мая 2014, 13:58
modx.pro
10
4 772
0

Создание своего события в MODX

Сижу посматриваю исходники minishop. Заинтересовался созданием собственных событий в MODX.
$response = $this->ms2->invokeEvent('msOnBeforeAddToOrder', array(
'key' => $key,
'value' => $value,
'order' => $this
));
Правильно ли я понял что вот данный кусок кода и вызывает событие?
Если да, то каким образом теперь его отследить?
Володя
12 апреля 2014, 10:24
modx.pro
13
9 201
0