Adems

Ошибка работы feed yandex market

Recommended Posts

Здравствуйте! Начал неправильно работать feed yandex market выводит не все товары. Товары со статусом наличия 0 выводит не все. Добавляю новый товар, ставлю наличтие 0 и его нет в фиде, ставлю наличие появляется. Подскажите что может быть за глюк. версия 2.1..

Ничего не менял, единственное недавно переехал на другой хост.

 

Только что заметил что не выводятся товары у которых в БД в поле stock_status_id болше 12. Что это за поле, и что оно обозначает? Откуда берутся эти цифры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

catalog\model\export\yandex_market.php 2,1

catalog\model\extension\feed\yandex_market.php 2,3

Скрытый текст

    public function getProduct($allowed_categories, $out_of_stock_id, $vendor_required = true) {
        $query = $this->db->query("SELECT p.*, pd.name, pd.description, m.name AS manufacturer, p2c.category_id, IFNULL(ps.price, p.price) AS price FROM " . DB_PREFIX . "product p JOIN " . DB_PREFIX . "product_to_category AS p2c ON (p.product_id = p2c.product_id) " . ($vendor_required ? '' : 'LEFT ') . "JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_special ps ON (p.product_id = ps.product_id) AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ps.date_start < NOW() AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()) WHERE p2c.category_id IN (" . $this->db->escape($allowed_categories) . ") AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND (p.quantity > '0' OR p.stock_status_id != '" . (int)$out_of_stock_id . "') GROUP BY p.product_id");

        return $query->rows;
    }

 

 

//То есть сделать так, чтобы в фиде не отображалось только при установке количества 0:

    public function getProduct($allowed_categories, $out_of_stock_id, $vendor_required = true) {
        $query = $this->db->query("SELECT p.*, pd.name, pd.description, m.name AS manufacturer, p2c.category_id, IFNULL(ps.price, p.price) AS price FROM " . DB_PREFIX . "product p JOIN " . DB_PREFIX . "product_to_category AS p2c ON (p.product_id = p2c.product_id) " . ($vendor_required ? '' : 'LEFT ') . "JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_special ps ON (p.product_id = ps.product_id) AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ps.date_start < NOW() AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()) WHERE p2c.category_id IN (" . $this->db->escape($allowed_categories) . ") AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND p.quantity > '0' GROUP BY p.product_id");

        return $query->rows;
    }

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, BuslikDrev сказал:

catalog\model\extension\feed\yandex_market.php

  Скрыть содержимое

    public function getProduct($allowed_categories, $out_of_stock_id, $vendor_required = true) {
        $query = $this->db->query("SELECT p.*, pd.name, pd.description, m.name AS manufacturer, p2c.category_id, IFNULL(ps.price, p.price) AS price FROM " . DB_PREFIX . "product p JOIN " . DB_PREFIX . "product_to_category AS p2c ON (p.product_id = p2c.product_id) " . ($vendor_required ? '' : 'LEFT ') . "JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_special ps ON (p.product_id = ps.product_id) AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ps.date_start < NOW() AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()) WHERE p2c.category_id IN (" . $this->db->escape($allowed_categories) . ") AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND (p.quantity > '0' OR p.stock_status_id != '" . (int)$out_of_stock_id . "') GROUP BY p.product_id");

        return $query->rows;
    }

 

 

//То есть сделать так, чтобы в фиде не отображалось только при установке статуса нет в наличии:

    public function getProduct($allowed_categories, $out_of_stock_id, $vendor_required = true) {
        $query = $this->db->query("SELECT p.*, pd.name, pd.description, m.name AS manufacturer, p2c.category_id, IFNULL(ps.price, p.price) AS price FROM " . DB_PREFIX . "product p JOIN " . DB_PREFIX . "product_to_category AS p2c ON (p.product_id = p2c.product_id) " . ($vendor_required ? '' : 'LEFT ') . "JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_special ps ON (p.product_id = ps.product_id) AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ps.date_start < NOW() AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()) WHERE p2c.category_id IN (" . $this->db->escape($allowed_categories) . ") AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND p.stock_status_id != '" . (int)$out_of_stock_id . "' GROUP BY p.product_id");

        return $query->rows;
    }

 

 

//То есть сделать так, чтобы в фиде не отображалось только при установке статуса нет в наличии:

Наоборот надо сделать чтоб отображалось при установке статуса нет в наличии.

Даи и один момент, у меня версия 2.1 там нет этого файла по тому пути.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, Adems сказал:

//То есть сделать так, чтобы в фиде не отображалось только при установке статуса нет в наличии:

Наоборот надо сделать чтоб отображалось при установке статуса нет в наличии.


Ответ изменил наоборот.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, BuslikDrev сказал:


Ответ изменил наоборот.

не подскажете где в версии 2.1 поправить. Раньше проблем таких не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, Adems сказал:

не подскажете где в версии 2.1 поправить. Раньше проблем таких не было.

catalog\model\export\yandex_market.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, BuslikDrev сказал:

catalog\model\export\yandex_market.php

Спасибо! нашел.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, Adems сказал:

Спасибо! нашел.

 

Чегото не получается ошибка: <b>Notice</b>: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') GROUP BY p.product_id' at line 1<br />Error No: 1064<br />SELECT p.*, pd.name, pd.description, m.name AS manufacturer, p2c.category_id, IFNULL(ps.price, p.price) AS price FROM p7r1s_product p JOIN p7r1s_product_to_category AS p2c ON (p.product_id = p2c.product_id) LEFT JOIN p7r1s_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN p7r1s_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN p7r1s_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN p7r1s_product_special ps ON (p.product_id = ps.product_id) AND ps.customer_group_id = '1' AND ps.date_start < NOW() AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()) WHERE p2c.category_id IN (127,128,130,131,132,141,77,88,142,70,140,124,76,125,126,137,74,134,117,133,138,139,89) AND p2s.store_id = '0' AND pd.language_id = '1' AND p.date_available <= NOW() AND p.status = '1' AND p.stock_status_id != '11') GROUP BY p.product_id in <b>/home/fffff/.com.ua/www/system/library/db/mysqli.php</b> on line <b>46</b><b>Notice</b>: Trying to get property of non-object in <b>/home/fffff/com.ua/www/catalog/model/export/yandex_market.php</b> on line <b>17</b><b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/ююююююю/www/catalog/controller/feed/yandex_market.php</b> on line <b>73</b><?xml version="1.0" encoding="windows-1251"?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

теперь нормально. Но всё равно не отображаются товары с наличием 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, Adems сказал:

наличием 0

Что значит с наличием ноль? Вы количество пропишите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, BuslikDrev сказал:

Что значит с наличием ноль? Вы количество пропишите.

Не знаю может мы не поняли друг друга. У меня не отображаются товары в фиде с количеством товара на складе 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
31 минуту назад, Adems сказал:

Не знаю может мы не поняли друг друга. У меня не отображаются товары в фиде с количеством товара на складе 0

Я вам первый раз дал вариант когда количество товара ноль, а вы мне начали говорить когда ставите статус нет в наличии. Определитесь какой критерий нужен, либо оба (убрать это: AND (p.quantity > '0' OR p.stock_status_id != '" . (int)$out_of_stock_id . "')).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, BuslikDrev сказал:

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

Я наверное не правильно вам сказал. Надо чтоб отображались товары все, с количеством 0, нет на складе, когда их много или один. С любым статусом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, BuslikDrev сказал:

Я вам первый раз дал вариант когда количество товара ноль, а вы мне начали говорить когда ставите статус нет в наличии. Определитесь какой критерий нужен, либо оба (убрать это: (p.quantity > '0' OR p.stock_status_id != '" . (int)$out_of_stock_id . "')).

когда убираю эту строчку Ошибка синтаксического анализа XML: лишние данные после элемента документа
Адрес: /index.php?route=feed/yandex_market
Строка 1, символ 14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, Adems сказал:

когда убираю эту строчку Ошибка синтаксического анализа XML: лишние данные после элемента документа
Адрес: /index.php?route=feed/yandex_market
Строка 1, символ 14:

Скрытый текст

AND (p.quantity > '0' OR p.stock_status_id != '" . (int)$out_of_stock_id . "')

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день!

Подскажите как исправить ошибку

 

Ошибка синтаксического анализа XML: лишние данные после элемента документа
Адрес: http://>>>>>>.ru/index.php?route=extension/feed/yandex_market
Строка 1, символ 15:

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу