Новости 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 Ответов
  • 184392 Просмотров
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
добавь в запрос списка товаров условие where product_in_stock>0
*

VashMaster

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
добавь в запрос списка товаров условие where product_in_stock>0

Странно, что сразу не включили это в код. Но как я понимаю, эти скрипты для программистов. Мол, основное всё есть, а до ума каждый сам доводите. В принципе логично.
*

necro2000

  • Осваиваюсь на форуме
  • 32
  • 4 / 1
добавь в запрос списка товаров условие where product_in_stock>0
Добавил, отправил Яндексу, если все будет ОК, выложу код.
*

positivegrowl

  • Новичок
  • 4
  • 0 / 0
Товарищи! Пожалуйста, помогите! Не могу подключить магазин. Вот скрипт:
Код
<?php
$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());
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://www.******</url>\n";
echo"<currencies>\n";
echo"<currency  id=\"RUR\" 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";
$res = mysql_query($query) or die(mysql_error());
$rw=1;
while ($row=mysql_fetch_array($res)) {
$url="http://porta-market.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=".$row['product_id'];
$url=htmlspecialchars($url);
$product_full_image = "http://porta-market.ru/components/com_virtuemart/shop_image/product/".$row['product_full_image'];
$product_name = $row['product_name'];
//$product_desc = $row['product_desc'];
$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";
?>

Ставил SEF-роутер. Скрипт:

Код
<?php
/**
* @package Joomla
* @subpackage VirtueMart Router for Joomla! 1.5 v 0.1
* @copyright 2008, Copyright (C) Denys Nosov, Community Joomla! Ukraine. All rights reserved.
* @license GNU/GPL.
* @author Denys Nosov (www.joomla-ua.org)
* Joomla! and VirtueMart Router for Joomla! 1.5 are free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed they include or
* are derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/

defined( '_JEXEC' ) or die( 'Restricted access' );

function virtuemartBuildRoute(&$query)
{
$segments = array();
if (isset($query['task'])) {
$segments[] = $query['task'];
unset($query['task']);
}
if(isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
if(isset($query['category_id'])) {
$segments[] = $query['category_id'];
unset($query['category_id']);
}
if(isset($query['flypage'])) {
$segments[] = $query['flypage'];
unset($query['flypage']);
}
if(isset($query['product_id'])) {
$segments[] = $query['product_id'];
unset($query['product_id']);
}
if(isset($query['ssl_redirect'])) {
$segments[] = $query['ssl_redirect'];
unset($query['ssl_redirect']);
}
if(isset($query['order_id'])) {
$segments[] = $query['order_id'];
unset($query['order_id']);
}
return $segments;
}

function virtuemartParseRoute($segments)
{
$vars = array();
$vars['task'] = $segments[0];
$vars['page'] = $segments[0];
$vars['ssl_redirect'] = $segments[0];
$vars['category_id'] = $segments[1];
$vars['order_id'] = $segments[1];
$vars['flypage'] = $segments[2];
$vars['product_id'] = $segments[3];
return $vars;
}

?>

Не могу понять, как теперь переделать ссыли.

У меня ссылка на страницу товара выглядит так:
http://tvoyport.ru/features/shop.product_details/54/ilvm_fly2_grey.tpl/13021.html

Но это полбеды. При проверке Yandex ругается и говорит:

Цитировать
http://tvoyport.ru/media/market_ya_1_1_utf8.php

Определена кодировка: unknown (строка 0, столбец 0)
Дата из файла: 2010-09-01 15:35 (строка 3, столбец 113)
[2010-09-01 15:35:29] (Fatal) [389:39] (Fatal) 521 Error parsing XML feed: Unterminated entity reference, 'S'


ВОПРОС: ЧТО ДЕЛАТЬ? НАЧАЛЬСТВО КАЗНИТ ! ! !
« Последнее редактирование: 15.12.2010, 17:18:05 от positivegrowl »
*

mike0808

  • Новичок
  • 5
  • 0 / 0
что делать
исходный код
<?php
$bid = '21';
$country_of_origin = "Россия";//надо вместо этого указать как-то в коде(как добавить в товар свойство то что
//производсто Россия?чтобы выглядело примерно так $category = "jos_vm_category";где добавить свойство jos_vm_country?
//потому что Яндекс выкидывает ошибку
/*-Название и описание предложения не соответствуют реальному товару.

Металлические двери Китай "141.2(Престиж)""
10 066 руб. в наличии в Porta-Market
Доставка: в г. Москва ? 1 000 руб.
Гарантия производителя, страна производства: Россия.

Металлические двери Китай "141.2(Престиж)" от официального дилера.

На Маркете страна производства: Россия.
На сайте магазина:
Производитель- Китай.*/
$manufacturer_warranty = "true";
$delivery = "true";
$hostname = "localhost";
$username = "";
$password = "";
$dbName = "portamar_db";
$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());
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>Porta-Market</name>\n";
echo"<company>Portamarket</company>\n";
echo"<url>http://www.porta-market.ru</url>\n";
echo"<currencies>\n";
echo"<currency  id=\"RUR\" rate=\"1\"/>\n";
echo"</currencies>\n";
//echo"<delivery>true</delivery>\n";
//echo"<manufacturer_warranty>true</manufacturer_warranty>\n";
//echo"<country_of_origin>Россия</country_of_origin>\n";
//<country_of_origin>Россия</country_of_origin>

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://porta-market.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=".$row['product_id'];
$url=htmlspecialchars($url);
$product_full_image = "http://porta-market.ru/components/com_virtuemart/shop_image/product/".$row['product_full_image'];
$product_name = $row['product_name'];
//$country = $row['product_name'];
//$product_desc = $row['product_desc'];
$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"<delivery>".$delivery."</delivery>\n";
echo"<name>".$product_name."\"</name>\n";
echo"<description>".$product_name." от официального дилера.</description>\n";
echo"<manufacturer_warranty>".$manufacturer_warranty."</manufacturer_warranty>\n";
echo"<country_of_origin>".$country_of_origin."</country_of_origin>\n";
echo"</offer>";
$rw++;
}
echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";
?>
*

