Новости Joomla

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

Exciter

  • Захожу иногда
  • 155
  • 9 / 0
  • Теория + практика
После муторного колдовства с кодом получил следующий рабочий вариант кода.
Код
<?php
header ("Content-Type:text/xml");
define('_JEXEC', 1);

if (file_exists(__DIR__ . '/defines.php'))
{
include_once __DIR__ . '/defines.php';
}

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

require_once JPATH_BASE . '/includes/framework.php';

$app = JFactory::getApplication('site');

define('DS', DIRECTORY_SEPARATOR);
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS."lib".DS."factory.php");
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS."lib".DS."functions.php");        


$cfg = new JConfig();
 
//NAME - Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров.
//Не должно содержать более 20 символов). Нельзя использовать слова, не имеющие отношения к
//наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина,
//должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении
//данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента.
$cfg_name = $cfg->fromname;

$cfg_company = $cfg->sitename; //Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации.
$cfg_url = 'site.ru'; //URL-адрес главной страницы магазина без http://
$bid = '11'; // Ставка за клик (в центах)
$currency = 'RUR';
 
$hostname = $cfg->host;
$username = $cfg->user;
$password = $cfg->password;
$dbName = $cfg->db;

$category = $cfg->dbprefix."jshopping_categories";
$tb_product = $cfg->dbprefix."jshopping_products";
$tb_manufacturer = $cfg->dbprefix."jshopping_manufacturers";
$tb_product_category_xref = $cfg->dbprefix."jshopping_products_to_categories";

