Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

salongin

  • Новичок
  • 9
  • 1 / 0
Добрый день всем!

У меня Joomla 1.5.18, VM 1.1.4 и +SEF-router, автор danik.html  (http://joomlaforum.ru/index.php/topic,130264.0.html)

Скрипт market_ya из начала этой темы работает, но необходимо изменить $url в теге <offer>  - привести в соответствие с url-ом, который строит router.

И тут проблема: нужен транслит для имён категорий, я использую функцию vm_transliterate из router.php Даника , скопировал её в market_ya, но она почему-то у меня не действует и я получаю в теге <offer> URL-ы типа

<url>http://site.ru/features/category/product/196-Перфораторы SDS Plus/610-HTC-DH24PC3.html</url>,

а нужно мне вот что: perforatori-sds-plus

код, добавленный в скрипт, вместе с изменённым $url, выглядит так:

Код: php
$category_name = $row[$i]['category_name'];

$alias = vm_transliterate($category_name);


// $alias = JFilterOutput::stringURLSafe($alias);


$url="http://site.ru/features/category/product/".$row[$i]['category_id']."-".$alias."/".$row[$i]['product_id']."-".$row[$i]['product_artikul'].".html";

    ...

function vm_transliterate($name)
{
$tbl= array(
'?'=>'a', '?'=>'b', '?'=>'v', '?'=>'g', '?'=>'d', '?'=>'e', '?'=>'g', '?'=>'z',
'?'=>'i', '?'=>'y', '?'=>'k', '?'=>'l', '?'=>'m', '?'=>'n', '?'=>'o', '?'=>'p',
'?'=>'r', '?'=>'s', '?'=>'t', '?'=>'u', '?'=>'f', '?'=>'i', '?'=>'e', '?'=>'A',
'?'=>'B', '?'=>'V', '?'=>'G', '?'=>'D', '?'=>'E', '?'=>'G', '?'=>'Z', '?'=>'I',
'?'=>'Y', '?'=>'K', '?'=>'L', '?'=>'M', '?'=>'N', '?'=>'O', '?'=>'P', '?'=>'R',
'?'=>'S', '?'=>'T', '?'=>'U', '?'=>'F', '?'=>'I', '?'=>'E', '?'=>"yo", '?'=>"h",
'?'=>"ts", '?'=>"ch", '?'=>"sh", '?'=>"shch", '?'=>"", '?'=>"", '?'=>"yu", '?'=>"ya",
'?'=>"Yo", '?'=>"H", '?'=>"Ts", '?'=>"Ch", '?'=>"Sh", '?'=>"Shch", '?'=>"", '?'=>"",
'?'=>"Yu", '?'=>"Ya"
);

return strtr($name, $tbl);

}

Если раскомментировать stringURLSafe, то скрипт обрывается на первом же <offer> .
Если закоментировать - скрипт работает до конца, но все имена категорий не в транслите.

Что у меня не так? Что нужно сделать, чтобы получить корректный транслит? Спасибо заранее.

Вячеслав
*

salongin

  • Новичок
  • 9
  • 1 / 0
Разобрался ))
Проблема была с кодировкой - скопировал транслит таблицу заново и пересохранил аккуратно в win-1251, и всё заработало ))
« Последнее редактирование: 17.12.2010, 14:25:08 от salongin »
*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Разобрался ))
Проблема была с кодировкой - скопировал транслит таблицу заново и пересохранил аккуратно в win-1251, и всё заработало ))

А можно код всего получившегося файла? Очень надо!
*

salongin

  • Новичок
  • 9
  • 1 / 0
А можно код всего получившегося файла? Очень надо!

Нет проблем )

Код: php
<?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>http://tvoyport.ru</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_publish='Y' and 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_name,

$tb_product.product_artikul,

$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_thumb_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' 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'];


 
$name = $row[$i]['category_name'];

$alias = vm_transliterate($name);



$alias = strtolower( $alias );

$alias = preg_replace('/&.+?;/', '', $alias); // kill entities

