Модуль Сборки модулей TecDock

Приветствую!
Кто-то сталкивался с проблемой отображения картинок?
При включенной опции "Скрыть товары без цен" при поиске по номеру - при отображении списка найденного ни одной картинки не показывает.
Неважно, картинки из базы текдока или картинки загруженные в upload/artmedia.
Если зайти в "карточку" товара - картинка есть (текдок или upload/artmedia)
При поиске по дереву - все картинки, какие есть показываются. Но вот при прямом поиске - никак.

UPD:
При просмотре карточки фото, которое не показывалось в поиске - показывается, но в списке аналогов такая же ерунда.
Причем, система непоказа непонятна. Может не показывать как картинки текдок, так и из upload/artmedia
 
Последнее редактирование:
hi guy need help
i have to build from stratch new siteweb with tecdoc module.
i have same question if anyone can help me
- 1. what module (3.xx) and oc version is the simplest way?
- 2. i have already installed full 2016q2 on local system, how can i retrieve db tables and images from it, to upload then on mysql?
any help will aprreciate also in pm
thankyou so much
 
Hi Braccetto!
As for me, simplest way is Opencart 2.3 and module.
If you need ready-to-use MySQL base (maybe 3/2016) for module - write me in PM (36Gb)
 
Цікавить autotechnics документація на їх API або готовий модуль. можу обміняти на Техномір, Elit, BMParts.
 
По autotechnics не все так просто, якщо ви вибираєте в них товару на певну суму, тоді менеджер дасть вам документацію і доступ до API. Якщо не робите, тоді і доступу не буде...
 
<?php
///керування///
// Змінна для таймінгу підключення
$connectTimeout = 2;

// Валюта
$currency = "UAH";
// Включення/виключення кешування
$useCache = true; // За замовчуванням кешування включене

// Націнка
$markup = 0.35; // Націнка 35%
// Вибір типу округлення ціни
$priceRoundMode = 'to_10'; // Можливі варіанти: 'no_round', 'no_decimal', 'to_5', 'to_10'
// Змінна для зміни днів доставки
$deliveryOffset = 1; // За замовчуванням доставка через
+1 день

///керування//

if (!defined("TDM_PROLOG_INCLUDED") || TDM_PROLOG_INCLUDED !== true) {
die();
}

// Функція для виправлення кодування
function fix_encoding($str)
{
return iconv(mb_detect_encoding($str, mb_detect_order(), true), "UTF-8", $str);
}

// Функція для округлення ціни
function round_price($price, $mode = 'default')
{
switch ($mode) {
case 'no_round':
return ceil($price);
case 'no_decimal':
return ceil($price);
case 'to_5':
return ceil($price / 5) * 5;
case 'to_10':
return ceil($price / 10) * 10;
default:
return ceil($price);
}
}

// Функція для отримання ціни товару за артикулом і брендом
function get_price($article, $brand, $token, &$cache, $useCache = true)
{
global $connectTimeout, $currency, $markup, $priceRoundMode; // Включення валюти та націнки

if ($useCache && isset($cache[$article][$brand])) {
return $cache[$article][$brand];
}

$url = "Для просмотра ссылки Войди или Зарегистрируйся";

$postdata = array(
"apiToken" => $token,
"code" => $article,
"isShowAnalogs" => 1,
"currency" => "UAH", // Використання змінної валюти
);

if (!empty($brand)) {
$postdata['brandId'] = $brand;
}

$postdata = json_encode($postdata);

$headers = array(
"Content-Type: application/json",
"accept: application/json"
);

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_VERBOSE => false,
CURLOPT_CONNECTTIMEOUT => $connectTimeout // Використання глобальної змінної для таймінгу підключення
));
$execute = curl_exec($ch);

// Додавання логу API-запиту
if ($DocpartSuppliersAPI_Debug->suppliers_api_debug) {
$DocpartSuppliersAPI_Debug->log_api_request("Отримання переліку товарів", $url, $execute, print_r(json_decode($execute, true), true));
}

$data = json_decode($execute, true);

curl_close($ch);

