Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

С тех пор, как в поисковиках появились нейроответы ИИ, трафик на сайты стал гораздо меньше, так как пользователь стал получать информацию непосредственно на странице поисковика без перехода на сайт. Но при генерации ответа ИИ указывает источники - ссылки на сайты, информация которых была использована для генерации ответа.

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

В начале февраля 2026г. был вебинар с Михаилом Сливинским - амбассадором Поиска Яндекса, и в рамках вебинара была озвучена просьба сделать такой инструмент. Скорее всего разработка на тот момент уже велась, потому что от просьбы до релиза прошло около 2-х месяцев. В любом случае хорошо, что такая статистика появилась.

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Пользуюсь коннектором от Дашука. У меня внутри родительского товара есть дочерние, категорией которых является сам родитель. Яндекс ругается на это, мол, не существует такой категории.
Вот решил приписать дочерей к категории родителя и заодно выводить цены с учетом скидки.
Может быть, велосипед изобрел, но все равно выкладываю код.
Код
<?php
//***********************************************************
//
// Версия коннектора к Yandex.Market от 18.04.2009
// автор доработок Саид Дашук (dashuk@ngs.ru)
//
// Доработки:
// 1. Подключение к настройкам Joomla (теперь не надо прописывать реквизиты доступа к БД,
//         а достаточно указать конфигурационный файл 'configuration.php')
// 2. Добавлены комментарии для новичков
// 3. ВЫБОРКА ВСЕХ ТОВАРОВ ПРОИСХОДИТ ОДНИМ ЗАПРОСОМ!
// 4. Добавлен шаблон для описания товара (тег <description>)
// 5. Курсы валют, приравнены к курсу ЦБРФ
// 6. Добавлены теги "доставка" и "производитель" (просто мне они нужны, а Вы решайте сами)
// а также: форматирование для удобства кода и вывода и еще что то по мелочам.
//
// Проверялось на Joomla! 1.5.9 Production/Stable / VirtueMart 1.1.2 stable
//
// а также:
// - прикрутить дочерние товары к категории родительского.
// - выводить цены с учетом скидки.
//
// Проверялось на Joomla! 1.5.26 / VirtueMart 1.1.3 robert'ом (nrobert@mail.ru)
//
//***********************************************************
 
 
// Пропишите относительный путь к 'configuration.php' (он находится в корне Joomla)
// Например: include '../configuration.php';
include 'configuration.php';
$cfg = new JConfig();
 
//NAME - Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров.
//Не должно содержать более 20 символов). Нельзя использовать слова, не имеющие отношения к
//наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина,
//должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении
//данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента.
$cfg_name = $cfg->fromname;
 
//Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации.
$cfg_company = $cfg->sitename;
 
//URL-адрес главной страницы магазина без http://
$cfg_url = 'мой_сайт.ru';
 
// Шаблон для описания товара
// Вместо {product_name} - будет вставлено наименование товара
// Вместо {product_desc} - будет вставлено краткое описание
// ПРИМЕР:
// $description_template = '{product_name} от производителя';
$description_template = '{product_desc}';
 
// Ставка за клик (в центах)
// $bid = '11';
 
 
$hostname = $cfg->host;
$username = $cfg->user;
$password = $cfg->password;
$dbName = $cfg->db;
$category = $cfg->dbprefix."vm_category";
$category_xref = $cfg->dbprefix."vm_category_xref";
$userstable = $cfg->dbprefix."vm_product";
$pricetable = $cfg->dbprefix."vm_product_price";
[color=red]$product_discount = $cfg->dbprefix."vm_product_discount";[/color]
$product_category_xref = $cfg->dbprefix."vm_product_category_xref";
 
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
 
// Исправьте, если у вас другая кодировка в БД
mysql_query('set names utf8');
 
echo"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo"<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n";
echo"<yml_catalog date=\"";
echo date('Y-m-d H:i');
echo"\">\n";
echo"<shop>\n";
echo"<name>$cfg_name</name>\n";
echo"<company>$cfg_company</company>\n";
echo"<url>$cfg_url</url>\n";
 
// курсы валют, приравнены к курсу ЦБРФ
echo"<currencies>\n";
echo"<currency  id=\"RUR\" rate=\"1\"/>\n";
echo"<currency  id=\"USD\" rate=\"CBRF\"/>\n";
echo"<currency  id=\"EUR\" rate=\"CBRF\"/>\n";
echo"</currencies>\n";
 
// Секция категорий
echo"<categories>\n";
$query_cat = "SELECT * FROM $category_xref";
$res_cat = mysql_query($query_cat) or die(mysql_error());
$rw=1;
while ($row_cat=mysql_fetch_array($res_cat)) {
$cat_parent_id=$row_cat['category_parent_id'];
$cat_child_id=$row_cat['category_child_id'];
$query2 = "SELECT category_name FROM $category WHERE category_id=".$row_cat['category_child_id'];
$res_cat1 = mysql_query($query2) or die(mysql_error());
$name_cat=mysql_fetch_array($res_cat1);
$cat_name=$name_cat['category_name'];
if ($cat_parent_id==0) {
echo"<category id=\"".$cat_child_id."\">".$cat_name."</category>\n";
}
else {
echo"<category id=\"".$cat_child_id."\" parentId=\"".$cat_parent_id."\">".$cat_name."</category>\n";
}
$rw++;
}
echo"</categories>\n";
 
