0 Пользователей и 2 Гостей просматривают эту тему.
  • 791 Ответов
  • 135263 Просмотров
*

bombapiter

  • Захожу иногда
  • 71
  • 0 / 0
Добрый день, подскажите, после установки com_virtuemart и com_virtuemart_aio, версии 3.4.5.10063, перестает работать скрипт генерирующий YML. При запуске скрипта выводится ошибка: Error: Call to undefined method Error::get(): Class ‘vmVersion’ not found.


Такая же ошибка... Можно ли как исправить?
*

zikkuratvk

  • Глобальный модератор
  • 4819
  • 344 / 2
  • Обслуживаем проекты - дорого.
Можете просто использовать бесплатный компонент https://joomline.net/ru/extensions/yandex-market-xml.html поддержка virtuemart 3 и выше присутствует.
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

russss

  • Новичок
  • 1
  • 0 / 0
хочу сказать спасибо разработчику за этот плагин!
а во вторых написать решение проблем, с которыми могут столкнуться пользователи при обновлении компонента VirtueMart. (по мотивам моего общения с Сергеем)
Итак, после обновления версии выйдет ошибка: Class 'vmVersion' not found
Во-первых, переносим файлы скрипта в корень.
Далее вносим изменения в сам скрипт
заменяем $version = substr(vmVersion::$RELEASE, 0, 1);
 на
$version = 3;
и  правим пути
define('JPATH_BASE', dirname(FILE).DS.'..');
заменяем на
define('JPATH_BASE', dirname(FILE));

Если хотите, чтобы XML файл формировался также в папке /market/
в конце редактируем эту строчку и правим путь.

   $xml_file = fopen('market/vm2_market.xml', 'w+');

Проверено на virtuemart 3.6.10 10211 и joomla 3.9.14
« Последнее редактирование: 06.01.2020, 09:48:59 от russss »
*

bgg87

  • Захожу иногда
  • 164
  • 2 / 0
  • Истина где-то рядом...
Можете просто использовать бесплатный компонент https://joomline.net/ru/extensions/yandex-market-xml.html поддержка VirtueMart 3 и выше присутствует.

После обновления и с этим компонентом возникает проблема:

Цитировать
revision: 6470735; Build date: 2020-03-10T15:46:26.000000Z (строка 0, столбец 0)
categories type: Unmmaped (строка 13, столбец 32)
20 has parent_id 128 which is not an existing category id. This parent_id will be removed. (строка 15, столбец 42)
scheme: delivery-options (строка 19, столбец 24)

Joomla! ‎3.9.12
VirtueMart 3.6.10 10211
Yandex Market XML Версия: 2.0.0
*

Pizzadox

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
Добрый день, не подскажите как у товаров брать description и доп поля товаров и если они пустые, то оставлять пустым значение
Сейчас у меня не используется на сайте description для товаров, так оно и не отображается в выводе файла.
« Последнее редактирование: 01.05.2020, 16:59:25 от Pizzadox »
*

qcsbs-n

  • Новичок
  • 6
  • 0 / 0
Здравствуйте.
Как добавить в выгрузку цвет товара (Маркет начал требовать указание цвета)?
Например, я сделал дополнительное поле на сайте (виртуэмарт 2х..) с переменной color2. Как мне ее добавить в выгрузку, чтобы она отображалась в прайс-листе?
*

WooSuuP

  • Захожу иногда
  • 235
  • 11 / 1
  • Ословед Интерсвязи
Скачать
Срок регистрации домена кончился. Перезалей в облако пожалуйста!
*

djed9

  • Захожу иногда
  • 116
  • 2 / 0
Ребята, подскажите, как в выгрузке сделать, что бы товары не выгружались по производителям, что бы все товары определенного производителя выпадали из выгрузки?
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Срок регистрации домена кончился. Перезалей в облако пожалуйста!
Скачать

Старая версия

*

GeezMore

  • Новичок
  • 2
  • 0 / 0
Скопировал файл в корень. Попробовал обратиться к нему через браузер, ошибка 500.
Цитирую:
Цитировать
Произошла критическая ошибка
The server returned a "500 - Whoops, looks like something went wrong."
J! 4, VM4
В консоли следующее вижу:
Цитировать
Failed to load resource: the server responded with a status of 500 () v,4_market.php:1
Подскажите, что я делаю не так?
С уважением, Олег
*

anantaya

  • Новичок
  • 3
  • 0 / 0
Благодарю!
*

strongest

  • Новичок
  • 5
  • 0 / 0
Скачать

Старая версия



для Joomla 4 есть? 500 ошибка при вызове скрипта.


UPD вопрос решил, вот код если кому нужно

Код
<?php
/**
 * version 4
 * author Sergey Bordyzhan (bordyzhan@gmail.com)
 *
 * Donate:
 * Z272730060230 вебмани
 * 410011118020069 Юmoney
 */

define('NAME', 'Название организации'); // название организации (не должно превышать 20 символов)
define('DESC', 'Описание организации'); // описание организации
define('CURRENCY', 'USD'); // валюта магазина (RUB, USD, EUR, UAH, KZT)
define('DELIVERY', 'false'); // наличие доставки в магазине (true - есть, false - нет)
define('EXCLUDE_CAT', '0'); // id категорий которые нужно исключить из выгрузки, перечислить через запятую, например define('EXCLUDE_CAT', '2,8,54,5')
define('EXCLUDE_PROD', '0'); // id товаров которые нужно исключить из выгрузки, перечислить через запятую, например define('EXCLUDE_PROD', '2,8,54,5')
define('FILE', 0); // 1 если нужно cоздать файл vm4_market.xml, 0 - выввод xml в браузер

define('_JEXEC', 1);

if (!defined('_JDEFINES'))
{
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';

use \Joomla\CMS\Factory;


// Boot the DI container
$container = \Joomla\CMS\Factory::getContainer();
$container->alias('session.web', 'session.web.site')
->alias('session', 'session.web.site')
->alias('JSession', 'session.web.site')
->alias(\Joomla\CMS\Session\Session::class, 'session.web.site')
->alias(\Joomla\Session\Session::class, 'session.web.site')
->alias(\Joomla\Session\SessionInterface::class, 'session.web.site');
// Instantiate the application.
$app = $container->get(\Joomla\CMS\Application\SiteApplication::class);
// $session = $container->get(\Joomla\CMS\Session\Session::class);

// Set the application as global app
\Joomla\CMS\Factory::$application = $app;
$app->createExtensionNamespaceMap();

// $app->initialise();
require_once(JPATH_ADMINISTRATOR.'/components/com_virtuemart/helpers/config.php');
require_once(JPATH_ADMINISTRATOR.'/components/com_virtuemart/helpers/calculationh.php');

VmConfig::loadConfig();

require_once(JPATH_ADMINISTRATOR.'/components/com_virtuemart/models/product.php');
$model = new VirtueMartModelProduct();
$lang = VmConfig::$defaultLang;

$db = Factory::getContainer()->get('DatabaseDriver');
$live_site = trim(Joomla\CMS\Uri\Uri::root(), '/');
$calculator = calculationHelper::getInstance();

function getImages($id) {

global $db, $live_site;

$query = 'SELECT a.file_url FROM #__virtuemart_medias a JOIN #__virtuemart_product_medias b ON b.virtuemart_media_id = a.virtuemart_media_id WHERE a.published = 1 AND b.virtuemart_product_id = '.$id.' ORDER BY b.ordering, b.id LIMIT 10';
$db->setQuery($query);
$rows = $db->loadObjectList();

$media = '';

if ($rows) {
foreach ($rows as $row) {
$media .= '<picture>'.$live_site.'/'.htmlspecialchars(str_replace(' ', '%20', $row->file_url)).'</picture>'."\n";
}
}

return $media;
}

if (!FILE) {
ob_start('ob_gzhandler', 9);
header('Content-Type: application/xml; charset=utf-8');
} else {
header('Content-Type: text/html; charset=UTF-8');
}

$xml = '<?xml version="1.0" encoding="utf-8"?>'."\n";
$xml .= '<yml_catalog date="'.date('Y-m-d H:i').'">'."\n";
$xml .= '<shop>'."\n";
$xml .= '<name>'.htmlspecialchars(NAME, 0, 20, 'UTF-8').'</name>'."\n";
$xml .= '<company>'.htmlspecialchars(DESC).'</company>'."\n";
$xml .= '<url>'.$live_site.'</url>'."\n";
$xml .= '<currencies>'."\n";
$xml .= '<currency id="'.CURRENCY.'" rate="1"/>'."\n";
$xml .= '</currencies>'."\n";
$xml .= '<categories>'."\n";

$query = 'SELECT a.category_parent_id, a.category_child_id, b.category_name FROM #__virtuemart_category_categories a RIGHT JOIN #__virtuemart_categories_'.$lang.' b ON b.virtuemart_category_id = a.category_child_id WHERE a.category_child_id NOT IN ('.EXCLUDE_CAT.') ORDER BY a.category_child_id';
$db->setQuery($query);
$rows = $db->loadObjectList();

$exclude_cat_arr = explode(',', EXCLUDE_CAT);

foreach ($rows as $row) {
$cat_parent_id = $row->category_parent_id;
$cat_child_id = $row->category_child_id;
$cat_name = htmlspecialchars(trim(strip_tags($row->category_name)));

if ($cat_parent_id == 0 || in_array($cat_parent_id, $exclude_cat_arr)) {
$xml .= '<category id="'.$cat_child_id.'">'.$cat_name.'</category>'."\n";
} else {
$xml .= '<category id="'.$cat_child_id.'" parentId="'.$cat_parent_id.'">'.$cat_name.'</category>'."\n";
}
}

$xml .= '</categories>'."\n";
$xml .= '<offers>'."\n";

$query = 'SELECT DISTINCT a.virtuemart_product_id, a.product_parent_id, a.product_sku, a.virtuemart_vendor_id, a.product_in_stock, b.product_name, b.product_desc, d.product_tax_id, d.product_discount_id, d.product_price, d.product_override_price, d.override, d.product_currency, e.mf_name, e.virtuemart_manufacturer_id, g.virtuemart_category_id FROM (#__virtuemart_product_categories g LEFT JOIN (#__virtuemart_product_prices d RIGHT JOIN ((#__virtuemart_product_manufacturers f RIGHT JOIN #__virtuemart_products a ON f.virtuemart_product_id = a.virtuemart_product_id) LEFT JOIN #__virtuemart_manufacturers_'.$lang.' e ON f.virtuemart_manufacturer_id = e.virtuemart_manufacturer_id LEFT JOIN #__virtuemart_products_'.$lang.' b ON b.virtuemart_product_id = a.virtuemart_product_id) ON d.virtuemart_product_id = a.virtuemart_product_id) ON g.virtuemart_product_id = a.virtuemart_product_id) WHERE a.published = 1 AND d.product_price > 0 AND b.product_name <> \'\' AND g.virtuemart_category_id NOT IN ('.EXCLUDE_CAT.') AND a.virtuemart_product_id NOT IN ('.EXCLUDE_PROD.') GROUP BY a.virtuemart_product_id';
$db->setQuery($query);
$rows = $db->loadObjectList();

foreach ($rows as $row) {

$product_name = htmlspecialchars(trim(strip_tags($row->product_name)));

$product_id = $row->virtuemart_product_id;
$product_cat_id = $row->virtuemart_category_id;
$row->categories = array($product_cat_id);

$model->getRawProductPrices($row, 0, array(1), 1);

$prices = $calculator->getProductPrices($row);

$type = $row->mf_name ? ' type="vendor.model"' : '';
$url = $live_site.JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product_id.'&virtuemart_category_id='.$product_cat_id);

//$available = $row->product_in_stock > 0 ? 'true' : 'false';
//$xml .= '<offer'.$type.' id="'.$product_id.'" available="'.$available.'">'."\n";

$xml .= '<offer'.$type.' id="'.$product_id.'" available="true">'."\n";
$xml .= '<url>'.$url.'</url>'."\n";
$xml .= '<price>'.$prices['salesPrice'].'</price>'."\n";
$xml .= '<currencyId>'.CURRENCY.'</currencyId>'."\n";
$xml .= '<categoryId>'.$product_cat_id.'</categoryId>'."\n";

$xml .= getImages($product_id);

$xml .= '<delivery>'.DELIVERY.'</delivery>'."\n";

if ($row->mf_name) {
$xml .= '<vendor>'.htmlspecialchars($row->mf_name).'</vendor>'."\n";
$xml .= '<model>'.$product_name.'</model>'."\n";
} else {
$xml .= '<name>'.$product_name.'</name>'."\n";
}

//$xml .= '<vendorCode>'.htmlspecialchars($row->product_sku).'</vendorCode>';

if ($row->product_desc) {
$xml .= '<description><![CDATA['.$row->product_desc.']]></description>'."\n";
}

$xml .= '</offer>'."\n";
}

$xml .= '</offers>'."\n";
$xml .= '</shop>'."\n";
$xml .= '</yml_catalog>';

if (FILE) {
$xml_file = fopen('vm4_market.xml', 'w+');

if (!$xml_file) {
echo 'Ошибка открытия файла';
} else {
ftruncate($xml_file, 0);
fputs($xml_file, $xml);

echo 'Файл создан, url - <a href="'.$live_site.'/vm4_market.xml">'.$live_site.'/vm4_market.xml</a>';
}

fclose($xml_file);
} else {
echo $xml;
}
« Последнее редактирование: 03.07.2023, 10:42:25 от strongest »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT VirtueMart Bitrix24, плагин интеграции с CRM Битрикс24

Автор sergeytolkachyov

Ответов: 1
Просмотров: 2379
Последний ответ 17.11.2023, 10:27:16
от sergeytolkachyov
Ошибка после перехода в корзину VirtueMart

Автор max_max

Ответов: 4
Просмотров: 1970
Последний ответ 07.09.2021, 18:50:25
от max_max
Кнопки операций в VirtueMart не реагируют на клик

Автор max_max

Ответов: 0
Просмотров: 1896
Последний ответ 30.08.2021, 09:43:21
от max_max
Привязка товаров к категориям при импорте из csv

Автор max_max

Ответов: 8
Просмотров: 2306
Последний ответ 16.08.2021, 18:45:19
от max_max
csvi Pro 7.3.0. Игнорирование существующих полей пи импорте товаров

Автор Viktor

Ответов: 2
Просмотров: 2314
Последний ответ 13.12.2019, 22:44:43
от AlexB