joomla 1.5 yml-экспорт

Тема в разделе "Импорт и экспорт данных", создана пользователем Pingvin78, 02.07.2017.

  1. Offline

    Pingvin78 Недавно здесь

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

    В результате вот такую ошибку выдает
    Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Start tag expected, '<' not found ( (строка 67, столбец 48)
    echo"<?xml version=\"1.0\" encoding=\"utf-8\"?> )
    Файл создан под этой ссылкой https://www.engineer-oht.ru/market.yml
     
  2.  
  3. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    4. Правила написания сообщений

    4.4.
    При размещении в сообщении логов сервера, HTML-кода или другого кода программ (в первую очередь - больших портянок текста), используйте выделение кода с помощью спец-тегов HTML, PHP, CODE и т.п.
    4.5. Запрещено вставлять в своих сообщениях длинные куски файлов или что-то подобное. Остерегайтесь вставлять ваши css-файлы, шаблоны, php-файлы прямо в тело сообщения. Уважайте собеседников, цените их трафик, зачем им проматывать десять экранов что бы всего лишь узнать, что это был CSS-файл и у вас в нем где-то ошибка. Пользуйтесь функцией прикрепления файлов, форма загрузки файлов находится в расширенной форме ответа.
    Кодировка файла без ВОМ ?
     
  4. Offline

    Pingvin78 Недавно здесь

    Регистрация:
    02.07.2017
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Извините думал так будет нагляднее. Да кодировка без ВОМ и сохранял с кодировкой UTF-8, в базах данных тоже используется эта кодировка
     
  5. OlegK
    Offline

    OlegK Russian Joomla! Team Команда форума ⇒ Профи ⇐

    Регистрация:
    17.01.2011
    Сообщения:
    7 812
    Симпатии:
    771
    Пол:
    Мужской
    пробел между echo и литералом сделай
     
  6. Offline

    Pingvin78 Недавно здесь

    Регистрация:
    02.07.2017
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо, но не помогло (пробел поставил)
     

Поделиться этой страницей

Загрузка...