// Секция описания товаров
echo"<offers>\n";
 
$tb_product = $cfg->dbprefix."vm_product";
$tb_manufacturer = $cfg->dbprefix."vm_manufacturer";
$tb_product_mf_xref = $cfg->dbprefix."vm_product_mf_xref";
$tb_category = $cfg->dbprefix."vm_category";
$tb_product_category_xref = $cfg->dbprefix."vm_product_category_xref";
$tb_price = $cfg->dbprefix."vm_product_price";
 
$query = "
SELECT
$tb_product.product_id,
[color=red]$tb_product.product_parent_id,[/color]
$tb_product.product_name,
$tb_manufacturer.mf_name,
$tb_manufacturer.manufacturer_id,
$tb_category.category_name,
$tb_category.category_id,
$tb_product_category_xref.category_id,
$tb_price.product_price,
[color=red]$tb_product.product_discount_id,[/color]
$tb_product.product_sku,
$tb_product.product_in_stock,
$tb_product.product_unit,
$tb_product.product_full_image,
$tb_product.product_s_desc,
$tb_product.product_weight
FROM
($tb_product_category_xref
RIGHT JOIN ($tb_price
RIGHT JOIN (($tb_product_mf_xref
RIGHT JOIN $tb_product
ON $tb_product_mf_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_manufacturer
ON $tb_product_mf_xref.manufacturer_id = $tb_manufacturer.manufacturer_id)
ON $tb_price.product_id = $tb_product.product_id)
ON $tb_product_category_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_category
ON $tb_product_category_xref.category_id = $tb_category.category_id
WHERE $tb_product.product_publish='Y'
";
 
$row = d2a($query);
$product_log = Array();
for($i=0;$i<count($row);$i++) {
if (!in_array($row[$i]['product_id'],$product_log) AND ($row[$i]['product_price'])) {
$product_log[] = $row[$i]['product_id'];
 
$url="http://$cfg_url/index.php?page=shop.product_details&amp;flypage=shop.flypage&amp;option=com_virtuemart&amp;product_id=".$row[$i]['product_id'];
//$url="http://$cfg_url/client?page=shop.product_details&flypage=flypage-ask.tpl&product_id=".$row[$i]['product_id']."&category_id=".$row[$i]['category_id']."&manufacturer_id=".$row[$i]['manufacturer_id'];
 
$product_full_image = "http://$cfg_url/components/com_virtuemart/shop_image/product/".$row[$i]['product_full_image'];
$tags = Array ('{product_name}','{product_desc}');
$repl = Array ($row[$i]['product_name'],$row[$i]['product_s_desc']);
[color=red]$query3 = "SELECT amount FROM $product_discount WHERE discount_id = ".$row[$i]['product_discount_id'];
$res_discount = mysql_query($query3) or die(mysql_error());
$fetch_discount = mysql_fetch_array($res_discount);
$discount_amount = $fetch_discount['amount'];
if($discount_amount == 0) {
$product_price = substr($row[$i]['product_price'], 0, -3);
} else {
$product_price = substr($row[$i]['product_price'], 0, -3) - $discount_amount;
}
$query4 = "SELECT category_id FROM $product_category_xref WHERE product_id = ".$row[$i]['product_parent_id'];
$res_cat2 = mysql_query($query4) or die(mysql_error());
$id_cat=mysql_fetch_array($res_cat2);
$cat_id=$id_cat['category_id'];
if($row[$i]['category_id']) {
$product_cat_id=$row[$i]['category_id'];
} else {
$product_cat_id=$cat_id;
}[/color]
// echo"\n<offer id=\"".$row[$i]['product_id']."\" available=\"true\" bid=\"$bid\">\n";
echo"\n<offer id=\"".$row[$i]['product_id']."\" available=\"true\">\n";
echo"<url>".$url."</url>\n";
echo"<price>$product_price</price>\n";
// Валюта в которой указаны Ваши цены
echo"<currencyId>RUR</currencyId>\n";
echo"<categoryId>".$product_cat_id."</categoryId>\n";
echo"<picture>".$product_full_image ."</picture>\n";
// Возможность доставки
echo"<delivery>true</delivery> \n";
echo"<name>".strip_tags($row[$i]['product_name'])."\"</name>\n";
echo"<description>".strip_tags(str_replace($tags,$repl,$description_template))."</description>\n";
echo"</offer>\n";
}
}
 
echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";
 
function d2a($query){
    $result = mysql_query($query) or die("Query failed : " . mysql_error());
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {$res[] = $line;}
    mysql_free_result($result);
    return $res;
}
 
?>
Надеюсь, кому-то пригодится.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Извините, сдуру добавил теги [color] в код.
Вот рабочий код
Код
<?php
//***********************************************************
//
// Версия коннектора к Yandex.Market от 18.04.2009
// автор доработок Саид Дашук (dashuk@ngs.ru)
//
// Доработки:
// 1. Подключение к настройкам Joomla (теперь не надо прописывать реквизиты доступа к БД,
//         а достаточно указать конфигурационный файл 'configuration.php')
// 2. Добавлены комментарии для новичков
// 3. ВЫБОРКА ВСЕХ ТОВАРОВ ПРОИСХОДИТ ОДНИМ ЗАПРОСОМ!
// 4. Добавлен шаблон для описания товара (тег <description>)
// 5. Курсы валют, приравнены к курсу ЦБРФ
// 6. Добавлены теги "доставка" и "производитель" (просто мне они нужны, а Вы решайте сами)
// а также: форматирование для удобства кода и вывода и еще что то по мелочам.
//
// Проверялось на Joomla! 1.5.9 Production/Stable / VirtueMart 1.1.2 stable
//
// а также:
// - прикрутить дочерние товары к категории родительского.
// - выводить цены с учетом скидки.
//
// Проверялось на Joomla! 1.5.26 / VirtueMart 1.1.3 robert'ом (nrobert@mail.ru)
//
//***********************************************************
 
 
// Пропишите относительный путь к 'configuration.php' (он находится в корне Joomla)
// Например: include '../configuration.php';
include 'configuration.php';
$cfg = new JConfig();
 
//NAME - Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров.
//Не должно содержать более 20 символов). Нельзя использовать слова, не имеющие отношения к
//наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина,
//должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении
//данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента.
$cfg_name = $cfg->fromname;
 
//Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации.
$cfg_company = $cfg->sitename;
 
//URL-адрес главной страницы магазина без http://
$cfg_url = 'мой_сайт.ru';
 
// Шаблон для описания товара
// Вместо {product_name} - будет вставлено наименование товара
// Вместо {product_desc} - будет вставлено краткое описание
// ПРИМЕР:
// $description_template = '{product_name} от производителя';
$description_template = '{product_desc}';
 
// Ставка за клик (в центах)
// $bid = '11';
 
 
$hostname = $cfg->host;
$username = $cfg->user;
$password = $cfg->password;
$dbName = $cfg->db;
$category = $cfg->dbprefix."vm_category";
$category_xref = $cfg->dbprefix."vm_category_xref";
$userstable = $cfg->dbprefix."vm_product";
$pricetable = $cfg->dbprefix."vm_product_price";
$product_discount = $cfg->dbprefix."vm_product_discount";
$product_category_xref = $cfg->dbprefix."vm_product_category_xref";
 
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
 
// Исправьте, если у вас другая кодировка в БД
mysql_query('set names utf8');
 
echo"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo"<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n";
echo"<yml_catalog date=\"";
echo date('Y-m-d H:i');
echo"\">\n";
echo"<shop>\n";
echo"<name>$cfg_name</name>\n";
echo"<company>$cfg_company</company>\n";
echo"<url>$cfg_url</url>\n";
 
// курсы валют, приравнены к курсу ЦБРФ
echo"<currencies>\n";
echo"<currency  id=\"RUR\" rate=\"1\"/>\n";
echo"<currency  id=\"USD\" rate=\"CBRF\"/>\n";
echo"<currency  id=\"EUR\" rate=\"CBRF\"/>\n";
echo"</currencies>\n";
 
// Секция категорий
echo"<categories>\n";
$query_cat = "SELECT * FROM $category_xref";
$res_cat = mysql_query($query_cat) or die(mysql_error());
$rw=1;
while ($row_cat=mysql_fetch_array($res_cat)) {
$cat_parent_id=$row_cat['category_parent_id'];
$cat_child_id=$row_cat['category_child_id'];
$query2 = "SELECT category_name FROM $category WHERE category_id=".$row_cat['category_child_id'];
$res_cat1 = mysql_query($query2) or die(mysql_error());
$name_cat=mysql_fetch_array($res_cat1);
$cat_name=$name_cat['category_name'];
if ($cat_parent_id==0) {
echo"<category id=\"".$cat_child_id."\">".$cat_name."</category>\n";
}
else {
echo"<category id=\"".$cat_child_id."\" parentId=\"".$cat_parent_id."\">".$cat_name."</category>\n";
}
$rw++;
}
echo"</categories>\n";
 
// Секция описания товаров
echo"<offers>\n";
 
$tb_product = $cfg->dbprefix."vm_product";
$tb_manufacturer = $cfg->dbprefix."vm_manufacturer";
$tb_product_mf_xref = $cfg->dbprefix."vm_product_mf_xref";
$tb_category = $cfg->dbprefix."vm_category";
$tb_product_category_xref = $cfg->dbprefix."vm_product_category_xref";
$tb_price = $cfg->dbprefix."vm_product_price";
 
$query = "
SELECT
$tb_product.product_id,
$tb_product.product_parent_id,
$tb_product.product_name,
$tb_manufacturer.mf_name,
$tb_manufacturer.manufacturer_id,
$tb_category.category_name,
$tb_category.category_id,
$tb_product_category_xref.category_id,
$tb_price.product_price,
$tb_product.product_discount_id,
$tb_product.product_sku,
$tb_product.product_in_stock,
$tb_product.product_unit,
$tb_product.product_full_image,
$tb_product.product_s_desc,
$tb_product.product_weight
FROM
($tb_product_category_xref
RIGHT JOIN ($tb_price
RIGHT JOIN (($tb_product_mf_xref
RIGHT JOIN $tb_product
ON $tb_product_mf_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_manufacturer
ON $tb_product_mf_xref.manufacturer_id = $tb_manufacturer.manufacturer_id)
ON $tb_price.product_id = $tb_product.product_id)
ON $tb_product_category_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_category
ON $tb_product_category_xref.category_id = $tb_category.category_id
WHERE $tb_product.product_publish='Y'
";
 
$row = d2a($query);
$product_log = Array();
for($i=0;$i<count($row);$i++) {
if (!in_array($row[$i]['product_id'],$product_log) AND ($row[$i]['product_price'])) {
$product_log[] = $row[$i]['product_id'];
 
$url="http://$cfg_url/index.php?page=shop.product_details&amp;flypage=shop.flypage&amp;option=com_virtuemart&amp;product_id=".$row[$i]['product_id'];
//$url="http://$cfg_url/client?page=shop.product_details&flypage=flypage-ask.tpl&product_id=".$row[$i]['product_id']."&category_id=".$row[$i]['category_id']."&manufacturer_id=".$row[$i]['manufacturer_id'];
 
$product_full_image = "http://$cfg_url/components/com_virtuemart/shop_image/product/".$row[$i]['product_full_image'];
$tags = Array ('{product_name}','{product_desc}');
$repl = Array ($row[$i]['product_name'],$row[$i]['product_s_desc']);
$query3 = "SELECT amount FROM $product_discount WHERE discount_id = ".$row[$i]['product_discount_id'];
$res_discount = mysql_query($query3) or die(mysql_error());
$fetch_discount = mysql_fetch_array($res_discount);
$discount_amount = $fetch_discount['amount'];
if($discount_amount == 0) {
$product_price = substr($row[$i]['product_price'], 0, -3);
} else {
$product_price = substr($row[$i]['product_price'], 0, -3) - $discount_amount;
}
$query4 = "SELECT category_id FROM $product_category_xref WHERE product_id = ".$row[$i]['product_parent_id'];
$res_cat2 = mysql_query($query4) or die(mysql_error());
$id_cat=mysql_fetch_array($res_cat2);
$cat_id=$id_cat['category_id'];
if($row[$i]['category_id']) {
$product_cat_id=$row[$i]['category_id'];
} else {
$product_cat_id=$cat_id;
}
// echo"\n<offer id=\"".$row[$i]['product_id']."\" available=\"true\" bid=\"$bid\">\n";
echo"\n<offer id=\"".$row[$i]['product_id']."\" available=\"true\">\n";
echo"<url>".$url."</url>\n";
echo"<price>$product_price</price>\n";
// Валюта в которой указаны Ваши цены
echo"<currencyId>RUR</currencyId>\n";
echo"<categoryId>".$product_cat_id."</categoryId>\n";
echo"<picture>".$product_full_image ."</picture>\n";
// Возможность доставки
echo"<delivery>true</delivery> \n";
echo"<name>".strip_tags($row[$i]['product_name'])."\"</name>\n";
echo"<description>".strip_tags(str_replace($tags,$repl,$description_template))."</description>\n";
echo"</offer>\n";
}
}
 
echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";
 
function d2a($query){
    $result = mysql_query($query) or die("Query failed : " . mysql_error());
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {$res[] = $line;}
    mysql_free_result($result);
    return $res;
}
 
?>
Не будь паразитом, сделай что-нибудь самостоятельно!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Строки 172, 173, 174, 176 лишние.
Из
Код
if($discount_amount == 0) {
$product_price = substr($row[$i]['product_price'], 0, -3);
} else {
$product_price = substr($row[$i]['product_price'], 0, -3) - $discount_amount;
}
оставьте только
Код
		$product_price = substr($row[$i]['product_price'], 0, -3) - $discount_amount;
Не будь паразитом, сделай что-нибудь самостоятельно!
*

faraon_x

  • Захожу иногда
  • 362
  • 27 / 1
  • Чем смогу, тем помогу )))
Всем привет!
Подскажите кто сделал все таки, чтобы в категории у дочернего товара выводились id категории и описание родительского товара (или что-нибудь одно, второе сделаю по аналогии)?
Код
<?php
//Пропишите для своей БД, пропишите наименование магазина, про адрес www.**********.ru тоже не забудьте
$hostname = "########";
$username = "########";
$password = "########";
$dbName = "########";
$category = "jos_vm_category";
$category_xref = "jos_vm_category_xref";
$userstable = "jos_vm_product";
$pricetable = "jos_vm_product_price";

$product_category_xref =  "jos_vm_product_category_xref";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
//mysql_query('set names utf8');

include '../configuration.php';

$cfg = new JConfig();


echo"<?xml version='1.0' encoding='windows-1251'?>\n";
echo"<!DOCTYPE yml_catalog SYSTEM 'shops.dtd'>\n";
echo"<yml_catalog date=\"";
echo date('Y-m-d H:i');
echo"\">\n";
echo"<shop>\n";
//Здесь название магазина
echo"<name>############</name>\n";
echo"<company>########</company>\n";
echo"<url>###########</url>\n";
echo"<currencies>\n";
echo"<currency  id=\"RUR\" rate=\"1\"/>\n";
echo"<currency  id=\"USD\" rate=\"CBRF\"/>\n";
echo"</currencies>\n";
echo"<categories>\n";
$query_cat = "SELECT * FROM $category_xref";
$res_cat = mysql_query($query_cat) or die(mysql_error());
$rw=1;
while ($row_cat=mysql_fetch_array($res_cat)) {
$cat_parent_id=$row_cat['category_parent_id'];
$cat_child_id=$row_cat['category_child_id'];
$query2 = "SELECT category_name FROM $category WHERE category_id=".$row_cat['category_child_id'];
$res_cat1 = mysql_query($query2) or die(mysql_error());
$name_cat=mysql_fetch_array($res_cat1);
$cat_name=htmlspecialchars($name_cat['category_name']);
if ($cat_parent_id==0) {
echo"<category id=\"".$cat_child_id."\">".$cat_name."</category>\n";
}
else {
echo"<category id=\"".$cat_child_id."\" parentId=\"".$cat_parent_id."\">".$cat_name."</category>\n";
}
$rw++;
}
echo"</categories>\n";

echo"<offers>\n";



$tb_product = $cfg->dbprefix."vm_product";

$tb_manufacturer = $cfg->dbprefix."vm_manufacturer";

$tb_product_mf_xref = $cfg->dbprefix."vm_product_mf_xref";

$tb_category = $cfg->dbprefix."vm_category";

$tb_product_category_xref = $cfg->dbprefix."vm_product_category_xref";

$tb_price = $cfg->dbprefix."vm_product_price";



$query = "

SELECT

$tb_product.product_id,

$tb_product.product_name,

$tb_manufacturer.mf_name,

$tb_manufacturer.manufacturer_id,

$tb_category.category_name,

$tb_category.category_id,

$tb_product_category_xref.category_id,

$tb_price.product_price,

$tb_product.product_sku,

$tb_product.product_in_stock,

$tb_product.product_unit,

$tb_product.product_full_image,

$tb_product.product_desc,

$tb_product.product_weight

FROM

($tb_product_category_xref

RIGHT JOIN ($tb_price

RIGHT JOIN (($tb_product_mf_xref

RIGHT JOIN $tb_product

ON $tb_product_mf_xref.product_id = $tb_product.product_id)

LEFT JOIN $tb_manufacturer

ON $tb_product_mf_xref.manufacturer_id = $tb_manufacturer.manufacturer_id)

ON $tb_price.product_id = $tb_product.product_id)

ON $tb_product_category_xref.product_id = $tb_product.product_id)

LEFT JOIN $tb_category

ON $tb_product_category_xref.category_id = $tb_category.category_id

WHERE $tb_product.product_publish='Y'and $tb_price.product_price > 0 and $tb_product.product_parent_id > 0 and $tb_product.product_in_stock > 0

";



$row = d2a($query);

$product_log = Array();

for($i=0;$i<count($row);$i++) {

if (!in_array($row[$i]['product_id'],$product_log) AND ($row[$i]['product_price'])) {

$product_log[] = $row[$i]['product_id'];




$url="########/index.php?page=shop.product_details&amp;option=com_virtuemart&amp;flypage=flypage.tpl&amp;product_id=".$row[$i]['product_id'];



$product_full_image = "########/components/com_virtuemart/shop_image/product/".$row[$i]['product_full_image'];

$tags = Array ('{product_name}','{product_desc}');

$repl = Array ($row[$i]['product_name'],$row[$i]['product_desc']);

$product_price = substr($row[$i]['product_price'], 0, -3);

$product_cat_id=$row[$i]['category_id'];

echo"\n<offer id=\"".$row[$i]['product_id']."\" available=\"true\" bid=\"$bid\">\n";

echo"<url>".$url."</url>\n";

echo"<price>$product_price</price>\n";

// Валюта в которой указаны Ваши цены

echo"<currencyId>RUR</currencyId>\n";

echo"<categoryId>".$product_cat_id."</categoryId>\n";

echo"<picture>".$product_full_image ."</picture>\n";

// Возможность доставки

echo"<delivery>true</delivery> \n";

echo"<name>".HtmlSpecialChars(strip_tags($row[$i]['product_name']))."\"</name>\n";

echo"<description>".HtmlSpecialChars(strip_tags(str_replace($tags,$repl,$description_template)))."</description>\n";

echo"</offer>\n";

}

}



echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";
function d2a($query){

    $result = mysql_query($query) or die("Query failed : " . mysql_error());

    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {$res[] = $line;}

    mysql_free_result($result);

    return $res;

}


?>
« Последнее редактирование: 09.12.2012, 15:26:18 от faraon_x »
Вопросы по JFORMS, можно ещё попробовать задать здесь
Российский 3d сканер от разработчиков и производителей
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Повнимательнее читайте
Пользуюсь коннектором от Дашука. У меня внутри родительского товара есть дочерние, категорией которых является сам родитель. Яндекс ругается на это, мол, не существует такой категории.
Вот решил приписать дочерей к категории родителя и заодно выводить цены с учетом скидки.
Может быть, велосипед изобрел, но все равно выкладываю код.
Код
	$tb_product.product_parent_id,
...
$query4 = "SELECT category_id FROM $product_category_xref WHERE product_id = ".$row[$i]['product_parent_id'];
$res_cat2 = mysql_query($query4) or die(mysql_error());
$id_cat=mysql_fetch_array($res_cat2);
$cat_id=$id_cat['category_id'];
if($row[$i]['category_id']) {
$product_cat_id=$row[$i]['category_id'];
} else {
$product_cat_id=$cat_id;
}
Надеюсь, кому-то пригодится.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

faraon_x

  • Захожу иногда
  • 362
  • 27 / 1
  • Чем смогу, тем помогу )))
Читал с первой страницы, видимо глаз замылился. Спасибо за наводку, попробую. +1
Вопросы по JFORMS, можно ещё попробовать задать здесь
Российский 3d сканер от разработчиков и производителей
*

Helen74

  • Новичок
  • 8
  • 0 / 0
Подскажите пожалуйста, отправила ссылку на YML файл для добавления в каталог, приняли, но потом написали что цена на все товары стоит 0, хотя на сайте все с ценами. Где искать ошибку? Joomla 1.5.20, VirtueMart 1.1.5 stable. Изините если мало данных я чайник!
« Последнее редактирование: 18.12.2012, 16:33:40 от Helen74 »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Подскажите пожалуйста, отправила ссылку на YML файл для добавления в каталог, приняли, но потом написали что цена на все товары стоит 0, хотя на сайте все с ценами. Где искать ошибку? Joomla 1.5.20, VirtueMart 1.1.5 stable. Изините если мало данных я чайник!
Ищите в файле YML.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Helen74

  • Новичок
  • 8
  • 0 / 0
Ищите в файле YML.
А не подскажите где именно ошибка? Спасибо.
Код
<?php
$hostname = "хххххх";
$username = "ххххх";
$password = "хххх";
$dbName = "ххххх";
$category = "jos_vm_category";
$category_xref = "jos_vm_category_xref";
$manufacturer_xref = "jos_vm_product_mf_xref";
$manufacturer = "jos_vm_manufacturer";
$userstable = "jos_vm_product";
$pricetable = "jos_vm_product_price";
$product_category_xref =  "jos_vm_product_category_xref";

//Определяем сегодняшнюю дату в формате, который используется на сайте cbr.ru
$date = date("d/m/Y");
//Определим код нашей валюты на сайте cbr.ru
//Евро
//$code='R01239';
//Выполняем первый пункт, считываем страницу с курсами валют в переменную
//$file = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date);
//Разбираем страницу с помощью регулярок:
/*preg_match("#<Valute ID=\"" . $code . "\".*?>(.*?)</Valute>#is", $file, $m);
preg_match("#<Value>(.*?)</Value>#is", $m[1], $r);
//Запятую, отделяющую дробную часть заменяем на точку, и у нас в переменной $euro находится курс евро.
$euro = str_replace(",", ".", $r[1]);
//$euro = "1";*/

mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_query( "set session character_set_server=utf8;");
mysql_query( "set session character_set_database=utf8;");
mysql_query( "set session character_set_connection=utf8;");
mysql_query( "set session character_set_results=utf8;");
mysql_query( "set session character_set_client=utf8;");
mysql_select_db($dbName) or die(mysql_error());
echo"<?xml version=\"1.0\" encoding=\"utf8\"?>\n";
echo"<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n";
echo"<yml_catalog date=\"";
echo date('Y-m-d H:i');
echo"\">\n";
echo"<shop>\n";

echo"<name>xn--80apfaecrdir6f2b6a.xn--p1ai</name>\n";

