Новости
- 13.11.2019 - Дополнение "Импорт-Экспорт" для Shopkeeper4
- 13.11.2019 - Открыт Telegram канал проекта Shopkeeper
- 26.10.2019 - Импорт и экспорт товаров в Shopkeeper 4 (видео)
- 25.09.2019 - Вышел Shopkeeper v4.0.8
- 01.09.2019 - Сниппет ShoppingCart - универсальная корзина покупок для MODX
- 02.08.2019 - Агрегация в MongoDB (видео)
- 20.06.2019 - Интеграция Shopkeeper4 для MODX (в разработке)
- 30.04.2019 - Shopker - облачный Шопкипер. Первый месяц - бесплатно!
- 31.03.2019 - DotsMenu - удобное выпадающее меню (блог)
- 19.03.2019 - Вышел Catalogfill 2.4.10 для MODX Revo
- 05.02.2019 - Symfony для MODX-разработчиков
- 15.11.2018 - Импорт/экспорт товаров в Shopkeeper 4
- 14.09.2018 - Установка и обзор Shopkeeper4
- 01.06.2018 - Тест производительности Shopkeeper 4
Последние темы
-
Вышел Shopkeeper 4.1.3
Новости1 -
Получить цвет статуса товара?
Поддержка3 -
Проблема с giftCards
Поддержка12 -
Paykeeper2 для MODX стал бесплатным
Новости1 -
Изменить стоимость доставки из "Нового" сниппета
Поддержка9 -
Дополнение "Импорт-Экспорт" для Shopkeeper4
Новости1 -
Редактирование карточки товара
MODX - Вопросы и обсуждения2 -
Открыт Telegram канал проекта Shopkeeper
Новости1 -
Дополнительные параметры товаров - несколько списков radio-button
Поддержка2 -
Цена от параметра
Общие вопросы7 -
Импорт и экспорт товаров в Shopkeeper 4 (видео)
Документация, Уроки1 -
Shopkeeper3 и модуль оплаты PayAnyWay
Поддержка5 -
Как в окно редактирования заказа добавить поле типа daterange?
Поддержка10 -
tagmanager2 select вместо checkbox
Поддержка2 -
Пару вопросов по Symfony, Angular, MongoDB
Пожелания и предложения2 -
Подскажите как реализовать. Спасибо
Общие вопросы2 -
CatalogFill не могу настроить импорт.
Поддержка7 -
CatalogFill 2.4.10 в режиме PHP-FMP
Поддержка3 -
TypeScript - Полный Курс за 1 час
Документация, Уроки1 -
Вышел Shopkeeper4 v4.0.8
Новости1
Делаем личный кабинет для shopkeeper
-
Создаем сниппет billing и вставляем туда
<?php if (file_exists(MODX_BASE_PATH.$file)){ $o = billing MODX_BASE_PATH.$file; }else{ $o = 'File not found at: '.$file; } return $o;
Создаём файл core/components/user_orders.php и вставляем туда следующее содержимое
<?php /* Выводит заказы пользователя */ @date_default_timezone_set('Europe/Moscow'); @setlocale (LC_ALL, 'ru_RU.UTF-8'); $output = ''; $usergroup = $modx->getOption('usergroup',$scriptProperties,'Покупатели'); $limit = 0; $start = 0; $user = $modx->user; $user_id = $modx->user->get('id'); $profile = $user->getOne('Profile'); if(!$profile || !$user->isMember($usergroup)) return $output; require_once MODX_CORE_PATH.'components/shopkeeper/model/shopkeeper.class.php'; require_once MODX_CORE_PATH."components/shopkeeper/model/shk_mgr.class.php"; $SHKmanager = new SHKmanager($modx); $SHKmanager->getModConfig(); $SHKmanager->config['orderDataTpl'] = $modx->getOption('orderDataTpl',$scriptProperties,'@FILE orderData.tpl'); $SHKmanager->config['additDataTpl'] = $modx->getOption('additDataTpl',$scriptProperties,'@FILE additData.tpl'); $c = $modx->newQuery('SHKorder'); $c->where(array('userid:=' => $user_id)); $count = $modx->getCount('SHKorder',$c); $c->sortby('date','DESC'); if ($limit) $c->limit($limit,$start); $orders = $modx->getCollection('SHKorder', $c); //Повтор заказа if(isset($_GET['action']) && $_GET['action']=='repeat'){ $order_id = isset($_GET['id']) ? trim($_GET['id']) : 0; if($order_id){ $order = $modx->getObject('SHKorder',array('id'=>$order_id, 'userid' => $user_id)); if($order){ $new_order = $modx->newObject('SHKorder'); $new_order->fromArray($order->toArray()); $new_order->set('status',0); $new_order->set('date',strftime('%Y-%m-%d %H:%M:%S')); $new_order->save(); } $modx->sendRedirect($modx->makeUrl($modx->resource->get('id'))); exit; } } //Вывод заказов if($count>0){ $index = 0; foreach($orders as $order){ $purchases = unserialize($order->get('content')); $addit_params = unserialize($order->get('addit')); $date = $order->get('date'); $allowed = $order->get('allowed'); $orderData = $SHKmanager->getOrderData($purchases,$addit_params); $chunkArr = array( 'index' => $index, 'orderID' => $order->get('id'), 'date' => $date, 'status_id' => $order->get('status'), 'status' => isset($SHKmanager->config['statuses'][$order->get('status')]) ? $SHKmanager->config['statuses'][$order->get('status')][0] : '' ); $chunk_data = $SHKmanager->getChunk('@INLINE '.$orderData); $output .= $SHKmanager->parseTpl($chunk_data, $chunkArr); $index++; } } return $output;
В нужном месте вызываем сниппет billing со следующими настройками:
[[!billing? &file=`core/components/user_orders.php` &usergroup=`Покупатели` &orderDataTpl=`user_orderDataTpl` ]]
Создаём чанк user_orderDataTpl (пример core/components/shopkeeper/elements/chunks/ru/orderData.tpl), в который копируем этот код:
<p>Дата заказа: [[+date]]</p> <table> [[+loop]] [[+name:is=`Доставка`:then=` <tr> <td> [[+s]]<b>[[+name]]</b> [[+shk_delivery]][[+/s]] </td> <td></td> <td>[[+price_total]] [[+currency]]</td> </tr> `:else=` <tr> <td> [[+s]] <b><a href="[[+link]]">[[+name]]</a></b> [[+addit_data]] [[+/s]] </td> <td> [[+s]][[+count]] шт.[[+/s]] </td> <td> [[+s]][[+price]] [[+currency]][[+/s]] </td> </tr> `]] [[+end_loop]] <tr> <td align="right" colspan="2"><b>Итого:</b></td> <td><b>[[+price_total]] [[+currency]]</b></td> </tr> </table> <br/>
Формировать структуру можно как угодно, не только в таблицах, а например в <div> + bootstrap Просто используете плейсхолдоры из кода и подставляйте их в нужные блоки.
Кнопка повторить заказ
<a href="[[~[[*id]]]]?action=repeat&id=[[+orderID]]">Повторить заказ</a>
-
@Роман это замена userOrders? В чем преимущества?
-
Хорошо бы указывать источник
http://promo-creative.com/lichnyij-kabinet-polzovatelya-v-internet-magazine-modx-revolution-shopkeeper.htmlА первоисточник, по-моему, мой блог, который сейчас не работает.
-
@Роман А на Shopkeeper 3 такого же нету??
-
@akradeus Изначально этого нет, вы сами создаете сниппет и выводите его в нужном вам месте шаблона
-
Зачем изобретать велосипед? Прекрасно работает связка login+shopkeeper+userOrders опробовал на 3 сайтах. Очень много крутых фич из пакета.
-
-
А где его скачать то теперь ??
http://e-store.modx-shopkeeper.ru/katalog/dopolneniya-dlya-modx/istoriya-zakazov.html
-
@Pavel Не могу найти организованной документации либо видея для "чайников" про сборку login + shopkeeper +userOrders. Есть ли у кого нибудь ссылки?
-
а ничего что сниппет billing сразу же показывает синтаксическую ошибку в строке $o = billing MODX_BASE_PATH.$file; ?