if ($data['success'] !== false) {
if ($useCache) {
$cache[$article][$brand] = $data['data'];
}
return $data['data'];
} else {
return array();
}
}

// Функція для отримання інформації про продукт
function get_product_info($article, $brandId, $token)
{
global $connectTimeout;

$url = "Для просмотра ссылки Войди или Зарегистрируйся";

$postdata = array(
"apiToken" => $token,
"brandId" => $brandId,
"code" => $article
);

$postdata = json_encode($postdata);

$headers = array(
"Content-Type: application/json",
"accept: application/json"
);

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_VERBOSE => false,
CURLOPT_CONNECTTIMEOUT => $connectTimeout // Використання глобальної змінної для таймінгу підключення
));
$execute = curl_exec($ch);
curl_close($ch);

$data = json_decode($execute, true);

if ($data['success'] !== false) {
return $data['data'];
} else {
return array();
}
}

// Отримання API токену
$token = "You API Key"; // Замість You API Key вставте ваш API токен

// Кеш для результатів запитів
$cache = [];

// Перебір кожного товару
foreach ($arWsParts as $arPart) {
// Отримання бренду за артикулом
if (!isset($cache['brands'][$arPart['ARTICLE']])) {
$url = "Для просмотра ссылки Войди или Зарегистрируйся";

$postdata = array(
"apiToken" => $token,
"code" => $arPart['ARTICLE']
);

$postdata = json_encode($postdata);

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"accept: application/json"
),
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_VERBOSE => false,
CURLOPT_CONNECTTIMEOUT => $connectTimeout // Використання глобальної змінної для таймінгу підключення
));
$execute = curl_exec($ch);
curl_close($ch);

$data = json_decode($execute, true);

if ($data['success'] !== false) {
$cache['brands'][$arPart['ARTICLE']] = $data['data'];
} else {
$cache['brands'][$arPart['ARTICLE']] = array();
}
}

$manufacturers = $cache['brands'][$arPart['ARTICLE']];

foreach ($manufacturers as $manufacturer) {
$brandId = $manufacturer['brandId'];

// Отримання інформації про продукт
$productInfo = get_product_info($arPart['ARTICLE'], $brandId, $token);

// Перевірка чи інформація була успішно отримана
if (!empty($productInfo)) {
// Отримання зображення продукту
$images = $productInfo['images'];
$imageSrc = !empty($images) ? $images[0]['image'] : '';

// Отримання ціни за артикулом і брендом
$products = get_price($arPart['ARTICLE'], $brandId, $token, $cache, $useCache);

foreach ($products as $product) {
foreach ($product['rests'] as $product_rest) {
$price = (float)$product_rest["price"] * (1 + $markup); // Націнка
// Обчислення терміну доставки
$deliveryDate = new DateTime($product_rest["deliveryDate"]);
$currentDate = new DateTime();
$deliveryInterval = $deliveryDate->diff($currentDate);
$deliveryDays = $deliveryInterval->days;

// Додаткові операції та обробка ціни
$price = round_price($price, $priceRoundMode);

// Додавання товару у список
$arPrice = TDMPriceArray();
$arPrice["LINK_TO_BKEY"] = $arPart['BKEY'];
$arPrice["LINK_TO_AKEY"] = $arPart['AKEY'];
$arPrice["ARTICLE"] = $product["code"];
$arPrice["ALT_NAME"] = fix_encoding($product["descriptionUa"]);
$arPrice["BRAND"] = $manufacturer['brand'];
$arPrice["PRICE"] = $price;
$arPrice["CURRENCY"] = "UAH"; // Використання змінної валюти
$arPrice["DAY"] = $deliveryDays + $deliveryOffset; // Встановлення часу доставки
$arPrice["AVAILABLE"] = $product_rest['quantity'];
$arPrice["STOCK"] = $product_rest['priceLogo'];
$arPrice["IMG_SRC"] = $imageSrc; // Додавання зображення
$arOps = Array();
$arPrice["OPTIONS"] = TDMOptionsImplode($arOps,$arPrice);
$arPrices[] = $arPrice;
}
}
}
}
}

// Якщо кешування включено, збережемо результати у файл
//if ($useCache) {
// file_put_contents('cache.json', json_encode($cache));
//}
?>
 