necro2000

  • Осваиваюсь на форуме
  • 32
  • 4 / 1
Добавил, отправил Яндексу, если все будет ОК, выложу код.

Яндекс принял.
Внес изменения:
- отбор только опубликованных категорий;
- отбор товаров только в наличии.
Вот, что получилось:
Код
<?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_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_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' 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_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"</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;

}


?>
*

positivegrowl

  • Новичок
  • 4
  • 0 / 0
Яндекс принял.
Внес изменения:
- отбор только опубликованных категорий;
- отбор товаров только в наличии.
Вот, что получилось:

СПАСИБО ОГРОМАДНОЕ! Без проблем добавил себе!

+1
*

xontas

  • Захожу иногда
  • 72
  • 1 / 0
добрый день, прочитал весь топик, но не нашел ответа для себя.

вот мой код для маркета... может поможете?
пишет что ошибка какая то flypage

Код
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2010-02-12 1:30">
<shop>
  <name>kupivannu.ru</name>
  <company>Интернет магазин сантехники Купи Ванну</company>
  <url>http://kupivannu.ru/</url>

<currencies><currency id="RUR" rate="1"/></currencies>

<categories>
  <category id="1" parentId="0">Душевая кабина Albatros T09 R97</category>
  <category id="2" parentId="1">Ванна Appollo 1701</category>
  <category id="3" parentId="2">Душевые кабины Golf</category>
  <category id="4" parentId="3">Ванны Albatros Erica</category>
</categories>

<offers>
  <offer id="1" available="true">
  <url>http://www.kupivannu.ru/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=106&category_id=26&option=com_virtuemart&Itemid=64&vmcchk=1&Itemid=64</url>
  <price>37 268.60</price>
  <currencyId>RUR</currencyId>
  <categoryId>1</categoryId>
  <picture>http://www.kupivannu.ru/components/com_virtuemart/shop_image/product/_________________4c84a0a166320.jpg</picture>
  <local_delivery_cost>0</local_delivery_cost>
  <name>Душевая кабина Albatros T09 R97</name>
  <description>Итальянская Душевая кабина Albatros T09 R97 - гидромассаж, массаж стопы, без пара, ручной душ, верхний душ</description>
  <sales_notes>цена указана с учетом акции</sales_notes>
  </offer>