try {
   $pdo = new PDO("mysql:host={$hostname};dbname={$dbName}", $username, $password);
   // Исправьте, если у вас другая кодировка в БД
   $pdo->exec('SET NAMES utf8');
  
   echo "<?xml version=\"1.0\" encoding=\"utf8\"?>\n";
   echo "<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n";
   echo "<yml_catalog date=\"";
   echo date('Y-m-d H:i');
   echo "\">\n";
   echo "<shop>\n";
   echo " <name>$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";
      $res = $pdo->query("SELECT * FROM $category");
      while ($row_cat= $res->fetch(PDO::FETCH_ASSOC)) {
         $cat_parent_id=$row_cat['category_parent_id'];
         $parent = ($cat_parent_id != 0)? " parentId=\"{$cat_parent_id}\"" : "";
// Ex* Обрабатываем амперсанды и убиваем кавычки
$row_cat['name_ru-RU'] = htmlspecialchars($row_cat['name_ru-RU']);
         echo " <category id=\"{$row_cat['category_id']}\"{$parent}>{$row_cat['name_ru-RU']}</category>\n";
      }
      unset($res);
   echo" </categories>\n\n";
  
   // Секция описания товаров
   echo" <offers>\n";
  
  
   $res = $pdo->query("SELECT id, `name_ru-RU` as name FROM {$cfg->dbprefix}jshopping_products_extra_fields");
  
   $extra_info = $res->fetchAll(PDO::FETCH_ASSOC);
   $extra_info = nomalizeArray($extra_info, 'name');
  
   $extra_select = '';
   $extra_cnt = count($extra_info);
   if($extra_cnt != 0) {
      for($i = 1; $i <= $extra_cnt; $i++) {
         $extra_select .= "{$tb_product}.extra_field_{$i},";
      }
   }
   //{$extra_select}
   $query = "
      SELECT
         {$tb_product}.product_id,
         {$tb_product}.`name_ru-RU` as product_name,
         {$tb_manufacturer}.`name_ru-RU` as mf_name,
         {$tb_manufacturer}.`manufacturer_id`,
         {$tb_product_category_xref}.`category_id`,
         {$tb_product}.`product_price`,
         {$tb_product}.`product_id` as product_sku,
         {$tb_product}.`product_quantity`,
         {$tb_product}.`image` as product_full_image,
         {$tb_product}.`short_description_ru-RU` as product_s_desc
      FROM
         {$tb_product}  
      LEFT JOIN {$tb_product_category_xref}
         ON {$tb_product}.product_id = (SELECT {$tb_product_category_xref}.product_id
            FROM {$tb_product_category_xref}
            WHERE  {$tb_product_category_xref}.product_id = {$tb_product}.product_id
            GROUP BY {$tb_product_category_xref}.product_id)
      LEFT JOIN {$tb_manufacturer}
         ON {$tb_product}.product_manufacturer_id = {$tb_manufacturer}.manufacturer_id

      WHERE {$tb_product}.product_publish='1'
      GROUP BY {$tb_product}.product_id";
    // Последнее значение в WHERE (после AND) поменяйте на своё или уберите совсем. AND {$tb_product}.delivery_times_id='2'
    //В моем случае это означает выгрузку только тех товаров, которые есть на складе.
  
   $product_log = Array();
   $res = $pdo->query($query);
   while ($row= $res->fetch(PDO::FETCH_ASSOC)) {
      if (!in_array($row['product_id'],$product_log) && ($row['product_price']) && $row['product_price'] > 0) {  
         $product_log[] = $row['product_id'];
         $product_price = substr($row['product_price'], 0, -3);
        
         //Определяем категорию товара
         $query2 = "SELECT `category_id` FROM {$tb_product_category_xref} WHERE `product_id`={$row['product_id']}";
         $res2 = $pdo->query($query2);
         $row2= $res2->fetch(PDO::FETCH_ASSOC);
        
         echo "\n <offer id=\"".$row['product_id']."\" available=\"true\" bid=\"$bid\">\n";
         echo " <url>http://".$cfg_url.SEFLink("index.php?option=com_jshopping&controller=product&task=view&category_id={$row2['category_id']}&product_id={$row['product_id']}")."</url>\n";
        
         echo " <price>$product_price</price>\n";
         // Валюта в которой указаны Ваши цены
         echo " <currencyId>".$currency."</currencyId>\n";
         echo " <categoryId>".$row2['category_id']."</categoryId>\n";
        
         if(!empty($row['product_full_image'])) {
            echo " <picture>http://$cfg_url/components/com_jshopping/files/img_products/{$row['product_full_image']}</picture>\n";
         }
        
         // Возможность доставки
         echo " <delivery>true</delivery> \n";
         //Заменяем непечатные символы
         echo " <name>".htmlspecialchars($row['product_name'])."</name>\n";
         echo " <description>".htmlspecialchars(strip_tags($row['product_s_desc']))."</description>\n";
         for($i = 1; $i <= $extra_cnt; $i++) {
            if(!empty($row['extra_field_'.$i])) {
            //var_dump($row['extra_field_'.$i]);
               echo " <param name=\"{$extra_info[$i]}\">".htmlspecialchars($row['extra_field_'.$i])."</param>\n";
            }
         }
         echo " </offer>\n";
      }
   }
  
   echo" </offers>\n";
   echo"</shop>\n";
   echo"</yml_catalog>\n";

} catch (Exception $e) {
    echo $e->getMessage();
}

function nomalizeArray($arr, $val, $key = 'id') {
   $newArr = Array();
   foreach($arr as $k => $v) {
      $newArr[$v[$key]] = $v[$val];
   }
   return $newArr;
}

Получается ссылка вида /magazin/product/view/30/8.html
Но это тоже не совсем то что надо. Подскажите куда копать дальше?
*

ria_andy

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
А что вообще с этим делать?? куда вставлять то)?
*

Exciter

  • Захожу иногда
  • 155
  • 9 / 0
  • Теория + практика
А что вообще с этим делать?? куда вставлять то)?
Никуда. Это автономный скрипт.
*

ria_andy

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Никуда. Это автономный скрипт.

А как им пользоваться то))
*

nevigen

  • Moderator
  • 10431
  • 862 / 25
  • http://n*****n.com
А что вообще с этим делать?? куда вставлять то)?
Флуд
Спойлер
[свернуть]
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Satool

  • Захожу иногда
  • 139
  • 2 / 0
Перестал работать вот этот скрипт
Спойлер
[свернуть]
Последнее что выводит это тег <offers>
Скрипт используется для вывода всех товаров в Яндекс.Вебмастер
« Последнее редактирование: 25.05.2014, 10:36:33 от Satool »
*

