повтор товаров при формировании прайса yml market.php
скорее всего этот вопрос многие уже задавали, но поиск по форуму не помог.
при формировании прайса для яндекса yml market.php пробегает по всей базе товаров и если на один товар есть ссылки в разных категориях, то товар выводится столько раз, сколько есть ссылок, видимо это происходить из-за того, что цикл задан для категорий (сначала категория, затем товары в категории).
например товар Велосипед (id =1) есть в разных (не вложенных) категориях Спецпредложение (cathegory_id =1), Лето (cathegory_id =2) и Транспорт (cathegory_id =3), в этом случае в прайс yml товар будет выведен 3 раза.
При проверке яндекс ругается и загружать прайс отказывается.
до 100 товаров, если цены меняются редко, можно смириться с потерей времени и откорректировать вручную, но в других случаях это уже глупость.
по хорошему, должна быть стандартная процедура проверки после формирования прайса на предмет задвоения id товаров и если есть повторы, то предложение/вопрос в какой категории прайса оставить товар, либо специально для прайса яндекса при повторе id тупо заменять его на несуществующий (например с префиксом), но ссылку на товар другие данные оставлять без изменения. (не знаю проверяет ли яндекс повтор ссылок).
мне в принципе подойдет простой вариант (вообще не выводить повторы).
к сожалению в пхп я не разбираюсь, поэтому обращаюсь к тем кто знает: подскажите в каком месте и какой код добавить в market.php чтобы выполнялась проверка на предмет того, что товар с таким ID уже выгружен в прайс.
Заранее благодарю за помощь!
либо специально для прайса яндекса при повторе id тупо заменять его на несуществующий (например с префиксом), но ссылку на товар другие данные оставлять без изменения. (не знаю проверяет ли яндекс повтор ссылок).
Лучше так с Яндексом не шутить!
подскажите в каком месте и какой код добавить в market.php чтобы выполнялась проверка на предмет того, что товар с таким ID уже выгружен в прайс.
попробуйте в файле market.php заменить ORDER BY p.products_id ASC на GROUP BY p.products_id ORDER BY p.products_id ASC
ГРИГ - большое спасибо!
замена на GROUP BY p.products_id ORDER BY p.products_id ASC помогла.
Теперь повторов нет, а товарам присваивается группа в которой они изначально были заведены.
спасибо. поправлено
ближайшее время выложу попрвленную версию
аналогичная фигня в новинках - дублируется товар, лежащий в нескольких категориях, решение такое же работает: в файле products_new.php к строкам
order by p.products_date_added DESC добавил GROUP BY p.products_date_added order by p.products_date_added DESC спасибо grig!
а есть решение проблеме чтобы товар в новинках на главной не выводился с одинаковым названием или не брался из 1 категории сразу по 3 товара? что-то в этом духе есть?
а если сделать как тут http://www.shopos.ru/forum/index.php?topic=5063.msg27372#msg27372
как будет выводить?
Источник
|