</offers>
</shop>
</yml_catalog>
*

Sova_barmak

  • Осваиваюсь на форуме
  • 39
  • 2 / 0
Тут спрашивали и раньше, но ответа не было, может кто уже знает. Что делать если в магазине несколько валют. У меня например в магазине цены в рублях, евро и долларах в админке и в магазине. Скрипт берет только числовое значение и дописывает RUR. Как сделать чтобы он автоматом еще и пересчитывал цену или хотя бы для каждой цены прописывал соответствующую валюту. Пробывал  сюда

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

тулить product_currency не хочет так(.

Подскажите пожалуйста может, кто знает вариант?
*

Xuga

  • Захожу иногда
  • 224
  • 122 / 0
  • Интернет-Маркетолог
Ребят ничего не получается. Подскажите какой должен быть код если включен sh404SEF?
Тот кто поможет получит приятный бонус :)

Код
<?php
//Пропишите для своей БД, пропишите наименование магазина, про адрес www.**********.ru тоже не забудьте
$hostname = "localhost";
$username = "123";
$password = "123";
$dbName = "123";
$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());
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>AllJap.ru</name>\n";
echo"<company>AllJap.ru</company>\n";
echo"<url>http://alljap.ru</url>\n";
echo"<currencies>\n";
echo"<currency  id=\"RUR\" 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";
$res = mysql_query($query) or die(mysql_error());
$rw=1;
while ($row=mysql_fetch_array($res)) {
$url="http://alljap.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=".$row['product_id'];
$product_full_image = "http://alljap.ru/components/com_virtuemart/shop_image/product/".$row['product_full_image'];
$product_name = $row['product_name'];
//$product_desc = $row['product_desc'];
$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";
?>

На выходе получили:
Код
category id="141" parentId="104">Titanium Automatic</category>

<category id="142" parentId="104">Lady Rose</category>
</categories>
<offers>
<offer id="1" available="true" bid="11">
<url>http://alljap.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=1</url>
<price>1232.00</price>
<currencyId>RUR</currencyId>
<categoryId>2</categoryId>
<picture>http://alljap.ru/components/com_virtuemart/shop_image/product/_________________4b9d0ec43f777.jpg</picture>

<name>Инструмент для чайной церемонии (Груша) HT-001"</name>
<description>Инструмент для чайной церемонии (Груша) HT-001</description>
</offer><offer id="2" available="true" bid="11">
<url>http://alljap.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=2</url>
<price>1102.00</price>
<currencyId>RUR</currencyId>
<categoryId>2</categoryId>
<picture>http://alljap.ru/components/com_virtuemart/shop_image/product/_________________4b9d1180de8d4.jpg</picture>

<name>Инструмент для чайной церемонии (Груша) HT-101"</name>
<description>Инструмент для чайной церемонии (Груша) HT-101</description>
</offer><offer id="3" available="true" bid="11">

По-идее все хорошо, анн нет...
1. Ссылки вида http://alljap.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=2 они нам не подходят так как ведет на страницу 404
2. Яндекс суМка ругается:
Определена кодировка: windows-1251 (строка 0, столбец 0)
Дата из файла: 2010-09-10 10:37 (строка 3, столбец 113)
[2010-09-10 10:38:56] (Fatal) [67:53] (Fatal) 521 Error parsing XML feed: Expected entity name for reference



Давайте решать пункт 1.
В свое время была аналогия, когда мы лечили RD_RSS для совместной работы с sh404sef
мы меняли:
Код
// url link to article
// & used instead of &amp; as this is converted by feed creator
    $item_link = 'index.php?option=com_content&task=view&id='. $row->id .'&Itemid='. $mainframe->getItemid( $row->id );
item_link = sefRelToAbs( $item_link );
На:
Код
// url link to article
// & used instead of &amp; as this is converted by feed creator
$item_link = JURI::base().'index.php?option=com_content&task=view&id='. $row->id .'&Itemid='. $mainframe->getItemid( $row->id );
    $item_link = JRoute::_( $item_link );

В данном конкретном случае строку:
Код
$url="http://alljap.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=".$row['product_id']; 
должны поменять на.... вопрос на что :)))
Думаем граждане...

Пункт 2. вообще не понимаю в чем косяк.