pathfinder

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Вот и у меня не получается выгрузить данные в Яндекс Маркет.
Установлено: Joomla 2.5.14 + JoomShopping 3.15.3
Был найден код:
В корне сайта лежит файл: yml.php
(адрес сайта не введен)
Код
<?php header ("Content-Type:text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="<?php echo date('Y-m-d H:i'); ?>">
<?php
if (!defined('_JEXEC')) {
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
/* Required Files */
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
/* To use Joomla's Database Class */
require_once ( JPATH_BASE.DS.'libraries'.DS.'joomla'.DS.'factory.php' );
require_once ( JPATH_LIBRARIES.DS.'import.php'); // Joomla library imports.
/* Create the Application */
$app = JFactory::getApplication('site')->initialise();
}   

$cfg = new JConfig();
 
//NAME - Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров.
//Не должно содержать более 20 символов). Нельзя использовать слова, не имеющие отношения к
//наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина,
//должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении
//данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента.
$cfg_name = $cfg->fromname;
 
$cfg_company = $cfg->sitename; //Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации.
$cfg_url = 'адрес-сайта.com'; //URL-адрес главной страницы магазина без http://
$bid = '10'; // Ставка за клик (в центах)
$currency = 'RUR';
 
$hostname = $cfg->host;
$username = $cfg->user;
$password = $cfg->password;
$dbName = $cfg->db;
 
$category = $cfg->dbprefix."jshopping_categories";
$tb_product = $cfg->dbprefix."jshopping_products";
$tb_manufacturer = $cfg->dbprefix."jshopping_manufacturers";
$tb_product_category_xref = $cfg->dbprefix."jshopping_products_to_categories";


 
try {
    $pdo = new PDO("mysql:host={$hostname};dbname={$dbName}", $username, $password);
// Исправьте, если у вас другая кодировка в БД
$pdo->exec('SET NAMES utf8');
 


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";
$res = $pdo->query("SELECT * FROM $category");
while ($row_cat= $res->fetch(PDO::FETCH_ASSOC)) {
$cat_parent_id=$row_cat['category_parent_id'];
$parent = ($cat_parent_id != 0)? " parentId=\"{$cat_parent_id}\"" : "";
echo "<category id=\"{$row_cat['category_id']}\"{$parent}>{$row_cat['name_ru-RU']}</category>\n";
}
unset($res);
echo"</categories>\n";
 
// Секция описания товаров
echo"<offers>\n";
 
 
$res = $pdo->query("SELECT id, `name_ru-RU` as name FROM {$cfg->dbprefix}jshopping_products_extra_fields");
 
$extra_info = $res->fetchAll(PDO::FETCH_ASSOC);
$extra_info = nomalizeArray($extra_info, 'name');
 
$extra_select = '';
$extra_cnt = count($extra_info);
if($extra_cnt != 0) {
for($i = 1; $i <= $extra_cnt; $i++) {
$extra_select .= "{$tb_product}.extra_field_{$i},";
}
}
$query = "CREATE TEMPORARY TABLE tmp (category_id int,product_id int) ENGINE MyISAM;";
$pdo->query($query);
$query = "INSERT INTO tmp (category_id, product_id) SELECT category_id, product_id FROM {$tb_product_category_xref} GROUP BY product_id";
$pdo->query($query);
$query = "
SELECT
{$extra_select}
{$tb_product}.product_id,
{$tb_product}.`name_ru-RU` as product_name,
{$tb_manufacturer}.`name_ru-RU` as mf_name,
{$tb_manufacturer}.`manufacturer_id`,
tmp.`category_id`,
{$tb_product}.`product_price`,
{$tb_product}.`product_id` as product_sku,
{$tb_product}.`product_quantity`,
{$tb_product}.`product_full_image` as product_full_image,
{$tb_product}.`short_description_ru-RU` as product_s_desc
FROM
{$tb_product}
LEFT JOIN tmp ON {$tb_product}.product_id = tmp.product_id
LEFT JOIN {$tb_manufacturer}
ON {$tb_product}.product_manufacturer_id = {$tb_manufacturer}.manufacturer_id
 
WHERE {$tb_product}.product_publish='1'
GROUP BY {$tb_product}.product_id
";
$res = $pdo->query($query);
while ($row= $res->fetch(PDO::FETCH_ASSOC)) {
if (!in_array($row['product_id'],$product_log) && ($row['product_price']) && $row['product_price'] > 0) {
$product_log[] = $row['product_id'];
$product_price = substr($row['product_price'], 0, -3);
echo "\n<offer id=\"".$row['product_id']."\" available=\"true\" bid=\"$bid\">\n";

$sef = "http://$cfg_url".JRoute::_("index.php?option=com_jshopping&controller=product&task=view&category_id=".$row['category_id']."&product_id=".$row['product_id']);
echo "<url>".$sef."</url>\n";
echo "<price>$product_price</price>\n";
// Валюта в которой указаны Ваши цены
echo "<currencyId>".$currency."</currencyId>\n";
echo "<categoryId>".$row['category_id']."</categoryId>\n";
 
if(!empty($row['product_full_image'])) {
echo "<picture>http://$cfg_url/components/com_jshopping/files/img_products/{$row['product_full_image']}</picture>\n";
}
 
// Возможность доставки
echo "<delivery>true</delivery> \n";
echo "<name>".$row['product_name']."</name>\n";
echo"<vendor>".$row['mf_name']."</vendor>";
$row['product_s_desc'] = trim(str_replace("&nbsp;","",$row['product_s_desc']));
echo "<description>".htmlspecialchars(strip_tags($row['product_s_desc']))."</description>\n";
for($i = 1; $i <= $extra_cnt; $i++) {
if(!empty($row['extra_field_'.$i])) {
 
//var_dump($row['extra_field_'.$i]);
echo "<param name=\"{$extra_info[$i]}\">".htmlspecialchars($row['extra_field_'.$i])."</param>\n";
}
}
echo "</offer>\n";
}
}
$pdo->query("DROP TEMPORARY TABLE tmp");
 
} catch (Exception $e) {
    echo $e->getMessage();
}
 
 
function nomalizeArray($arr, $val, $key = 'id') {
$newArr = Array();
foreach($arr as $k => $v) {
$newArr[$v[$key]] = $v[$val];
}
return $newArr;
}
?>
        </offers>
    </shop>
</yml_catalog>
 
И при проверке в Яндексе выдает ошибку:
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unknown element 'br' (строка 4, столбец 4)
Просьба помочь, что не так?
(Не силен в php)
*

Exciter

  • Захожу иногда
  • 155
  • 9 / 0
  • Теория + практика
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unknown element 'br' (строка 4, столбец 4)
Просьба помочь, что не так?
Скрипт нормальный. Сам XML в студию!
Вероятно, ошибка где то в данных.

Всем участникам обсуждения хочу сказать, что в скрипте отсутствует преобразование амперсандов &amp;
Из за этого также будут глюки.
Я не знаю, какой скрипт в этом топе правильный. И именно поэтому не выкладываю "рабочую" версию.
Для названия код должен быть таким
Код
echo "<name>".str_replace('&','&amp;', $row['product_name'])."</name>\n";
« Последнее редактирование: 02.06.2014, 14:39:05 от Exciter »
*

pathfinder

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
*

Exciter

  • Захожу иногда
  • 155
  • 9 / 0
  • Теория + практика
Вот сам файл:
Для чего Вы выложили сам скрипт?
Читайте сообщения внимательнее.
*

pathfinder

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
*

Exciter

  • Захожу иногда
  • 155
  • 9 / 0
  • Теория + практика
У Вас в XML лезут сообщения php. Это видно даже не вооружённым глазом.
Код
<br />
<b>Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at /home/u158077/lagoon-giftscom/www/yml.php:2) in <b>/home/u158077/lagoon-giftscom/www/libraries/joomla/session/session.php</b> on line <b>532</b><br />
<br />
<b>Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/u158077/lagoon-giftscom/www/yml.php:2) in <b>/home/u158077/lagoon-giftscom/www/libraries/joomla/session/session.php</b> on line <b>532</b><br />
Разбирайтесь с настройками php (отключить сообщения) или убейте в коде header ("Content-Type:text/xml");