echo"<company>xn--80apfaecrdir6f2b6a.xn--p1ai</company>\n";
echo"<url>xn--80apfaecrdir6f2b6a.xn--p1ai</url>\n";

echo"<currencies>\n";
echo"<currency id=\"RUR\" rate=\"1\"/>\n";
echo"<currency id=\"USD\" rate=\"CBRF\"/>\n";
//echo"<currency id=\"EUR\" rate=\"CBRF\"/>\n";
echo"<currency id=\"EUR\" rate=\"1\"/>\n";
echo"</currencies>\n";

echo"<categories>\n";

$query_cat = "SELECT * FROM $category_xref";
$res_cat = mysql_query($query_cat) or die(mysql_error());
$rw=1;

while ($row_cat=mysql_fetch_array($res_cat)) {
$cat_parent_id=$row_cat['category_parent_id'];
$cat_child_id=$row_cat['category_child_id'];
$query2 = "SELECT category_name FROM $category WHERE category_id=".$row_cat['category_child_id'];
$res_cat1 = mysql_query($query2) or die(mysql_error());
$name_cat=mysql_fetch_array($res_cat1);
$cat_name=$name_cat['category_name'];
if ($cat_parent_id==0) {
echo"<category id=\"".$cat_child_id."\">".$cat_name."</category>\n";
}

else {
echo"<category id=\"".$cat_child_id."\" parentId=\"".$cat_parent_id."\">".$cat_name."</category>\n";
}

$rw++;

}