$alias = str_replace( '_', '-', $alias );

$alias = preg_replace('/[^a-z0-9\s-.]/', '', $alias);

$alias = preg_replace('/\s+/', '-', $alias);

$alias = preg_replace('|-+|', '-', $alias);

$alias = trim($alias, '-');


$hvost = $row[$i]['product_artikul'];

if (preg_match('/[^A-Za-z0-9_\-]/',$hvost)) {
   


$hvost = vm_transliterate($hvost);

$hvost = strtolower($hvost);

$hvost = preg_replace('/&.+?;/', '',$hvost); // kill entities

$hvost = str_replace( '_', '-',$hvost );

$hvost = preg_replace('/[^a-z0-9\s-.]/', '',$hvost);

$hvost = preg_replace('/\s+/', '-',$hvost);

$hvost = preg_replace('|-+|', '-',$hvost);

$hvost = trim($hvost, '-');

}

$url="http://www.tvoyport.ru/features/category/product/".$row[$i]['category_id']."-".$alias."/".$row[$i]['product_id']."-".$hvost.".html";

$product_full_image = "http://www.tvoyport.ru/components/com_virtuemart/shop_image/product/".$row[$i]['product_thumb_image'];

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

$repl = Array ($row[$i]['product_name'],$row[$i]['product_s_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 "<sales_notes>минимальная сумма заказа 1000 руб</sales_notes> \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;

}

function vm_transliterate($name)
{
$tbl= array(
'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
'Ё'=>"Yo", 'Х'=>"H", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh", 'Щ'=>"Shch", 'Ъ'=>"", 'Ь'=>"",
'Ю'=>"Yu", 'Я'=>"Ya"
);

return strtr($name, $tbl);

}
?>

Вроде работает ))
*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Нет проблем )

Код: php
<?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>http://tvoyport.ru</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_publish='Y' and 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_name,

$tb_product.product_artikul,

$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_thumb_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' 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'];


 
$name = $row[$i]['category_name'];

$alias = vm_transliterate($name);



$alias = strtolower( $alias );

$alias = preg_replace('/&.+?;/', '', $alias); // kill entities

$alias = str_replace( '_', '-', $alias );

$alias = preg_replace('/[^a-z0-9\s-.]/', '', $alias);

$alias = preg_replace('/\s+/', '-', $alias);

$alias = preg_replace('|-+|', '-', $alias);

$alias = trim($alias, '-');


$hvost = $row[$i]['product_artikul'];

if (preg_match('/[^A-Za-z0-9_\-]/',$hvost)) {
   


$hvost = vm_transliterate($hvost);

$hvost = strtolower($hvost);

$hvost = preg_replace('/&.+?;/', '',$hvost); // kill entities

$hvost = str_replace( '_', '-',$hvost );

$hvost = preg_replace('/[^a-z0-9\s-.]/', '',$hvost);

$hvost = preg_replace('/\s+/', '-',$hvost);

$hvost = preg_replace('|-+|', '-',$hvost);

$hvost = trim($hvost, '-');

}

$url="http://www.tvoyport.ru/features/category/product/".$row[$i]['category_id']."-".$alias."/".$row[$i]['product_id']."-".$hvost.".html";

$product_full_image = "http://www.tvoyport.ru/components/com_virtuemart/shop_image/product/".$row[$i]['product_thumb_image'];

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

$repl = Array ($row[$i]['product_name'],$row[$i]['product_s_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 "<sales_notes>минимальная сумма заказа 1000 руб</sales_notes> \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;

}

function vm_transliterate($name)
{
$tbl= array(
'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
'Ё'=>"Yo", 'Х'=>"H", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh", 'Щ'=>"Shch", 'Ъ'=>"", 'Ь'=>"",
'Ю'=>"Yu", 'Я'=>"Ya"
);

return strtr($name, $tbl);

}
?>

Вроде работает ))

А это что за параметр product_artikul? Что-то свое как я понимаю? Чем от product_sku отличается?
*