И вообще. Сам скрипт на мой взгляд неправильный. Часть выводится необрабатываемым текстом, а часть php скриптом. Это неверный подход. Отсюда и глюки. В этой ветке где-то был нормальный скрипт. Я делал с него свой вариант под себя, но забросил пока. В конце недели буду делать нормальный экспорт.
*

pathfinder

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Отключил вывод ошибок php в файле .htaccess :
Код
php_flag display_errors off 
php_flag display_startup_errors off

Теперь прайс-лист успешно проходит проверку на Яндексе.

Можно указать на "нормальный" скрипт в этой ветке, что то перепробовал многие и не работают.
*

sinexua

  • Новичок
  • 7
  • 0 / 0
Здравствуйте.

вот такое начало, подскажите как бороться.  сайт.ru/yandex.php
---
This page contains the following errors:

error on line 44 at column 161: Extra content at the end of the document
Below is a rendering of the page up to the first error.
---
идут перечисление категорий в строку затем Fatal error: Call to a member function fetch() on a non-object in ХХХХ.ru/test.php on line 102

Код
<?php
header ("Content-Type:text/xml");
include 'configuration.php';
$cfg = new JConfig();
$cfg_name = $cfg->ХХХХ;
$js_main_page = "ХХХХ.ru";
 
$cfg_company = $cfg->ХХХХ;
$cfg_url = 'ХХХХ';
$bid = '10';
$currency = 'RUR';