echo"</categories>\n";


echo"<offers>\n";
$query = "SELECT * FROM $userstable WHERE product_publish='Y'";
$res = mysql_query($query) or die(mysql_error());
$rw=1;

while ($row=mysql_fetch_array($res)) {

$url="http://xn--80apfaecrdir6f2b6a.xn--p1ai/index.php?option=com_virtuemart&amp;flypage=flypage.tpl&amp;page=shop.product_details&amp;product_id=".$row['product_id'];

if ($row['product_full_image'] != "")
{
    $product_full_image = "http://xn--80apfaecrdir6f2b6a.xn--p1ai/components/com_virtuemart/shop_image/product/".$row['product_full_image'];
}
else
{
    $product_full_image = "http://xn--80apfaecrdir6f2b6a.xn--p1ai/components/com_virtuemart/shop_image/product/noimage.gif";
}

$vowels = array("=", "-", "+", "&");

$product_name = $row['product_name'];
$product_name = strip_tags(str_replace($vowels," ",(trim("$product_name"))));

$product_desc = $row['product_desc'];
$product_desc = strip_tags(str_replace($vowels," ",(trim("$product_desc"))));

$product_s_desc = $row['product_s_desc'];
$product_s_desc = strip_tags(str_replace($vowels," ",(trim("$product_s_desc"))));

$query1 = "SELECT product_price FROM $pricetable WHERE product_id=".$row['product_id'];
$res1 = mysql_query($query1) or die(mysql_error());
$price=mysql_fetch_array($res1);
$product_price = (substr($price['product_price'], 0, -3)) * $euro;

$query3 = "SELECT category_id FROM $product_category_xref WHERE product_id=".$row['product_id'];
$res3 = mysql_query($query3) or die(mysql_error());
$product_cat_id=mysql_fetch_array($res3);
$product_cat_id=$product_cat_id['category_id'];

$query4 = "SELECT manufacturer_id FROM $manufacturer_xref WHERE product_id=".$row['product_id'];
$res4 = mysql_query($query4) or die(mysql_error());
$manufacturer_id1=mysql_fetch_array($res4);
$manufacturer_id=$manufacturer_id1['manufacturer_id'];

$query5 = "SELECT mf_name FROM $manufacturer WHERE manufacturer_id=$manufacturer_id";
$res5 = mysql_query($query5) or die(mysql_error());
$manufacturer_name1=mysql_fetch_array($res5);
$manufacturer_name=$manufacturer_name1['mf_name'];

/* if ($manufacturer_id==27 || $manufacturer_id==32 || $manufacturer_id==32 || $manufacturer_id==24 || $manufacturer_id==33 || $manufacturer_id==35 || $manufacturer_id==26 || $manufacturer_id==25 || $manufacturer_id==30 || $manufacturer_id==28 || $manufacturer_id==29) {
*/ echo"<offer id=\"".$rw."\" available=\"true\" bid=\"11\">\n";
echo"<url>".$url."</url>\n";
echo"<price>".$product_price."</price>\n";
echo"<currencyId>RUR</currencyId>\n";
echo"<categoryId>".$product_cat_id."</categoryId>\n";
echo"<picture>".$product_full_image."</picture>\n";
echo"<delivery>true</delivery>\n";
echo"<name>".$product_name."</name>\n";
echo"<vendor>".$manufacturer_name."</vendor>\n";
echo"<description>".$product_s_desc." ".$product_desc."</description>\n";
echo"</offer>\n";
/* }*/

$rw++;
}

echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";
?>
« Последнее редактирование: 18.12.2012, 17:40:35 от Helen74 »
*

Helen74

  • Новичок
  • 8
  • 0 / 0
Жду помощи, спасибо.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Видимо, у вас курс евро не определился. Если цены только в рублях, то просто уберите из
Код
$product_price = (substr($price['product_price'], 0, -3)) * $euro;
курс евро
Код
$product_price = (substr($price['product_price'], 0, -3));
Все должно заработать.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Helen74

  • Новичок
  • 8
  • 0 / 0
Видимо, у вас курс евро не определился. Если цены только в рублях, то просто уберите из
Код
$product_price = (substr($price['product_price'], 0, -3)) * $euro;
курс евро
Код
$product_price = (substr($price['product_price'], 0, -3));
Все должно заработать.
Спасибо большое, всё заработало! +1
P.S Не знаю как плюсик в репутацию добавлять(
*

gelx

  • Осваиваюсь на форуме
  • 42
  • 1 / 1
Извините, сдуру добавил теги [color] в код.
Вот рабочий код
Код
...

Выдается ошибка при проверке на маркете:

Предупреждение: Кодировка XML не определена (строка 0, столбец 0)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Invalid document structure (строка 50, столбец 48)


Joomla 1.5.26, VM 1.1.9
кодировка базы utf8
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Выдается ошибка при проверке на маркете:

Предупреждение: Кодировка XML не определена (строка 0, столбец 0)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Invalid document structure (строка 50, столбец 48)


Joomla 1.5.26, VM 1.1.9
кодировка базы utf8
Соответствующую запись в .htaccess сделали?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

gelx

  • Осваиваюсь на форуме
  • 42
  • 1 / 1
Соответствующую запись в .htaccess сделали?
Точно! Не сделал...  ^-^
Уже установил и настроил компонент из этой темы: http://joomlaforum.ru/index.php/topic,164538.msg889184.html#msg889184

Но все-равно спасибо!
*

rpex

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
robert, Я.Маркет ругается:
Цитировать
Определена кодировка: utf-8 (строка 0, столбец 0)
Дата из файла: 2013-01-29 01:16 (строка 3, столбец 38)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unterminated entity reference, 'D' (строка 41, столбец 36)
Как исправить? Сайт в UTF-8 в скрипте тоже, названия сайта скрипт берет из Joomla я так понял, сам не писал описания. В личку отправил подробности.
По строке столбцу:
<category id="29" parentid="12">C&amp;D Technologies</category>

Вроде так и должно быть... Не пойму...

В итоге дело в знаке & но при замене на &amp;все равно ругается, а если убрать знак & то Яндекс пропускает, как решить?

Пока просто поубирал & и следующие ошибки такого рода:
Цитировать
Ошибка: Значения тегов delivery/pickup/store не соответствуют типу магазина (строка 5046, столбец 10)
Ошибка: Предложение отклонено: http://test.ru/index.php?page=shop.product_details&flypage=shop.flypage&option=com_virtuemart&product_id=52 (строка 228, столбец 9)
« Последнее редактирование: 29.01.2013, 02:10:18 от rpex »
*

rpex

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Вот блин, еще и все ссылки без SEF, как поправить?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Вот рабочий вариант, которым сам пользуюсь. Добавлено:
- Прикрутить дочерние товары к категории родительского.
- Выводить цены с учетом скидки.
- Решить проблему "Error parsing XML feed: Unterminated entity reference", связанную с знаком "&" в названиях категории и товаров.
- Динамически определить наличие товаров.
- Динамически определить минимальную сумму покупки.
Спойлер
[свернуть]
« Последнее редактирование: 29.01.2013, 17:29:15 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

rpex

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Ошибка с этим скриптом еще круче:
Цитировать
Определена кодировка: iso-8859-5 (строка 0, столбец 0)
Фатальная ошибка: Заявленная кодировка XML ( utf-8) не соответствует действительной ( iso-8859-5)

Хотя в скрипте utf-8 же стоит у тебя.
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Задача стоит написать проверку колчичества товара и если оно ровно -1 то не выводить в Яндекс маркете набросал примерный код но он не работает, пните а?

Код
$available = 'false';
$quant = (int)$row['product_in_stock'];
if ($quant) {
$available = 'true';
}

$available = "true";
if ($product_in_stock = -1) $available = "false";
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
$available = 'false';
$quant = int($row['product_in_stock']);
if ($quant== -1) $available = "false"; else $available = 'true';
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
$available = 'false';
$quant = int($row['product_in_stock']);
if ($quant== -1) $available = "false"; else $available = 'true';

Код
Определена кодировка: windows-1251 (строка 0, столбец 0)
Дата из файла: 2014-01-16 20:13 (строка 3, столбец 38)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unknown element 'br' (строка 138, столбец 4)

Не сконало

А вот в таком виде парсит но на сколько рабочий вариант еще не знаю

Код
$available = 'false';
$quant = (int)$row['product_in_stock'];
if ($quant== -1) $available = "false"; else $available = 'true';


{
$available = 'true';
}
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Не сконало потому что тег <br/> где-то затесался вне XML кода.
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Не сконало потому что тег <br/> где-то затесался вне XML кода.

Мой варент не работает так -как я индесирует эту позицию, а как найти тег br  я видел это но ненашел

у меня вся выгрузка это 1 php файл
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Яндекс индексирует все позиции, признак available передает только информацию товар в наличии или под заказ.

Цитировать
В атрибуте available указывается статус доступности товара:
• false — товарное предложение на заказ. Магазин готов принять заказ и осуществить поставку товара в течение согласованного с покупателем срока, не превышающего двух месяцев (за исключением товаров, изготавливаемых на заказ, ориентировочный срок поставки которых оговаривается с покупателем во время заказа).
• true — товарное предложение в наличии. Магазин готов сразу договариваться с покупателем о доставке/покупке товара.

Если вы не хотите передавать в Яндекс заказные позиции нужно делать проверку остатков перед формированием тега offer.
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Нужно сделать если остаток -1 то чтоб Яндекс этот товар не индексировал и не выводил в я маркет а на сайте чтоб можно было его отобразить и продать через корзинку
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Тогда нужно просто всю часть кода с формированием offer заключить в условие
if ($row['product_in_stock']) {
вывод тега оффер и товарного предложения
}

Выгружаете файл и смотрите, там должны быть позиции только в наличии.
Атрибут available в offer везде можно оставить как true, без доп.проверок.
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Тогда нужно просто всю часть кода с формированием offer заключить в условие
if ($row['product_in_stock']) {
вывод тега оффер и товарного предложения
}

Выгружаете файл и смотрите, там должны быть позиции только в наличии.
Атрибут available в offer везде можно оставить как true, без доп.проверок.

Дак в том то и дело что с обработкой в наличии проблем нет, нужно именно исключить из прасинга яндексом товарс с кол. -1 тоесть одно четкое количество товара) а под заказ и в наличии от 0 и ++++ чтоб Яндекс парсил товар и выгружал на маркет
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
if ($row['product_in_stock']>-1) {
вывод тега оффер и товарного предложения
}
*