salongin

  • Новичок
  • 9
  • 1 / 0
А это что за параметр product_artikul? Что-то свое как я понимаю? Чем от product_sku отличается?

Ну да, своё.. почти  )
Если подробнее - то у меня в базе товара - не один, а два артикула. Один - это внутренний артикул товара, другой - каталожный номер производителя. Первый хранится в поле `product_sku`, второй - `product_articul` - это уже я сам добавил этот столбец в таблицу `jos_vm_product`.
Оба номера выводятся на карточку товара.
Далее. Функция vm_getProduct из файла Даника изменена - в "хвосте" url-а берётся не название товара (`product_name`, как в оригинале у Даника), а `product_artikul` - для нас это лучше.
Код: php
// возвращает продукт по id как строку
function vm_getProduct($id)
{
static $products;
if( isset( $products[$id] ) ) return $products[$id];

$db = & JFactory::getDBO();
$query = 'SELECT product_artikul as name FROM #__vm_product '
.'WHERE product_id = ' . (int) $id . ' '
;
$db->setQuery($query);

$products[$id] = $db->loadResult();
return $products[$id];
}

Исходя из этого построен и url в market_ya.

Вот, например:

http://tvoyport.ru/features/category/product/52-benzinovie-pili/106-hsq-952802230.html

сверху-слева от картинки - артикул и код товара.

Артикул внутренний это `product_sku`,
Артикул производителя - это `product_artikul`

Вот такая история )

 


 
*

andx

  • Захожу иногда
  • 111
  • 6 / 0
salongin
Спасибо за код для роутера от Даника! Взял себе ту часть, которая отвечает за формирование ссылки, все работает!
*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
salongin
Спасибо за код для роутера от Даника! Взял себе ту часть, которая отвечает за формирование ссылки, все работает!

Я в PHP не силен поэтому никак прикрутить не получается, покажь пожалуйста что в итоге у тебя заработало и что куда вставлял.
*

salongin

  • Новичок
  • 9
  • 1 / 0
Я в PHP не силен поэтому никак прикрутить не получается, покажь пожалуйста что в итоге у тебя заработало и что куда вставлял.

Правильно заданный вопрос - это половина ответа. Правильно заданного вопроса не наблюдаю..
Но ответить попробую. Хотя вроде и так уже всё рассказал и показал...

У router.php кодировка - UTF-8 естественно. Яндексу же нужна win-1251, поэтому в market_ya.php она и есть. Разные кодировки, то есть
Когда я копировал у себя в PHP-редакторе функцию vm_transliterate из файла router.php в файл market_ya.php - не подумал об этом (кириллица в моём редакторе отображалась корректно). Но при работе получались ссылки вида http://tvoyport.ru/features/category/product/100 Тепловентиляторы и пушки/13375 МАКАР-ТВ-5/220K.html, а они должны были быть в транслите. То есть функция vm_transliterate не срабатывала. Я тоже не силён в PHP,  пару часов помучал код так и сяк, и так и не понял, в чём дело.

Когда же мне это надоело, и я решил задать вопрос на форуме-скопировал код в свое первое сообщение (от 17.12) - увидел знаки вопроса вместо букв кириллицы, не скажу, что сразу догадался, но заподозрил в чём дело. Потому и говорю, что правильно заданный вопрос - это половина ответа ))

Ну а когда открыл оба файла в блокноте, заново скопипастил vm_transliterate из одного файла в другой, и сохранил market_ya в родной кодировке - всё заработало. Смотри в предыдущем сообщении ссылку.

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

   

*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Правильно заданный вопрос - это половина ответа. Правильно заданного вопроса не наблюдаю..
Но ответить попробую. Хотя вроде и так уже всё рассказал и показал...

