[modVkMarket] 1.0.0-beta
Всем привет, уважаемое сообщество. Как и обещал представляю вам компонент для синхронизации товаров minishop2 с маркетом VKontakte.
Возможности:
Немного скриншотов:
Список товаров из маркета в админке
Процесс удаления всех товаров
Процесс синхронизации магазина
Теперь перейдем к особенностям.
На текущий момент синхронизация занимает достаточно длительное время ~1 секунда на 1 товар. Это связано с ограничением количества запросов к VK API. По этой же причине выгружается только одна фотография (главная для товара).
Если у вас нет ограничения на время выполнения скрипта, в настройках можно указать количество товаров для синхронизации за итерацию, точно так же для удаления.
Текущие (базовые) лимиты выставлены на основе тестов на http://modhost.pro.
Не закрывайте консоль при синхронизации, иначе выполнение прервется.
Прерванная синхронизация может быть продолжена в любой момент с того момента, на котором была остановка.
Для первичной настройки компонента в админке необходимо указать параметры приложения ВК и токен.
Процесс создания приложения и получения токена выглядит примерно так:
group_id — Идентификатор вашей группы в VK. Узнать его можно на статистике вашей группы:
И конечно, не забывайте включать сам маркет в настройках группы:
В дальнейших планах:
Компонент в modstore.pro
P.S. После окончательных доработок стоимость будет повышаться. За инструкцию по созданию приложения спасибо Павлу Карелину (нагло стырена с docs.modx.pro без его ведома :))
Возможности:
- Первичная синхронизация всех товаров с маркетом
- Продолжение синхронизации при прерывании
- Вывод всех товаров из маркета с лайками и просмотрами
- Полная очистка маркета
- Создание товара в VK, при создании нового товара minishop2
- Обновление товара при сохранении ресурса
- Удаление товаров из маркета при очистке корзины
Немного скриншотов:
Список товаров из маркета в админке
Процесс удаления всех товаров
Процесс синхронизации магазина
Теперь перейдем к особенностям.
На текущий момент синхронизация занимает достаточно длительное время ~1 секунда на 1 товар. Это связано с ограничением количества запросов к VK API. По этой же причине выгружается только одна фотография (главная для товара).
Если у вас нет ограничения на время выполнения скрипта, в настройках можно указать количество товаров для синхронизации за итерацию, точно так же для удаления.
Текущие (базовые) лимиты выставлены на основе тестов на http://modhost.pro.
Не закрывайте консоль при синхронизации, иначе выполнение прервется.
Прерванная синхронизация может быть продолжена в любой момент с того момента, на котором была остановка.
Для первичной настройки компонента в админке необходимо указать параметры приложения ВК и токен.
Процесс создания приложения и получения токена выглядит примерно так:
- Создаем приложение в Вк.
- Указываем название, выбираем тип приложения Standalone.
- Не забываем включить приложение, изменив селект Состоятние и сохраняем изменения.
- Переходим в настройки и копируем ID приложения. Заменяем {APPID} в строке
на наш ID приложения и вставляем в строку браузера.https://oauth.vk.com/authorize?client_id={APPID}&scope=market,photos,offline&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.21&response_type=token
- В появившемся окне нажимаем разрешить.
- Получаем строку следущего вида
копируем access_token.https://oauth.vk.com/blank.html#access_token=349252841f7c58495d...&expires_in=0&user_id=111
- Теперь открываем наш сайт. Переходим в Системные настройки / modVkMarket и прописываем нужные параметры.
group_id — Идентификатор вашей группы в VK. Узнать его можно на статистике вашей группы:
И конечно, не забывайте включать сам маркет в настройках группы:
В дальнейших планах:
- Добавить загрузку всех фото товара
- Добавить возможность синхронизации не только minishop2, но и просто ресурсов
- Добавить поиск и сортировку по товарам в админке
- И некоторые другие фишки :)
Компонент в modstore.pro
P.S. После окончательных доработок стоимость будет повышаться. За инструкцию по созданию приложения спасибо Павлу Карелину (нагло стырена с docs.modx.pro без его ведома :))
Комментарии: 14
За инструкцию по созданию приложения спасибо Павлу Карелину (нагло стырена с docs.modx.pro без его ведома :))Да всегда пжалста)))
Модерация пройдена!) Компонент в маркете — modstore.pro/packages/import-and-export/modvkmarket
*del
Отписался в ТП. Не увидел возможности ограничивать выборку товаров по родителю — это очень важно. И второе — разные категории товаров (родители) для разных групп. Часто бывает так, что у магазина несколько групп для разных категорий товаров. Было бы здорово это реализовать.
Заранее благодарен!
Заранее благодарен!
Интересует такие моменты:
1. В настройках: modvkmarket_market_category_id — что сюда писать?
2. В настройках: modvkmarket_shop_type — только ли default или есть друге значения?
3. Ест ли возможность выборочной синхронизации в маркетом — как писали выше, например по родителю и т.д.?
1. В настройках: modvkmarket_market_category_id — что сюда писать?
2. В настройках: modvkmarket_shop_type — только ли default или есть друге значения?
3. Ест ли возможность выборочной синхронизации в маркетом — как писали выше, например по родителю и т.д.?
Что-то с ключами напутал, видимо. не могу скачать компонент в маркете. что подскажете?
{«error»:«invalid_client»,«error_description»:«client_id is incorrect»}
{«error»:«invalid_client»,«error_description»:«client_id is incorrect»}
Сообщите пожалуйста что с данным компонентом? не могу найти никакой информации о судьбе компонента. Купил пачкой несколько компонентов полгода-год назад, настроить понадобилось сейчас. делаю по инструкции, но в итоге та же ошибка:
{«error»:«invalid_request»,«error_description»:«Security Error»}
{«error»:«invalid_request»,«error_description»:«Security Error»}
Какие планы по развитию компонента?
Поставил на тестовый хостинг, вроде работает, выгружает. Буду покупать для одного сайта.
Хотелось бы настройки соответствий для полей, типа описание в ВК-магазине = description или introtext на выбор.
Можно ли реализовать разбивку на категории при импорте?
Поставил на тестовый хостинг, вроде работает, выгружает. Буду покупать для одного сайта.
Хотелось бы настройки соответствий для полей, типа описание в ВК-магазине = description или introtext на выбор.
Можно ли реализовать разбивку на категории при импорте?
У тебя получается задание прерывается сразу как завершается время исполнения скрипта.
Посмотри реализацию scannerModx, там аналогичный механизм через консоль, только когда происходит остановка, прерывание не происходит, открывается новая итерация.
И цикл завершится только когда появится сообщение в регистре.
Достаточно простой механизм.
Часть кода на JS
Посмотри реализацию scannerModx, там аналогичный механизм через консоль, только когда происходит остановка, прерывание не происходит, открывается новая итерация.
И цикл завершится только когда появится сообщение в регистре.
Достаточно простой механизм.
Часть кода на JS
scannerSystem: function () {
var grid = this
var el = this.getEl()
var scannerSystemCallback = function (btn) {
if (btn === 'yes') {
var scannerConsole = MODx.load({
xtype: 'modx-console'
, register: scannerMODX.config.register
, topic: scannerMODX.config.topic
, remove_read: scannerMODX.config.remove_read
, show_filename: 0
, listeners: {
'shutdown': {
fn: function () {
/* do code here when you close the console */
}, scope: this
}
}
})
scannerConsole.show(Ext.getBody())
MODx.Ajax.request({
url: scannerMODX.config['connector_url']
, params: {
stage: 'new_session',
action: 'mgr/filesystem/scannersystem',
register: scannerMODX.config.register,
topic: scannerMODX.config.topic,
remove_read: scannerMODX.config.remove_read,
}
, listeners: {
'success': {
fn: function (response) {
if (response.object.stage !== undefined) {
grid.scannerSystemCheck(el, response.object.stage)
} else {
el.unmask()
grid.refresh()
}
}, scope: this
},
'failure': {
fn: function (response) {
//console.fireEvent('complete');
}, scope: this
},
}
})
}
}
Ext.MessageBox.show({
title: _('scannermodx_filesystem_btn_scannersystem'),
msg: _('scannermodx_filesystem_confirm'),
width: 300,
buttons: Ext.MessageBox.YESNO,
fn: scannerSystemCallback,
icon: Ext.MessageBox.QUESTION
})
return true
},
scannerSystemCheck: function (el, stage) {
var grid = el
MODx.Ajax.request({
url: this.config.url,
params: {
stage: stage,
action: 'mgr/filesystem/scannersystem',
register: scannerMODX.config.register,
topic: scannerMODX.config.topic,
remove_read: scannerMODX.config.remove_read,
},
listeners: {
success: {
fn: function (response) {
if (response.object.stage !== undefined) {
this.scannerSystemCheck(grid, response.object.stage)
} else {
grid.unmask()
this.refresh()
}
}, scope: this
}, failure: {
fn: function ® {
grid.unmask()
}, scope: this
}
, cancel: {
fn: function ® {
grid.unmask()
}, scope: this
}
}
})
},
Задачи идут партиями, если вы поставили большую партию и уперлись во время выполнения — будет ошибка да. Ставьте маленькие порции товаров и все будет ок.
Да это не предложение сделать) Это решение, на всяки случай)
Добрый день!
Случайно расширение функционала на магазин в фейсбуке и гугл мерчант не планируются?
Случайно расширение функционала на магазин в фейсбуке и гугл мерчант не планируются?
На данным момент у компонента появилась ошибка, товары дублируются. Если поставить выгрузку по 1 товару, то он так и будет 1 товар грузить несколько раз. В логах
[2020-05-27 19:21:53] (ERROR @ /var/www/user/data/www/site.ru/core.site/xpdo/om/xpdoobject.class.php : 1452) Error 23000 executing statement:
INSERT INTO `pr_modvkmarket_sync` (`object_id`, `market_id`, `processed`) VALUES ('104022', 3503425, 1)
Array
(
[0] => 23000
[1] => 1062
[2] => Duplicate entry '104022' for key 'object_id'
)
Куда копать и искать ошибку? В ТП написать не могу, покупал очень давно.
vk сменил метод получения токена, новый мануал будет? а то куплена версия 16 июня 2019г, перестала работать…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.