$hostname = $cfg->host;
$username = $cfg->user;
$password = $cfg->password;
$dbName = $cfg->db;

$category = $cfg->dbprefix."jshopping_categories";
$tb_product = $cfg->dbprefix."jshopping_products";
$tb_manufacturer = $cfg->dbprefix."jshopping_manufacturers";
$tb_product_category_xref = $cfg->dbprefix."jshopping_products_to_categories";

try {
    $pdo = new PDO("mysql:host={$hostname};dbname={$dbName}", $username, $password);
// Исправьте, если у вас другая кодировка в БД
$pdo->exec('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";
$res = $pdo->query("SELECT * FROM $category");
while ($row_cat= $res->fetch(PDO::FETCH_ASSOC)) {
$cat_parent_id=$row_cat['category_parent_id'];
$parent = ($cat_parent_id != 0)? " parentId=\"{$cat_parent_id}\"" : "";
echo "<category id=\"{$row_cat['category_id']}\"{$parent}>{$row_cat['name_ru-RU']}</category>\n";
}
unset($res);
echo"</categories>\n";

// Секция описания товаров
echo"<offers>\n";


$res = $pdo->query("SELECT id, `name_ru-RU` as name FROM {$cfg->dbprefix}jshopping_products_extra_fields");

$extra_info = $res->fetchAll(PDO::FETCH_ASSOC);
$extra_info = nomalizeArray($extra_info, 'name');

$extra_select = '';
$extra_cnt = count($extra_info);
if($extra_cnt != 0) {
for($i = 1; $i <= $extra_cnt; $i++) {
$extra_select .= "{$tb_product}.extra_field_{$i},";
}
}
$query = "
SELECT
{$extra_select}
{$tb_product}.product_id,
{$tb_product}.`name_ru-RU` as product_name,
{$tb_product}.`alias_ru-RU` as product_alias,
{$tb_manufacturer}.`name_ru-RU` as mf_name,
{$tb_manufacturer}.`manufacturer_id`,
{$tb_product}.`product_price`,
{$tb_product}.`product_id` as product_sku,
{$tb_product}.`product_quantity`,
{$tb_product}.`product_full_image` as product_full_image,
{$tb_product}.`short_description_ru-RU` as product_s_desc,
{$tb_product_category_xref}.`category_id`,
{$category}.`alias_ru-RU` as cat_name
FROM
{$tb_product}
LEFT JOIN {$tb_product_category_xref}
ON {$tb_product}.product_id = {$tb_product_category_xref}.product_id
LEFT JOIN {$category}
ON {$tb_product_category_xref}.`category_id` = {$category}.category_id
LEFT JOIN {$tb_manufacturer}
ON {$tb_product}.product_manufacturer_id = {$tb_manufacturer}.manufacturer_id

WHERE {$tb_product}.product_publish='1'
GROUP BY {$tb_product}.product_id
";

$product_log = Array();
$res = $pdo->query($query);
while ($row= $res->fetch(PDO::FETCH_ASSOC)) {
if (!in_array($row['product_id'],$product_log) && ($row['product_price']) && $row['product_price'] > 0) {
$product_log[] = $row['product_id'];
$product_price = substr($row['product_price'], 0, -3);
echo "\n<offer id=\"".$row['product_id']."\" available=\"".($row['product_quantity'] > 0 ? "true" : "false")."\" bid=\"$bid\">\n";
echo "<url>http://$cfg_url/{$js_main_page}/{$row['cat_name']}/{$row['product_alias']}.html</url>\n";
echo "<price>$product_price</price>\n";
// Валюта в которой указаны Ваши цены
echo "<currencyId>".$currency."</currencyId>\n";
echo "<categoryId>".$row['category_id']."</categoryId>\n";
if(!empty($row['product_full_image'])) {
echo "<picture>http://$cfg_url/components/com_jshopping/files/img_products/{$row['product_full_image']}</picture>\n";
}

// Возможность доставки
echo "<delivery>true</delivery> \n";
echo "<name>".$row['product_name']."</name>\n";
echo "<description>".htmlspecialchars(strip_tags($row['product_s_desc']))."</description>\n";
for($i = 1; $i <= $extra_cnt; $i++) {
if(!empty($row['extra_field_'.$i])) {

//var_dump($row['extra_field_'.$i]);
echo "<param name=\"{$extra_info[$i]}\">".htmlspecialchars($row['extra_field_'.$i])."</param>\n";
}
}
echo "</offer>\n";
}
}


echo"</offers>\n";
echo"</shop>\n";
echo"</yml_catalog>\n";

} catch (Exception $e) {
    echo $e->getMessage();
}


function nomalizeArray($arr, $val, $key = 'id') {
$newArr = Array();
foreach($arr as $k => $v) {
$newArr[$v[$key]] = $v[$val];
}
return $newArr;
}
 
?>
« Последнее редактирование: 09.06.2014, 14:38:03 от sinexua »
*

kira

  • Захожу иногда
  • 155
  • 0 / 3
С разрешения автора "Виталик" http://joomlaforum.ru/index.php?action=profile;u=22237 выкладываю

Позволяет выводить только те товары которые нужны и задавать цену клика для каждого товара

  • Архив wishboxyandexmarket.tar устанавливаем через менеджер установки
  • Папку wishboxyandexmarket копируем в components/com_jshopping/views
  • Файл wishboxyandexmarket.php копируем в components/com_jshopping/controllers
  • Файлы ru-RU.plg_jshopping_wishboxyandexmarket.ini  ru-RU.plg_jshopping_wishboxyandexmarket.sys administrator/language/ru-RU

поставила на Joomla 2.5.9 + JoomShopping 3.15.3
в сформированном yml-файле вот такая ошибка:
"</description><br/><b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/host1307668/site.ru/htdocs/www/components/com_jshopping/views/wishboxyandexmarket/tmpl/default.php</b> on line <b>55</b><br/></offer>"
*

Delfi

  • Захожу иногда
  • 53
  • 13 / 0
Я понимаю, что скрипт выложен был как есть, но можно было бы оставить файл, а не удалять.
Ведь несколько вариантов всегда лучше, чем один. Хотя могу ошибаться, может скрипт уже лучше переписать под новые версии.
В итоге не понятно - здесь обсуждается мой скрипт или тот, что выложен на предыдущей странице.

*

arsstorm

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Приветствую.

Уважаемые, подскажите, пожалуйста, нубу, что куда и как скачать. Дайте свежую версию скрипта и хотя бы минимальный ридми (ибо я далёк от этого).

Пожалуйста :)
*