<?php
///керування///
// Змінна для таймінгу підключення
$connectTimeout = 2;

// Валюта
$currency = "UAH";
// Включення/виключення кешування
$useCache = true; // За замовчуванням кешування включене

// Націнка
$markup = 0.35; // Націнка 35%
// Вибір типу округлення ціни
$priceRoundMode = 'to_10'; // Можливі варіанти: 'no_round', 'no_decimal', 'to_5', 'to_10'
// Змінна для зміни днів доставки
$deliveryOffset = 1; // За замовчуванням доставка через
+1 день

///керування//

if (!defined("TDM_PROLOG_INCLUDED") || TDM_PROLOG_INCLUDED !== true) {
die();
}

// Функція для виправлення кодування
function fix_encoding($str)
{
return iconv(mb_detect_encoding($str, mb_detect_order(), true), "UTF-8", $str);
}

// Функція для округлення ціни
function round_price($price, $mode = 'default')
{
switch ($mode) {
case 'no_round':
return ceil($price);
case 'no_decimal':
return ceil($price);
case 'to_5':
return ceil($price / 5) * 5;
case 'to_10':
return ceil($price / 10) * 10;
default:
return ceil($price);
}
}

// Функція для отримання ціни товару за артикулом і брендом
function get_price($article, $brand, $token, &$cache, $useCache = true)
{
global $connectTimeout, $currency, $markup, $priceRoundMode; // Включення валюти та націнки

if ($useCache && isset($cache[$article][$brand])) {
return $cache[$article][$brand];
}

$url = "Для просмотра ссылки Войди или Зарегистрируйся";

$postdata = array(
"apiToken" => $token,
"code" => $article,
"isShowAnalogs" => 1,
"currency" => "UAH", // Використання змінної валюти
);

if (!empty($brand)) {
$postdata['brandId'] = $brand;
}

$postdata = json_encode($postdata);

$headers = array(
"Content-Type: application/json",
"accept: application/json"
);

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_VERBOSE => false,
CURLOPT_CONNECTTIMEOUT => $connectTimeout // Використання глобальної змінної для таймінгу підключення
));
$execute = curl_exec($ch);

// Додавання логу API-запиту
if ($DocpartSuppliersAPI_Debug->suppliers_api_debug) {
$DocpartSuppliersAPI_Debug->log_api_request("Отримання переліку товарів", $url, $execute, print_r(json_decode($execute, true), true));
}

$data = json_decode($execute, true);

curl_close($ch);

if ($data['success'] !== false) {
if ($useCache) {
$cache[$article][$brand] = $data['data'];
}
return $data['data'];
} else {
return array();
}
}

// Функція для отримання інформації про продукт
function get_product_info($article, $brandId, $token)
{
global $connectTimeout;

$url = "Для просмотра ссылки Войди или Зарегистрируйся";

$postdata = array(
"apiToken" => $token,
"brandId" => $brandId,
"code" => $article
);

$postdata = json_encode($postdata);

$headers = array(
"Content-Type: application/json",
"accept: application/json"
);

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_VERBOSE => false,
CURLOPT_CONNECTTIMEOUT => $connectTimeout // Використання глобальної змінної для таймінгу підключення
));
$execute = curl_exec($ch);
curl_close($ch);

$data = json_decode($execute, true);

if ($data['success'] !== false) {
return $data['data'];
} else {
return array();
}
}

// Отримання API токену
$token = "You API Key"; // Замість You API Key вставте ваш API токен

// Кеш для результатів запитів
$cache = [];

// Перебір кожного товару
foreach ($arWsParts as $arPart) {
// Отримання бренду за артикулом
if (!isset($cache['brands'][$arPart['ARTICLE']])) {
$url = "Для просмотра ссылки Войди или Зарегистрируйся";

$postdata = array(
"apiToken" => $token,
"code" => $arPart['ARTICLE']
);

$postdata = json_encode($postdata);

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"accept: application/json"
),
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_VERBOSE => false,
CURLOPT_CONNECTTIMEOUT => $connectTimeout // Використання глобальної змінної для таймінгу підключення
));
$execute = curl_exec($ch);
curl_close($ch);

