mekirile
С нами с 06 февраля 2015; Место в рейтинге пользователей: #95[syncMoySklad] Переписать для работы с API 1.2
В API MoySklad 1.2 есть ряд изменений, которые описаны тут dev.moysklad.ru/doc/api/remap/1.2/changelog/#spisok-izmenenij-otlichiq-api-remap-1-2-ot-api-remap-1-1-dobawleno
Необходимо переписать компонент syncMoySklad, чтобы он корректно работал с версией API 1.2
tg:@mekirile
Необходимо переписать компонент syncMoySklad, чтобы он корректно работал с версией API 1.2
tg:@mekirile
Умет ли syncMoySklad выгружать штрихкоды из МойСклад?
Кто-нибудь выгружает Штрикоды к товарам? Работает или коробки или писали доработку?
Как вывести связанные товары независимо от типа связи?
Добрый день.
Ранее в каталоге были товары, у которых была добавлена связь один к одному (id=4).
Я выводил их следующим кодом:
Перечисление айдишников в коде выше не работает. Как указать вызов сниппета, чтобы связанные товары выводились независимо от того, какая связь добавлена у товара?
Ранее в каталоге были товары, у которых была добавлена связь один к одному (id=4).
Я выводил их следующим кодом:
{var $links = '!msProducts' | snippet : [
'parents' => 0,
'link' => 4,
'master' => $_modx->resource.id,
'tpl' => '@INLINE <div class="col-6 col-md-4 col-lg-3">{include "file:new/chunks/product.tpl"}</div>'
]}
{if $links?}
<h3>Купите также:</h3>
{$links}
{/if}
Сейчас же появилась необходимость сделать, у некоторых товаров связь один ко многим (id=5).Перечисление айдишников в коде выше не работает. Как указать вызов сниппета, чтобы связанные товары выводились независимо от того, какая связь добавлена у товара?
Как в mFilter2 вывести модификации с ненулевым остатком
Имеются товары с модификациями подобного вида — prntscr.com/scgm57
Проделал манипуляции с кастомным классом, чтобы фильтровать по модификациям, но в фильтре выводит все доступные модификации — prntscr.com/scgo3c.
А я бы хотел выводить только те, у которых ненулевой остаток. Подскажите, как прописать это условие. Вот вызов mFilter2:
Проделал манипуляции с кастомным классом, чтобы фильтровать по модификациям, но в фильтре выводит все доступные модификации — prntscr.com/scgo3c.
А я бы хотел выводить только те, у которых ненулевой остаток. Подскажите, как прописать это условие. Вот вызов mFilter2:
Почему не работает условие в pdoPage?
Вывожу товары конструкцией
Товаров нет — prntscr.com/s9ut89
Товары есть — prntscr.com/s9utpz
В чем может быть дело и как это поправить?
{$_modx->runSnippet('!pdoPage',[
'parents' => '2678',
'includeTVs'=>'team',
'where' => '{"team: LIKE":"Спартак"}',
'element' => 'msProducts',
'limit' => 5,
'sortby' => '{ "createdon":"DESC" }',
'showLog' => 1,
'ajaxMode' => 'default',
])}
В этом случае всё работает корректно. Если меняю условие на 'where' => '{"team: LIKE":"{$_modx->resource.pagetitle}"}',
То товары не отображаются. Хотя лог показывает одно и то же в запросе SQL в обоих случаях. Товаров нет — prntscr.com/s9ut89
Товары есть — prntscr.com/s9utpz
В чем может быть дело и как это поправить?
Включить Fenom для контекста
Добрый день. Хочу аккуратно перенести элементы своего сайта на Fenom. Я создал контекст для поддомена вида dev.mysite.ru. На основном сайте настройка pdotools_fenom_parser указана со значением Нет.
Пытаюсь переопределить её в новом контексте — prntscr.com/s7wr3d, но на странице вместо содержимого всё равно вижу
Если поменять значение в системных настройках, то в контексте всё работает ок.
Подскажите, в чем может быть дело?
Пытаюсь переопределить её в новом контексте — prntscr.com/s7wr3d, но на странице вместо содержимого всё равно вижу
{include 'file:dev/templates/main.html'}
.Если поменять значение в системных настройках, то в контексте всё работает ок.
Подскажите, в чем может быть дело?
Выгрузка товаров на Ozon
Кто-нибудь размещается на Ozon?
Как организовали выгрузку и обновление товарных предложений? К сожалению yml от Маркета не принимают, руками долго, а по API не смогу.
Как организовали выгрузку и обновление товарных предложений? К сожалению yml от Маркета не принимают, руками долго, а по API не смогу.
Вопрос по mSync (mSklad)
Здравствуйте, при выгрузке заказа с сайта в МойСклад не добавляется его модификация.
В данном случае модификация — это TV параметр размер.
Вот как выглядит при создании заказа в МойСклад — prntscr.com/mwn6jb
Вот как должно быть — prntscr.com/mwn7ck
Вот так выбирается размер на сайте — prntscr.com/mwn7xp
Сами значения размеров (TV-параметры) как раз-таки и берутся из МоегоСклада, поле заполняется модификациями при импорте товаров на сайт.
Подскажите, в каком файле можно добавить указание модификации к товарам в заказе.
msklad-1.0.10-pl
В данном случае модификация — это TV параметр размер.
Вот как выглядит при создании заказа в МойСклад — prntscr.com/mwn6jb
Вот как должно быть — prntscr.com/mwn7ck
Вот так выбирается размер на сайте — prntscr.com/mwn7xp
Сами значения размеров (TV-параметры) как раз-таки и берутся из МоегоСклада, поле заполняется модификациями при импорте товаров на сайт.
Подскажите, в каком файле можно добавить указание модификации к товарам в заказе.
msklad-1.0.10-pl
Как вывести ссылку на оплату на странице успешного заказа?
Здравствуйте. Хочу немного переделать логику оформления заказа. Мне нужно чтобы при выборе онлайн-оплаты не происходил редирект на платежный сервис сразу, а сначала был переход на страницу Спасибо за заказ. И уже на этой странице я бы выводил пользователю линк для оплаты.
Я так понимаю, что нужно расширить класс msOrderHandler для того, чтобы убрать редирект. Но вот каким образом в чанке tpl.msGetOrder вывести ссылку на оплату? Подскажете?
Решение:
Для того, чтобы при выборе любого способа оплаты не было редиректа на платёжную систему необходимо расширить класс заказа . Код нового класса:
Я так понимаю, что нужно расширить класс msOrderHandler для того, чтобы убрать редирект. Но вот каким образом в чанке tpl.msGetOrder вывести ссылку на оплату? Подскажете?
Решение:
Для того, чтобы при выборе любого способа оплаты не было редиректа на платёжную систему необходимо расширить класс заказа . Код нового класса:
<?php
if (!class_exists('msOrderInterface')) {
require_once MODX_CORE_PATH . 'components/minishop2/model/minishop2/msorderhandler.class.php';
}
class appOrderHandler extends msOrderHandler implements msOrderInterface
{
/** @var modX $modx */
public $modx;
/** @var miniShop2 $ms2 */
public $ms2;
/** @var array $config */
public $config;
/** @var array $order */
protected $order;
function __construct(miniShop2 & $ms2, array $config = [])
{
parent::__construct($ms2, $config);
//$this->modx->log(1, print_r('__construct', 1));
}
/**
* @param array $data
*
* @return array|string
*/
public function submit($data = [])
{
$response = $this->ms2->invokeEvent('msOnSubmitOrder', [
'data' => $data,
'order' => $this,
]);
if (!$response['success']) {
return $this->error($response['message']);
}
if (!empty($response['data']['data'])) {
$this->set($response['data']['data']);
}
$response = $this->getDeliveryRequiresFields();
if ($this->ms2->config['json_response']) {
$response = json_decode($response, true);
}
if (!$response['success']) {
return $this->error($response['message']);
}
$requires = $response['data']['requires'];
$errors = [];
foreach ($requires as $v) {
if (!empty($v) && empty($this->order[$v])) {
$errors[] = $v;
}
}
if (!empty($errors)) {
return $this->error('ms2_order_err_requires', $errors);
}
$user_id = $this->ms2->getCustomerId();
if (empty($user_id) || !is_int($user_id)) {
return $this->error(is_string($user_id) ? $user_id : 'ms2_err_user_nf');
}
$cart_status = $this->ms2->cart->status();
$delivery_cost = $this->getCost(false, true);
$cart_cost = $this->getCost(true, true) - $delivery_cost;
$createdon = date('Y-m-d H:i:s');
/** @var msOrder $order */
$order = $this->modx->newObject('msOrder');
$order->fromArray([
'user_id' => $user_id,
'createdon' => $createdon,
'num' => $this->getNum(),
'delivery' => $this->order['delivery'],
'payment' => $this->order['payment'],
'cart_cost' => $cart_cost,
'weight' => $cart_status['total_weight'],
'delivery_cost' => $delivery_cost,
'cost' => $cart_cost + $delivery_cost,
'status' => 0,
'context' => $this->ms2->config['ctx'],
]);
// Adding address
/** @var msOrderAddress $address */
$address = $this->modx->newObject('msOrderAddress');
$address->fromArray(array_merge($this->order, [
'user_id' => $user_id,
'createdon' => $createdon,
]));
$order->addOne($address);
// Adding products
$cart = $this->ms2->cart->get();
$products = [];
foreach ($cart as $v) {
if ($tmp = $this->modx->getObject('msProduct', ['id' => $v['id']])) {
$name = $tmp->get('pagetitle');
} else {
$name = '';
}
/** @var msOrderProduct $product */
$product = $this->modx->newObject('msOrderProduct');
$product->fromArray(array_merge($v, [
'product_id' => $v['id'],
'name' => $name,
'cost' => $v['price'] * $v['count'],
]));
$products[] = $product;
}
$order->addMany($products);
$response = $this->ms2->invokeEvent('msOnBeforeCreateOrder', [
'msOrder' => $order,
'order' => $this,
]);
if (!$response['success']) {
return $this->error($response['message']);
}
if ($order->save()) {
$response = $this->ms2->invokeEvent('msOnCreateOrder', [
'msOrder' => $order,
'order' => $this,
]);
if (!$response['success']) {
return $this->error($response['message']);
}
$this->ms2->cart->clean();
$this->clean();
if (empty($_SESSION['minishop2']['orders'])) {
$_SESSION['minishop2']['orders'] = [];
}
$_SESSION['minishop2']['orders'][] = $order->get('id');
// Trying to set status "new"
$response = $this->ms2->changeOrderStatus($order->get('id'), 1);
if ($response !== true) {
return $this->error($response, ['msorder' => $order->get('id')]);
} else {
if ($this->ms2->config['json_response']) {
return $this->success('', ['msorder' => $order->get('id')]);
} else {
$this->modx->sendRedirect(
$this->modx->context->makeUrl($this->modx->resource->id, ['msorder' => $response['data']['msorder']])
);
return $this->success();
}
}
}
return $this->error();
}
}
Интеграция с Почтой России
Друзья, привет! Нахожусь в процессе подписания договора с Почтой — возник вопрос.
Подскажите, реализовал ли кто-то интеграцию с Почтой России (https://otpravka.pochta.ru/)?
Конкретно интересует передача заказа с моего сайта (modx, минишоп) по api в ЛК Почты России.
Подскажите, реализовал ли кто-то интеграцию с Почтой России (https://otpravka.pochta.ru/)?
Конкретно интересует передача заказа с моего сайта (modx, минишоп) по api в ЛК Почты России.