stas12

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
Подскажите, столкнулся с проблемой. с сайта идет выгрузка XML на aukro
При добавлении новой категории товаров в VirtueMart, сбивается привязка по категориям на аукро и получается каша.
В настройках VirtueMart смотрел - для новой категории создается новый id. По идее на аукро только должны подвязать новую категорию с нашего сайта к своим категориям.
А у меня получается когда я создаю новую категорию, допустим "Носки" - на аукро она получает id "Трусов". А товары из категории "Трусы" получают id категории "Куртки".
Получается новым категориям присваивается рандомный id уже существующих категорий, а как сделать что новая категория получала новый id и не замещала уже существующий? спасибо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

1C УТ 8.x &lt;-&gt; VirtueMart по протоколу CommerceML

Автор Centoff

Ответов: 1315
Просмотров: 230366
Последний ответ 27.10.2020, 15:32:10
от Leo1986
Импорт из CSV товаров с типами и свойствами из

Автор Gruz

Ответов: 499
Просмотров: 158437
Последний ответ 23.02.2017, 15:15:42
от orchanin
Как импортировать файл XML в Joomla VirtueMart?

Автор Кот Смюлан

Ответов: 2
Просмотров: 6475
Последний ответ 14.07.2016, 18:40:24
от Berzerker
импорт товаров в YML Яндекс маркет

Автор zmeyx

Ответов: 5
Просмотров: 12738
Последний ответ 14.07.2016, 18:34:28
от Berzerker
Скрипт экспорта товаров в Яндекс маркет (yml)

Автор gaalferov

Ответов: 12
Просмотров: 13120
Последний ответ 08.06.2016, 14:02:27
от DimaXP