$data = json_decode($execute, true);

if ($data['success'] !== false) {
$cache['brands'][$arPart['ARTICLE']] = $data['data'];
} else {
$cache['brands'][$arPart['ARTICLE']] = array();
}
}

$manufacturers = $cache['brands'][$arPart['ARTICLE']];

foreach ($manufacturers as $manufacturer) {
$brandId = $manufacturer['brandId'];

// Отримання інформації про продукт
$productInfo = get_product_info($arPart['ARTICLE'], $brandId, $token);

// Перевірка чи інформація була успішно отримана
if (!empty($productInfo)) {
// Отримання зображення продукту
$images = $productInfo['images'];
$imageSrc = !empty($images) ? $images[0]['image'] : '';

// Отримання ціни за артикулом і брендом
$products = get_price($arPart['ARTICLE'], $brandId, $token, $cache, $useCache);

foreach ($products as $product) {
foreach ($product['rests'] as $product_rest) {
$price = (float)$product_rest["price"] * (1 + $markup); // Націнка
// Обчислення терміну доставки
$deliveryDate = new DateTime($product_rest["deliveryDate"]);
$currentDate = new DateTime();
$deliveryInterval = $deliveryDate->diff($currentDate);
$deliveryDays = $deliveryInterval->days;

// Додаткові операції та обробка ціни
$price = round_price($price, $priceRoundMode);

// Додавання товару у список
$arPrice = TDMPriceArray();
$arPrice["LINK_TO_BKEY"] = $arPart['BKEY'];
$arPrice["LINK_TO_AKEY"] = $arPart['AKEY'];
$arPrice["ARTICLE"] = $product["code"];
$arPrice["ALT_NAME"] = fix_encoding($product["descriptionUa"]);
$arPrice["BRAND"] = $manufacturer['brand'];
$arPrice["PRICE"] = $price;
$arPrice["CURRENCY"] = "UAH"; // Використання змінної валюти
$arPrice["DAY"] = $deliveryDays + $deliveryOffset; // Встановлення часу доставки
$arPrice["AVAILABLE"] = $product_rest['quantity'];
$arPrice["STOCK"] = $product_rest['priceLogo'];
$arPrice["IMG_SRC"] = $imageSrc; // Додавання зображення
$arOps = Array();
$arPrice["OPTIONS"] = TDMOptionsImplode($arOps,$arPrice);
$arPrices[] = $arPrice;
}
}
}
}
}

// Якщо кешування включено, збережемо результати у файл
//if ($useCache) {
// file_put_contents('cache.json', json_encode($cache));
//}
?>
Можна додати ще додаткові характеристики (включити за потреби в адмін панелі)
Код:
if($product['weight']>0){$arOps['WEIGHT']=($product['weight']*1000);}
if($probability>0){$arOps['PERCENTGIVE']=intval($probability);}
if($product_rest['isReturn']>0){$arOps['NORETURN']=$product_rest['isReturn'];}
if($imageSrc>0){$arOps["IMG_SRC"]=$imageSrc;}
 
Можна додати ще додаткові характеристики (включити за потреби в адмін панелі)
Код:
if($product['weight']>0){$arOps['WEIGHT']=($product['weight']*1000);}
if($probability>0){$arOps['PERCENTGIVE']=intval($probability);}
if($product_rest['isReturn']>0){$arOps['NORETURN']=$product_rest['isReturn'];}
if($imageSrc>0){$arOps["IMG_SRC"]=$imageSrc;}
if($imageSrc>0){$arOps["IMG_SRC"]=$imageSrc; реалізовано $arPrice["IMG_SRC"] = $imageSrc; // Додавання зображення
Перевірка ваги товару, Перевірка ймовірності, Перевірка на повернення товару, якщо через api це передається то можна.
if($product['weight']>0){$arOps['WEIGHT']=($product['weight']*1000);}
if($probability>0){$arOps['PERCENTGIVE']=intval($probability);}
if($product_rest['isReturn']>0){$arOps['NORETURN']=$product_rest['isReturn'];}
 
Назад
Сверху