Всего 125 767 комментариев

Василий Наумкин
09 июля 2013, 05:59
0
Версия последняя, из нашего репозитория?

Если так — создавай отдельную тему, будем разбираться.
Василий Наумкин
09 июля 2013, 05:55
0
Самое просто: добавить новое поле в товар и там хранить остатки. Это лучше сделать плагином, но можно и ТВ.

Затем нужно проверять возможность добавления товара в корзину. Системным плагином по событию msOnBeforeAddToOrder это делать не получится, ибо я такого не предусмотрел =)

Зато можно расширить класс корзины, и немного изменить метод add(), чтобы он проверял остатки и возвращал success() или error().

В течении пары недель я планирую сделать такой простой учет остатков в стандартной версии MS2, без учета цветов, размеров и прочего, чисто ресурсами.
Василий Наумкин
09 июля 2013, 05:23
0
Товары MS2 — это такие же ресурсы как у шопкипера, только с расширенными свойствами, которые хранятся в отдельной таблице.

Эти свойства позволяют им работать быстрее, чем ТВ параметры, а также не очищать кэш всего сайта при изменении одного товара.

Так что, если на твоем хостинге обычный MODX Revolution крутит 30к страниц, то 30к товаров MS2 будут крутиться также или немного быстрее. Обычного vps типа Linode хватит за глава, настроить можно по этой инструкции.

Серьёзного компонента импорта-экспорта пока нет, но для своих задач можно написать что-то самостоятельно. Вот, например.
Виталий
09 июля 2013, 00:02
0
30 000 потянет при грамотном подходе. Хостинг — modxcloud.com вполне подойдет.

Есть различные решения для экспорта и импорта в общем репозитории MODX. Мы планируем в скором будущем сделать такой модуль специально для miniShop2.
Антон Соловьёв
08 июля 2013, 23:30
0
Я извиняюсь, что спрашиваю инфу, которую можно на сайте нагуглить, просто мы тут втыкнулись и срочно нужна альтернатива.
Антон Соловьёв
08 июля 2013, 22:58
0
30 тысяч товаров потянет? экспорт-импорт из csv налажен?
Понятно, что от хостинга в этом случаи тоже многое зависит. И это тоже вопрос: при 30 тысячах товара каких ресурсов потребует?
Евгений
08 июля 2013, 20:36
0
У кого-нибудь есть идее?
Предполагаю что лучше будет проверять при оформлении заказа, но как тогда при событии msOnBeforeAddToOrder вернуть пользователю ошибку?
Спасибо!
Bond Nataly
08 июля 2013, 19:48
0
Здравствуйте. У меня такая же ситуация, ошибок яваскрипт нету. Страница перезагружается, добавляя в адресной строке ?msorder=15, заказ отправляется, все как надо, только, похоже, не выдает tpl.msOrder.success и не очищается корзина. В какую строну глянуть? Спасибо.
Василий Наумкин
08 июля 2013, 15:02
0
Да, примерно похож.

Правда, есть и некоторые отличия.
Виталий
08 июля 2013, 14:47
0
Вы можете посмотреть возможности на minishop2.com. Количество товаров — ограничено только возможностями разработчиков.

Но в целом, все работает очень быстро даже в больших магазинах из коробки.
Антон Соловьёв
08 июля 2013, 14:42
0
А в таком случаи какое максимально-возможное количество товаров в магазине, называемом «минишоп»? В остальном же он вроде примерно похож на Шопкипер по возможностям? Извиняюсь, если обидел кого предположением, я не вкурсе просто.
Александр Рахимов
08 июля 2013, 14:27
0
Данная реализация работает только в связке с miniShop2
Алексей
08 июля 2013, 10:44
0
Большое спасибо Василию за этот код:

$status = 5;    // статус оплаченного заказа
$time = 60;     // время кэширования выборки, в секундах

if (!$cache = $modx->cacheManager->get('shkorders')) {
    $modx->addPackage('shopkeeper', MODX_CORE_PATH.'components/shopkeeper/model/');
    $q = $modx->newQuery('SHKorder', array('status' => $status));
    $q->select('content,userid');
    
    $goods = $users = array();
    if ($q->prepare() && $q->stmt->execute()) {
        while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
            $tmp = unserialize($row['content']);
            foreach ($tmp as $v) {
                if (isset($goods[$v['id']])) {$goods[$v['id']] += $v['count'];}
                else {$goods[$v['id']] = $v['count'];}
                
                if (isset($users[$row['userid']])) {$users[$row['userid']] += $v['count'];}
                else {$users[$row['userid']] = $v['count'];}
            }
        }
        $cache = array('goods' => $goods, 'users' => $users);
        $modx->cacheManager->set('shkorders', $cache, $time);
    }
}
else {
    extract($cache);
}



if (!empty($product)) {
    return isset($goods[$product]) ? $goods[$product] : 0;
}
else if (!empty($user)) {
    return isset($users[$user]) ? $users[$user] : 0;
}
Пользоваться очень просто:
[[!getSHKStat?product=`id товара`]] //для вывода числа продаж этого товара
или
[[!getSHKStat?user=`id юзера`]] //для вывода числа покупок юзера
Респект и уважуха тебе мужик, даже деньги не хотел брать )))
Василий Наумкин
08 июля 2013, 04:13
0
Я правильно понимаю, что тебе нужно просто 2 счетчика: покупок товара и покупок пользователя?

Если так — пришли на bezumkin@ya.ru доступы, помогу.
Антон Соловьёв
07 июля 2013, 23:15
0
Скажите пожалуйста, компонент работает только с минишоп или можно выгружать и в виде стандартных документов modx?
Alex Vakhitov
07 июля 2013, 08:16
0
Такое использование использование символа "@" мне нравится больше (:
Василий Наумкин
07 июля 2013, 07:36
0
Угомонись, дурачок.

Я давал тебе шанс высказаться, сейчас уже поздно.
Peter Zenin
07 июля 2013, 06:53
0
По-моему программистов не самоучек быть не может :-)
Спасибо за работу!
Василий Наумкин
07 июля 2013, 05:37
0
Коля, ты забанен за то, что не умеешь нормально вести диалог и доказывать свою точку зрения.

Делать себе замечания я умею и сам.