COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Ошибка работы 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 сказал:

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

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


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

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

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"?>

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

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 . "')

 

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

  • 2 months later...

Добрый день!

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

 

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

 

Спасибо!

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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