« Последнее редактирование: 10.09.2010, 11:39:12 от Xuga »
Рекламное агентство: Medianation
Skype: ibarchenkov

Группа по digital-маркетингу:
http://vk.com/dmarketing
*

Xuga

  • Захожу иногда
  • 224
  • 122 / 0
  • Интернет-Маркетолог
Немного повтыкав решил изменить код...
Меняем:
$url="http://alljap.ru/virtuemart?page=shop.product_details&flypage=flypage.tpl&product_id=".$row['product_id'];
На:
$url="http://alljap.ru/index.php?option=com_virtuemart&Itemid=".$Itemid['Itemid']."&category_id=".$row_cat['category_id'] ."&flypage=flypage.tpl&lang=ru&limitstart=0&page=shop.product_details&product_id=".$row['product_id'];

получаем ссылку вида:
http://alljap.ru/index.php?option=com_virtuemart&Itemid=&category_id=&flypage=flypage.tpl&lang=ru&limitstart=0&page=shop.product_details&product_id=1117
Которая уже sh404SEF редеректит во всяком случае на нужный нам товар:)))) но все равно не совсем корректно.....

Сразу обращаю внимание на ссылку..... у нас не проставились Itemid=КОСЯК&category_id=КОСЯК&
« Последнее редактирование: 10.09.2010, 12:10:45 от Xuga »
Рекламное агентство: Medianation
Skype: ibarchenkov

Группа по digital-маркетингу:
http://vk.com/dmarketing
*

Xuga

  • Захожу иногда
  • 224
  • 122 / 0
  • Интернет-Маркетолог
Яндекс принял.
Внес изменения:
- отбор только опубликованных категорий;
- отбор товаров только в наличии.
Вот, что получилось:
Код
<?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_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_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' 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_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"</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;

}


?>


ВСЕ ПРОСТО ШИКАРНО! но теперь 2 вопроса
1. При добавлении в яндекс
Определена кодировка: windows-1251 (строка 0, столбец 0)
Дата из файла: 2010-09-10 12:23 (строка 3, столбец 113)
[2010-09-10 12:24:20] (Fatal) [68:53] (Fatal) 521 Error parsing XML feed: Expected entity name for reference
2. Я не проставлял наличие товара. Как всем товарам быстро проставить наличие?
Рекламное агентство: Medianation
Skype: ibarchenkov

Группа по digital-маркетингу:
http://vk.com/dmarketing
*

Xuga

  • Захожу иногда
  • 224
  • 122 / 0
  • Интернет-Маркетолог
ыыыыыыыыыыыы я даун
68:53 это строка и символ
яндексу не нравится символ &
поехали дальше


Если вы не вбивали количество товаров на складе... а товаров у вас много и вы не хотите тратить пол дня на вбивание количества руками тогда читайте этот пост
http://joomlaforum.ru/index.php/topic,128919.msg705051.html#msg705051
« Последнее редактирование: 10.09.2010, 13:38:36 от Xuga »
Рекламное агентство: Medianation
Skype: ibarchenkov

Группа по digital-маркетингу:
http://vk.com/dmarketing
*

positivegrowl

  • Новичок
  • 4
  • 0 / 0
Ребята! Выкладываю скрипт немного доработанный, в нем убрана проблема с переменной <sales_notes>

Код
<?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://**********</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_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' 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="http://**********/index.php?page=shop.product_details&amp;option=com_virtuemart&amp;flypage=flypage.tpl&amp;product_id=".$row[$i]['product_id'];



$product_full_image = "http://**********/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']);

$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;

}


?>


Пробуйте, оценивайте=)
*

Sova_barmak

  • Осваиваюсь на форуме
  • 39
  • 2 / 0
Я был недавно уже писал :
Тут спрашивали и раньше, но ответа не было, может кто уже знает. Что делать если в магазине несколько валют. У меня например в магазине цены в рублях, евро и долларах. Скрипт берет только числовое значение и дописывает RUR. Как сделать чтобы он автоматом еще и пересчитывал цену или хотя бы для каждой цены прописывал соответствующую валюту. Пробывал  сюда
echo"<currencyId>RUB</currencyId>\n";