У router.php кодировка - UTF-8 естественно. Яндексу же нужна win-1251, поэтому в market_ya.php она и есть. Разные кодировки, то есть
Когда я копировал у себя в PHP-редакторе функцию vm_transliterate из файла router.php в файл market_ya.php - не подумал об этом (кириллица в моём редакторе отображалась корректно). Но при работе получались ссылки вида http://tvoyport.ru/features/category/product/100 Тепловентиляторы и пушки/13375 МАКАР-ТВ-5/220K.html, а они должны были быть в транслите. То есть функция vm_transliterate не срабатывала. Я тоже не силён в PHP,  пару часов помучал код так и сяк, и так и не понял, в чём дело.

Когда же мне это надоело, и я решил задать вопрос на форуме-скопировал код в свое первое сообщение (от 17.12) - увидел знаки вопроса вместо букв кириллицы, не скажу, что сразу догадался, но заподозрил в чём дело. Потому и говорю, что правильно заданный вопрос - это половина ответа ))

Ну а когда открыл оба файла в блокноте, заново скопипастил vm_transliterate из одного файла в другой, и сохранил market_ya в родной кодировке - всё заработало. Смотри в предыдущем сообщении ссылку.

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

   



Я не про кодировку, про это все понятно. Для начало понятно вылетела ошибка на  product_artikul - прибил. Например сейчас у меня PHP на  строку   return $res; ругается. Просто хочтся понять куда что вставить в market.php что бы ссылки стали как sef'овые. Сейчас генерится список категорий и все, сами товары не заполняются. Joomla 1.5.22 virt 1.1.3  Код как у тебя только закоментил product_artikul
*

salongin

  • Новичок
  • 9
  • 1 / 0
Например сейчас у меня PHP на  строку   return $res; ругается.

Это ошибка в запросе к БД. Смотри

Код: php
$query = "

SELECT

$tb_product.product_id,

$tb_product.product_name,


... и далее. Но вообще-то если ты закомментил product_artikul под select-oм, то остальное у меня, как в классике, и ошибки не должно быть..

Просто хочтся понять куда что вставить в market.php что бы ссылки стали как sef'овые. Сейчас генерится список категорий и все, сами товары не заполняются. Joomla 1.5.22 virt 1.1.3  Код как у тебя только закоментил product_artikul

Такое тоже было, обрывалось на теге offer. Скорее всего, в строке $url= ... проблема.
Код твой можно глянуть? В личку, или здесь покажи. Желательно и router, и market.
*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Это ошибка в запросе к БД. Смотри

Код: php
$query = "

SELECT

$tb_product.product_id,

$tb_product.product_name,


... и далее. Но вообще-то если ты закомментил product_artikul под select-oм, то остальное у меня, как в классике, и ошибки не должно быть..

Такое тоже было, обрывалось на теге offer. Скорее всего, в строке $url= ... проблема.
Код твой можно глянуть? В личку, или здесь покажи. Желательно и router, и market.

у меня router нету. Есть только market. Просто хочу в него вставить кусок для генерации SEF адресов из кода Даника.
*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
В итоге имеем список категорий но без товаров :(

Код
<?xml version='1.0' encoding='windows-1251'?>
<!DOCTYPE yml_catalog SYSTEM 'shops.dtd'>
<yml_catalog date="2010-12-25 16:17">
<shop>
<name>РўРІРѕР№ РїРѕСЂС‚</name>
<company>РўРІРѕР№-РїРѕСЂС‚</company>
<url>http://tvoyport.ru</url>
<currencies>
<currency  id="RUR" rate="1"/>
<currency  id="USD" rate="CBRF"/>
</currencies>
<categories>
<category id="64" parentId="22">Столы журнальные</category>

<category id="60" parentId="59">Столы и стулья пластиковые</category>
<category id="63" parentId="59">Шезлонги</category>
<category id="59">Мебель для дачи</category>
<category id="62" parentId="59">Скамейки</category>
<category id="58" parentId="56">Полки навесные</category>
<category id="61" parentId="59">Садовые качели</category>
<category id="55" parentId="42">Вытяжки кухонные</category>
<category id="57" parentId="56">Этажерки и подставки</category>
<category id="56">Аксессуары</category>

<category id="17">Мебель для прихожей</category>
<category id="18" parentId="17">Прихожие</category>
<category id="19" parentId="17">Наборы для прихожей</category>
<category id="20" parentId="17">Тумбы для обуви</category>
<category id="21" parentId="17">Вешалки</category>
<category id="22">Мебель для гостиной</category>
<category id="23">Мебель для детской</category>
<category id="24" parentId="22">Тумбы под телевизор</category>
<category id="25" parentId="22">Стенки мебельные</category>

<category id="26" parentId="22">Диваны и кресла</category>
<category id="27" parentId="23">Детские кровати</category>
<category id="28" parentId="23">Наборы детской мебели</category>
<category id="29">Мебель для спальни</category>
<category id="30" parentId="29">Комоды</category>
<category id="31" parentId="29">Кровати</category>
<category id="32" parentId="29">Матрасы</category>
<category id="33" parentId="29">Туалетные столики</category>
<category id="34" parentId="29">Тумбы прикроватные</category>

<category id="35" parentId="29">Спальни</category>
<category id="36">Мебель для работы и учебы</category>
<category id="37" parentId="36">Стеллажи</category>
<category id="38" parentId="36">Столы компьютерные</category>
<category id="39" parentId="36">Письменные столы</category>
<category id="40" parentId="36">Стулья и кресла</category>
<category id="41" parentId="36">Тумбы подкатные</category>
<category id="42">Мебель для кухни</category>
<category id="43" parentId="42">Столы книжки</category>

<category id="44" parentId="42">Столы обеденные</category>
<category id="45" parentId="42">Кухонные уголки</category>
<category id="46" parentId="42">Табуреты</category>
<category id="47" parentId="42">Столы сервировочные</category>
<category id="48" parentId="42">Кухонные стулья</category>
<category id="49" parentId="42">Кухонные гарнитуры</category>
<category id="50">Шкафы</category>
<category id="51" parentId="50">Шкафы купе</category>
<category id="52" parentId="50">Шкафы распашные</category>

<category id="53">Предметы интерьера</category>
<category id="54" parentId="53">Кресла качалки</category>
<category id="102" parentId="101">Спальня Арамис</category>
<category id="66" parentId="19">Прихожая Валерия</category>
<category id="67" parentId="19">Прихожая Визит</category>
<category id="68" parentId="19">Прихожая Гранд Кволити</category>
<category id="69" parentId="19">Прихожая Каре</category>
<category id="70" parentId="19">Прихожая Элегант</category>
<category id="71" parentId="19">Прихожая Трио</category>

<category id="72" parentId="19">Прихожая Рондо</category>
<category id="73" parentId="19">Прихожая Рикардо</category>
<category id="74" parentId="19">Прихожая Ривьера</category>
<category id="75" parentId="19">Прихожая Рандеву</category>
<category id="76" parentId="19">Прихожая Орфей</category>
<category id="77" parentId="19">Прихожая Ника</category>
<category id="78" parentId="19">Прихожая Модена 2</category>
<category id="80" parentId="82">Гостиная Верона B4</category>
<category id="81" parentId="82">Гостиная Карина 1</category>

<category id="82" parentId="22">Наборы для гостиной</category>
<category id="83" parentId="82">Гостиная Модена</category>
<category id="84" parentId="82">Стенка Альбера</category>
<category id="85" parentId="82">Стенка ВАЛЕРИЯ</category>
<category id="86" parentId="82">Стенка Терра</category>
<category id="87" parentId="82">Стенка Эрика-4</category>
<category id="88" parentId="28">Детская мебель Апли</category>
<category id="89" parentId="28">Детская мебель Волна</category>
<category id="90" parentId="28">Детская мебель Египет</category>

<category id="91" parentId="28">Детская мебель Капитошка</category>
<category id="92" parentId="28">Детская мебель Модена</category>
<category id="93" parentId="28">Детская мебель Подростковая</category>
<category id="94" parentId="28">Детская мебель Робинзон</category>
<category id="95" parentId="28">Детская мебель Эльф</category>
<category id="96" parentId="28">Детска мебель Джуниор</category>
<category id="97" parentId="28">Детская Мебель Валерия</category>
<category id="99" parentId="28">Детская мебель Мальвина</category>

<category id="100" parentId="28">Детская мебель Радуга</category>
<category id="101" parentId="29">Наборы мебели для спальни</category>
</categories>
<offers>
</offers>
</shop>
</yml_catalog>

Сам код

Код
<?php
//Пропишите для своей БД, пропишите наименование магазина, про адрес www.**********.ru тоже не забудьте
$hostname = "№№№";
$username = "№№№";
$password = "№№№";
$dbName = "№№№";
$category = "№№№";
$category_xref = "№№№";
$userstable = "№№№";
$pricetable = "№№№";
 
$product_category_xref =  "mebmain_vm_product_category_xref";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_query("SET SQL_BIG_SELECTS=1");
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>http://tvoyport.ru</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_publish='Y' and 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_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_thumb_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' 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'];
 
 
 
$name = $row[$i]['category_name'];
 
$alias = vm_transliterate($name);
 
 
 
$alias = strtolower( $alias );
 
$alias = preg_replace('/&.+?;/', '', $alias); // kill entities
 
$alias = str_replace( '_', '-', $alias );
 
$alias = preg_replace('/[^a-z0-9\s-.]/', '', $alias);
 
$alias = preg_replace('/\s+/', '-', $alias);
 
$alias = preg_replace('|-+|', '-', $alias);
 
$alias = trim($alias, '-');
 
 
$hvost = $row[$i]['product_name'];
 
if (preg_match('/[^A-Za-z0-9_\-]/',$hvost)) {
 
 
 
$hvost = vm_transliterate($hvost);
 
$hvost = strtolower($hvost);
 
$hvost = preg_replace('/&.+?;/', '',$hvost); // kill entities
 
$hvost = str_replace( '_', '-',$hvost );
 
$hvost = preg_replace('/[^a-z0-9\s-.]/', '',$hvost);
 
$hvost = preg_replace('/\s+/', '-',$hvost);
 
$hvost = preg_replace('|-+|', '-',$hvost);
 
$hvost = trim($hvost, '-');
 
}
 
$url="http://www.tvoyport.ru/features/category/product/".$row[$i]['category_id']."-".$alias."/".$row[$i]['product_id']."-".$hvost.".html";
 
$product_full_image = "http://www.tvoyport.ru/components/com_virtuemart/shop_image/product/".$row[$i]['product_thumb_image'];
 
$tags = Array ('{product_name}','{product_desc}');
 
$repl = Array ($row[$i]['product_name'],$row[$i]['product_s_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 "<sales_notes>минимальная сумма заказа 1000 руб</sales_notes> \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;
 
}
 
function vm_transliterate($name)
{
$tbl= array(
'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
'Ё'=>"Yo", 'Х'=>"H", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh", 'Щ'=>"Shch", 'Ъ'=>"", 'Ь'=>"",
'Ю'=>"Yu", 'Я'=>"Ya"
);
 
return strtr($name, $tbl);
 
}
?>
*

salongin

  • Новичок
  • 9
  • 1 / 0
В итоге имеем список категорий но без товаров :(

Для начала попробуй исправить здесь:

Код: php
include '../configuration.php';
*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Для начала попробуй исправить здесь:

Код: php
include '../configuration.php';

не, тут все ок

во чо пишет

Undefined variable: res
типа не определена переменная
« Последнее редактирование: 25.12.2010, 22:07:01 от a_pesikov »
*

salongin

  • Новичок
  • 9
  • 1 / 0
не, тут все ок

хз. В твоём файле так:
Код: php
include 'configuration.php';

в таком виде у меня на локалке эта строка не прокатывает.

исправил на
Код: php
 include '../configuration.php';
;

и больше ничего не трогал - всё работает и выгружает и url рисует...
*

a_pesikov

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
хз. В твоём файле так:
Код: php
include 'configuration.php';

в таком виде у меня на локалке эта строка не прокатывает.

исправил на
Код: php
 include '../configuration.php';
;

и больше ничего не трогал - всё работает и выгружает и url рисует...


С конфигом все ок, у меня именно так должно быть, может из-за того что artikul прибил?
*

salongin

  • Новичок
  • 9
  • 1 / 0
может из-за того что artikul прибил?

Не, это вряд ли.. попробуй ещё проверить, все ли поля, которые под select-ом, у тебя в БД есть..

*

Alex2

  • Захожу иногда
  • 113
  • 6 / 0
Загрузил YML-файл, пытаюсь включить магазин, а они не включают.
Техподдержка пишет
В результате проверки были выявлены следующие критичные ошибки в Вашем yml-файле: не закрыт тег <offers>, отсутствуют товарные предложения. Поэтому заявка не прошла проверку

В файле формируются только категории, а самих товаров нет
Подскажите что не так?

[вложение удалено Администратором]
« Последнее редактирование: 04.01.2011, 13:18:44 от Alex2 »
*

xpyct

  • Захожу иногда
  • 62
  • 0 / 0
Такая же проблема не закрывается тег offers.
Причем если выкачивать YML файл через хром то все нормально, если через мазилу то тег не закрывается.
Разное кол-во товаров выкачивается, может сервак разрывает соединение? у меня товаров порядка 11тыщ.

[вложение удалено Администратором]

Подскажите, как сформировать чпу ссылку  в данном скрипте вида site.ru/magazine-86. Стоит Artio JoomSEF. Подскажите как формируются числа в конце ссылки?
« Последнее редактирование: 24.01.2011, 12:44:54 от abu »
*

Lekarev

  • Захожу иногда
  • 61
  • 0 / 0
Ох... Сегодня всю голову поломал  ^-^
Может кто мне сможет пояснить из за чего подобная фигня может быть ?
Собственно вот:
Гружу в Яшу YML - всё добренько. Без ошибок.
Потом в контроле качества начинают идти на все товары ссылки с ошибкой 404. Ссылки такого плана: http://http://

http://http//******.ru/index.php?page=shop.product_details&flypage=shop.flypage&option=com_virtuemart&product_id=54

И вот так ломаю голову весь день... С раннего утра.
Подскажите что и как сделать, пожалуйста. В прикрепленке размещу скрипт выгрузки. Но вроде там все окей.

Но еще самое интересное, что когда  он включен на пару минут, пока не вырубили, мои товары видны в маркете. На них я нажимаю и попадаю на нужный товар!!

Спешу сообщить !

Думаю кому пригодится:
Проблема была в следующем - я прописал в главной страницы сайта адрес с http://****.ru , а это оказалось категорически нельзя. А в силу, что YML не пойми когда обновляется не понимал в чем причина. Сейчас все обновилось нормально ( я догадывался и вот решил ждать до последнего загрузки последней редакции) и воуля ) Всё добренько )
Не указывайте http://ваш-сайт.ру в главной странице. Без http:// !

Всем хорошей конверсии  *DRINK*

[вложение удалено Администратором]
« Последнее редактирование: 27.01.2011, 22:24:01 от Lekarev »
*

djed9

  • Захожу иногда
  • 116
  • 2 / 0
Народ кто готов помочь прикрутить к маркету за деньги?
*

Lekarev

  • Захожу иногда
  • 61
  • 0 / 0
Народ кто готов помочь прикрутить к маркету за деньги?

Давай я могу помочь. 356-292-795 аська или скайп дать ?
*

Irsn

  • Захожу иногда
  • 83
  • 0 / 0
Доброго времени суток! Подскажите, пожалуйста, где попалась лишняя ковычка? Уже глаза в кучу. В маркете товар выводится вот так: Atoll A-560E" Как убрать ковычки из названия товара? Скрипт взят в этой теме и немного изменен.

Код
<?php

$hostname = "localhost";
$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');
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>#######</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=\"34\"/>\n";
echo"<currency  id=\"EUR\" rate=\"45\"/>\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";
$res = mysql_query($query) or die(mysql_error());
$rw=1;
while ($row=mysql_fetch_array($res)) {
$url="http://#########/index.php?page=shop.product_details&amp;flypage=shop.flypage&amp;option=com_virtuemart&amp;product_id=".$row['product_id'];
$product_full_image = "http://############/components/com_virtuemart/shop_image/product/".$row['product_full_image'];
$product_name = $row['product_name'];
$product_s_desc = $row['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);
$query3 = "SELECT category_id FROM $product_category_xref WHERE product_id=".$row['product_id'];
$res3 = mysql_query($query3) or die(mysql_error());
$product_cat_id1=mysql_fetch_array($res3);
$product_cat_id=$product_cat_id1['category_id'];
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"<name>".$product_name."</name>\n";
echo"<description>".$product_name.". От официального дилера.</description>\n";
echo"</offer>";
$rw++;
}
echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";
?>
*

didimon

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
ребят подскажите а как сделать так, чтобы выгружать две например конкретные категории товаров в Яндекс, игнорирую все остальные категории?
*

SlogMan

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Что за ошибка?

Дата из файла: 2011-02-13 10:25 (строка 1, столбец 127)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unterminated entity reference, 'flypage' (строка 43, столбец 66)
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
все у кого есть модули со скидками, могут столкнуться с проблемой двух цен... но разных shopper_group_id
подскажите как поправить таблицу, чтобы цены в YML всегда были от shopper_group_id = 8
пробую, по разному, но как-то не хочет
Цитировать
SELECT
   $tb_product.product_id,
   $tb_product.product_parent_id,
   $tb_product.product_discount_id,
   $tb_product.product_name,
   $tb_product.product_publish,
   $tb_product.custom_attribute,   
   $tb_product_attribute.attribute_name,
   $tb_product_attribute.attribute_value,
   $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_price.shopper_group_id,
   $tb_price.product_currency,
   $tb_product.product_in_stock,
   $tb_product.product_unit,
   $tb_product.product_thumb_image,
   $tb_product.product_s_desc,
   $tb_product.product_weight
   
FROM
   ($tb_product_category_xref
RIGHT JOIN ($tb_price
ON $tb_price.shopper_group_id = '8' // если так, то ошибка
RIGHT JOIN (($tb_product_mf_xref
RIGHT JOIN $tb_product
ON $tb_product_mf_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_product_attribute
ON $tb_product_attribute.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)
*

richman

  • Захожу иногда
  • 50
  • 1 / 0
Немного доработал скрипт для более комфортной установки и оптимизировал запросы к базе.

Доработки:
1. Подключение к настройкам Joomla (теперь не надо прописывать реквизиты доступа к БД, а достаточно указать конфигурационный файл 'configuration.php')
2. Добавлены комментарии для новичков
3. ВЫБОРКА ВСЕХ ТОВАРОВ ПРОИСХОДИТ ОДНИМ ЗАПРОСОМ!
4. Добавлен шаблон для описания товара (тег <description>)
5. Rурсы валют, приравнены к курсу ЦБРФ
6. Добавлен тег "доставка" (просто мне он нужен, а Вы решайте сами)
а также: форматирование для удобства кода и вывода и еще что то по мелочам.

Проверялось на Joomla! 1.5.9 Production/Stable / VirtueMart 1.1.2 stable


Скрипт в целом работает, но проблема с подтоварами. Яндекс ругается, что у подтоваров неизвестная категория:
Цитировать
Ошибка: Для предложения указана неизвестная категория: (строка 188, столбец 9)
Ошибка: Предложение отклонено: http://
и не пропускает данный товар в свою базу.

В YML тег категории пустым получается:
Код
<categoryId></categoryId>

Понятно, что VirtueMart устроен так, что подтовары относятся к основному товару и к той категории, где он находится. Но как это объяснить Яндексу?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор Centoff

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

Автор Gruz

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

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

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

Автор zmeyx

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

Автор gaalferov

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