nevigen

  • Moderator
  • 10431
  • 862 / 25
  • http://n*****n.com
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

arsstorm

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
http://joomlaforum.ru/index.php/topic,309395.0.html

Разве в этой ветке обсуждались именно платные решения? Тут, как я понял, именно наоборот было.
*

timson

  • Осваиваюсь на форуме
  • 43
  • 3 / 0
И вообще. Сам скрипт на мой взгляд неправильный. Часть выводится необрабатываемым текстом, а часть php скриптом. Это неверный подход. Отсюда и глюки. В этой ветке где-то был нормальный скрипт. Я делал с него свой вариант под себя, но забросил пока. В конце недели буду делать нормальный экспорт.
Отлично! Будем ждать ваш вариант.
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Сообщение это было давно, ждать не стоит.
Можете пока попробовать мой вариант.

Там в строке 19 нужно только прописать URL вашего сайта.
*

JuliaArute

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Друзья.

Яндекс выдает следующую ошибку: Определена кодировка: utf-8
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unescaped '<' not allowed in attributes values (ml_catalog SYSTEM "shops.dtd"> (строка 3, столбец 20)
<yml_catalog date=")

Никто не проконсультирует? Заранее спасибо.
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
ЯМ говорит, что не закрыта скобка у вас, нужно смотреть код.
*

JuliaArute

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Я сохраняю документ в Notepad++. При сохранении в кодировке utf-8 выдает ошибку: Warning: Cannot modify header information - headers already sent by (output started at /home/xsystem/public_html/yml.php:1) in /home/xsystem/public_html/yml.php on line 1, причем после этой ошибки скрипт прекрасно выдает список товаров с ссылками и категориями, все, как положено. Когда пытаюсь сохранить в utf-8 (без BOM), чтобы устранить ошибку Warning, появляется уже вот это:

This page contains the following errors:

error on line 3 at column 19: Unescaped '<' not allowed in attributes values
Below is a rendering of the page up to the first error.

Причем, когда я пытаюсь предложить Яндексу вариант с ошибкой Warning, он выдает Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unescaped '<' not allowed in attributes values (ml_catalog SYSTEM "shops.dtd"> (строка 3, столбец 20)
<yml_catalog date=") (то есть то же самое)

Код брала с первой страницы темы, с заглавного топика.
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Дайте сам файл или ссылку, так сложно сказать почему.
*

AvF

  • Новичок
  • 4
  • 0 / 0
Цитировать
This XML file does not appear to have any style information associated with it. The document tree is shown below.
*

parap

  • Новичок
  • 7
  • 0 / 0
DEL
Допер сам на свежую голову...  ;D

« Последнее редактирование: 31.05.2015, 08:59:52 от parap »
*

parap

  • Новичок
  • 7
  • 0 / 0
Вопрос по размещению файла.
Собранный по примерам в этой ветке файл php заработал и генерит нужную форму YML.
Однако не хочется оставлять его в корне, надо бы засунуть в отдельный каталог и запаролить доступ.

При таком переносе и соответственно корректировке исходный путей с добавлением /.. для выхода на уровень выше
require_once JPATH_BASE . '/../includes/framework.php';

framework.php начинает ругаться "No configuration file found and no installation code available"
чего он не делает при исходном размещении файла в корне сайта.

Происходит следующее:
Скрипт всасывает defines, где прописаны пути к configuration.php
require_once JPATH_BASE . '/../includes/defines.php';
Но на следующем шаге
require_once JPATH_BASE . '/../includes/framework.php';
во framework начинает обрабатываться сценарий
if (!file_exists(JPATH_CONFIGURATION . '/configuration.php')

Т.е. configuration как бы есть, но скрипт его не вилит
Как это полечить?
*

Alex Revo

  • Завсегдатай
  • 1995
  • 109 / 0
Допиши просто в файл параметр вызова скрипта и в самом начале проверяй его
/yml.php?key=secret_key

если слово не подходит exit();

И не надо будет мудрить с переносом и паролями

Я аналогичным образом также разделяю каналы. В товарах используются разные метки в урлах в зависимости от запроса фида для Маркета, Мерчанта и т.п.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Импорт/экспорт

Автор apirat

Ответов: 903
Просмотров: 180827
Последний ответ 17.06.2022, 21:10:28
от marksetter
Интеграция с Yandex.Market (заказы)

Автор Mikle_Shaman

Ответов: 10
Просмотров: 1324
Последний ответ 27.04.2022, 10:14:17
от Mikle_Shaman
Импорт товаров в Яндекс.Объявления

Автор demll

Ответов: 1
Просмотров: 1354
Последний ответ 04.02.2021, 09:32:19
от khan-alex
Для настройки Яндекс Маркет

Автор stardel

Ответов: 6
Просмотров: 2568
Последний ответ 03.12.2019, 20:00:35
от zikkuratvk
Перенос товаров из магазнина на Joomla 2.5 на Joomla 3.9

Автор dron

Ответов: 3
Просмотров: 1638
Последний ответ 09.04.2019, 14:27:51
от nevigen