тулить product_currency не хочет так(.

Подскажите пожалуйста может, кто знает вариант?

Но ответа так и не дождался может кто уже решил эту проблему. Сегодня Яндекс прислал:
Цитировать
Шашлычница - барбекю"
1898 р. в наличии
На сайте магазина: 1898 UAH.
Гриль контактный Savoye"
356 р. в наличии
На сайте магазина: 356 EUR.

Помогите пожалуйста кто может
*

Xuga

  • Захожу иногда
  • 224
  • 122 / 0
  • Интернет-Маркетолог
Так-с геморой только начался.

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

Нож поварской японский овощной "птичий клюв" Samura/ красная пакка Damascus SD-0011"
2 150 руб. в наличии."


Сейчас сижу и жду пояснений Яндекса. Может мне кто-то пояснить в чем дело?
Рекламное агентство: Medianation
Skype: ibarchenkov

Группа по digital-маркетингу:
http://vk.com/dmarketing
*

positivegrowl

  • Новичок
  • 4
  • 0 / 0
Ты через yml выгружаешь?
*

Xuga

  • Захожу иногда
  • 224
  • 122 / 0
  • Интернет-Маркетолог
ыы ве ок, просто в яндексе чайники работают )
Рекламное агентство: Medianation
Skype: ibarchenkov

Группа по digital-маркетингу:
http://vk.com/dmarketing
*

weathercock

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Все сделал как написано.Вебмастер Яндекса пишет следующее:

Определена кодировка: utf-8 (строка 0, столбец 0)
Дата из файла: 2010-09-16 23:12 (строка 3, столбец 113)
Предупреждение: Название магазина превышает ограничение по длине в 20 символов. В качестве названия использовано имя домена: www.САЙТ.ru (строка 48, столбец 9)
Успешно обработано 640 предложений из 640

Как по Вашему-все правильно?

Название сайта урезать не хочу..Яндекс ведь сам его урежет?Правильно я понимаю?
*

weathercock

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
сделайте как он говорит - иначе вместо названия он будет использовать имя домена
Большое спасибо за ответ !
Т.е. прямо название сайте поменять? В Админке Joomla? Но на Алорисе тоже написано :Ювелирный интернет магазин Aloris.ru...
Считаю этот сайт образцом ювелирного сайта на Joomla,поэтому пример.
А с остальным-все номармально-что он про дату пишет и про кодировку?
*

weathercock

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
да нет - в скрипте выгрузки

Beagler, простите за глупые вопросы,но я использую скрипт из первой станицы темы.(Не Market_ya.php, а просто market.php) Где именно заменить нужно?
Где именно поменять?
И если не сложно вот ссылка на мой yml : http://elite-silver.ru/media/market.php
Как по Вашему- там все в порядке?
СПАСИБО !
*

Restorator

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Как амперсанд игнорить? помогите пожалуйста
Вопрос снят, поиск по теме+ плюс выпрямление рук. У меня юндекс ругался не на наименование товара а на категорию. htmlspecialchars на категорию и проблема снята
« Последнее редактирование: 20.09.2010, 09:11:48 от Restorator »
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Детали валидации YML файла

Ошибка: Неизвестный тип файла: text/x-c++; charset=utf-8
Фатальная ошибка: Внутренняя ошибка во время распаковки.

посоветуйте, пожалуйста, как с этим справиться?

VM 1.0.15
Или как включить функцию экспорта?
« Последнее редактирование: 28.09.2010, 00:03:31 от text »
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Теперь такая ошибка:

Детали валидации YML файла

--------------------------------------------------------------------------------
http://www.site.ru/market.yml
Ошибка: Неизвестный тип файла: text/x-c++; charset=iso-8859-1
Фатальная ошибка: Внутренняя ошибка во время распаковки

*

text

  • Захожу иногда
  • 93
  • 0 / 0
Не помогает. Та же ошибка:
Детали валидации YML файла

--------------------------------------------------------------------------------
http://www.сайт.ru/market.yml
Ошибка: Неизвестный тип файла: text/x-c++; charset=iso-8859-1
Фатальная ошибка: Внутренняя ошибка во время распаковки



Яндекс принял.
Внес изменения:
- отбор только опубликованных категорий;
- отбор товаров только в наличии.
Вот, что получилось:
Код
<?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_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_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' 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_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"</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;

}


?>
*

andx

  • Захожу иногда
  • 111
  • 6 / 0
Друзья, помогите пожалуйста, у меня почему то не выводится поле описания товара <description></description>. Вот такой вывод у меня получается:

Код
<offer id="4901" type="vendor.model" available="true" bid="11">
<url>http://kid-toy.ru/index.php?option=com_virtuemart&amp;Itemid=71&amp;category_id=162&amp;flypage=flypage.tpl&amp;lang=ru&amp;page=shop.product_details&amp;product_id=4901</url>
<price>15990.00</price>
<currencyId>RUR</currencyId>
<categoryId>162</categoryId>
<picture>http://kid-toy.ru/components/com_virtuemart/shop_image/product/pre2_3971.jpg</picture>
<delivery>true</delivery>
<vendor>Little Tikes</vendor>
<model>Игровой домик &quot;Дачный&quot;</model>
<description></description>
</offer>


Вот такая у меня конфигурация:

Код
<?php
include '../configuration.php';
$cfg = new JConfig();
$cfg_name = 'Детские игрушки интернет магазин, детские игрушки оптом, в розницу. Kid-toy.ru';
$cfg_company = 'ООО Ванда';
$cfg_url = 'kid-toy.ru';
 
$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_category_xref = $cfg->dbprefix."vm_product_category_xref";
$product_discount = $cfg->dbprefix."vm_product_discount";
 
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
 
mysql_query('set names cp1251');
 
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>$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_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_discount_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_price.product_currency,
$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'];
//ссылка для sh404SEF
$url="http://$cfg_url/index.php?option=com_virtuemart&amp;Itemid=71&amp;category_id=".$row[$i]['category_id']."&amp;flypage=flypage.tpl&amp;lang=ru&amp;page=shop.product_details&amp;product_id=".$row[$i]['product_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']);
$product_discount_id = $row[$i]['product_discount_id'];
$product_currency = $row[$i]['product_currency'];
$vendor = $row[$i]['mf_name'];
$product_price = substr($row[$i]['product_price'], 0, -3);
$product_cat_id=$row[$i]['category_id'];
echo"\n<offer id=\"".$row[$i]['product_id']."\" type=\"vendor.model\" available=\"true\" bid=\"$bid\">\n";
echo"<url>".$url."</url>\n";
$mysql_product_discount = mysql_query("SELECT amount FROM $product_discount WHERE discount_id='$product_discount_id'");
while ($array_product_discount = mysql_fetch_array($mysql_product_discount) )
$product_price = $product_price - $product_price * $array_product_discount['amount']  / 100;
echo"<price>$product_price</price>\n";
if ($product_currency == "RUB"){
         echo"<currencyId>RUR</currencyId>\n";
        } else {
echo"<currencyId>$product_currency</currencyId>\n";
}
echo"<categoryId>".$product_cat_id."</categoryId>\n";
 
if ($row[$i]['product_full_image']){
        echo"<picture>".$product_full_image ."</picture>\n";
        } else {
}
echo"<delivery>true</delivery> \n";
echo"<vendor>".HtmlSpecialChars($vendor)."</vendor>\n";
echo"<model>".HtmlSpecialChars(strip_tags($row[$i]['product_name']))."</model>\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 ya_unbag ($bug_str) {
$bug_str = str_replace('"','&quot;',$bug_str);
$bug_str = str_replace('&','&amp;',$bug_str);
$bug_str = str_replace('>','&gt;',$bug_str);
$bug_str = str_replace('<','&lt;',$bug_str);
$bug_str = str_replace("'","&apos;",$bug_str);
return $bug_str;
}

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;
}
?>

что тут может быть не так?

Конфиг:
  • Joomla 1.5.20
  • VM 1.1.5

ps. За помощь расстанусь с 500WMR
« Последнее редактирование: 30.09.2010, 10:26:15 от andx »
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Fatal error: Class 'JConfig' not found in "корень/md/market.php" on line 24

market.php :

Код: php
строка 23. include '../configuration.php';
строка 24. $cfg = new JConfig();

Подскажите, пожалуйста, как исправить ошибку.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор Centoff

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

Автор Gruz

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

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

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

Автор zmeyx

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

Автор gaalferov

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