Проблема с Я. Макркет

Тема в разделе "Любые вопросы от новичков", создана пользователем Сергей, 1 дек 2016.

  1. Сергей

    Сергей New Member

    Добрый день! Проблема появилась при звгрузки товарынх предложений в яндекс маркет.

    Проблемы следующего характера:

    1)Название модели присутствует у 0% товарных предложений
    В обязательном элементе model указывается официальное название модели. Название не может состоять только из цифр, помимо цифр в нём должны содержаться буквы.
    Элемент влияет на привязку предложения к карточке товара.

    2) Адрес изображения (элемент picture) присутствует у 0% товарных предложений
    Предложения с качественными изображениями привлекают больше внимания пользователей. Рекомендуется использовать фотографии со сторонами не менее 600 пикселей.

    3) Код производителя присутствуют у 0% товарных предложений
    В элементе vendorCode указывается код товара (код производителя). Значение не отображается в названии предложения, но влияет на привязку предложения к карточке товара.

    4) Элемент sales_notes присутствуют у 0% товарных предложений

    теперь вопрос:
    Как мне отредактировать самому файл на сервере который отвечает за выгрузку данный в фид маркета?
     
  2. VMerk

    VMerk Moderator

    Добрый день
    За генерацию выгрузки Яндекс маркет отвечает метод create_yml в файле modules/catalog/Catalog.php

    Листинг метода:
    PHP:
        /**
         * создает файл для экспорта в Яндекс.Маркет и сохраняет его в папку, указанную в настройках
         */
        public function create_yml()
        {
            $workingInterval = 86400;
            if ((time() - $this->settings->for_yandex_yml_working_interval) < $workingInterval)
                return;
           
            $yml = '<?xml version="1.0" encoding="UTF-8"?>
                    <!DOCTYPE yml_catalog SYSTEM "shops.dtd">
                    <yml_catalog date="' . date('Y-m-d H:i') . '">
                            <shop>
                            <name>' . $this->settings->site_title . '</name>
                                    <company>' . $this->settings->company_name . '</company>
                                            <url>' . SITE_URL . '</url>
                                                    <currencies>
                                                    <currency id="RUR" rate="1"/>
                                                    </currencies>
                                                    <categories>
                                                    ';
           
            $fp = fopen(YML_FILE, "w");
           
            $this->get_tree_categories();
            foreach ($this->all_categories as $cat_id => $category) {
                $yml .= '<category id="' . $cat_id . '" parentId="' . $category['parent'] . '">' . str_replace("&#39", "&apos;", $category['title']) . '</category>
                        ';
            }
           
            $yml .= '</categories>
                    <offers>
                    ';
           
            fwrite($fp, $yml);
            unset($yml);
           
            $this->db->query("SET SQL_BIG_SELECTS=1");
            $products = $this->db->select("SELECT pr.id, pr.name, pr.name_full, pr.url, pr.brief_description, pr.img, pr.categ, pr.price,
                    pr.last_price
                    FROM ?_" . $this->module_table_products . " pr
                    WHERE pr.enabled=1 AND pr.price>0 AND pr.categ>0");
           
            $catalog_full_link  = $this->pages->get_full_link_module("catalog");
            $content_photos_dir = SITE_URL . URL_IMAGES . $this->setting("dir_images");
           
            foreach ($products as $product) {
                if (isset($this->all_categories[$product['categ']])) {
                    $available = "true";
                    $type      = '';
                    if ($type == '' and $product['name_full'] != '')
                        $product['name'] .= ' &#151; ' . $product['name_full'];
                   
                    $yml_p = '<offer id="' . $product['id'] . '" ' . $type . ' available="' . $available . '">
                            <url>' . SITE_URL . $catalog_full_link . '/' . $this->all_categories[$product['categ']]['full_link'] . '/' . $product['url'] . '.htm</url>
                                    <price>' . $product['price'] . '</price>
                                            <currencyId>RUR</currencyId>
                                            <categoryId>' . $product['categ'] . '</categoryId>';
                    $yaml  = "";
                    if ($product['img'] != '')
                        $yaml .= '<picture>' . $content_photos_dir . 'normal/' . $product['img'] . '</picture>';
                    $yml_p .= '<delivery>false</delivery>';
                    if ($type) {
                        $yml_p .= '<model>' . str_replace("&#39", "&apos;", $product['name']) . '</model>

                                <description>' . ($product['name_full'] != '' ? F::ucfirst($product['name_full']) . '. ' : '') . htmlspecialchars(strip_tags($product['brief_description'])) . '</description>';
                    } else {
                        $yml_p .= '<name>' . str_replace("&#39", "&apos;", $product['name']) . '</name>

                                <description>' . str_replace("&#039", "&apos;", htmlspecialchars(strip_tags($product['brief_description']), ENT_QUOTES)) . '</description>';
                    }
                    $yml_p .= '</offer>
                            ';
                    fwrite($fp, $yml_p);
                }
            }
            unset($products);
            $yaml = '</offers>
                    </shop></yml_catalog>';
            fwrite($fp, $yaml);
            fclose($fp);
            $this->settings->update_settings(array(
                "for_yandex_yml_working_interval" => time()
            ));
        }
     
  3. Сергей

    Сергей New Member

    К сожалению я изменил там данные - но ничего не произошло! может нужно как-то перезаружать файл?
     
  4. VMerk

    VMerk Moderator

    Обновление файла произойдет автоматически, через несколько часов.
    Либо можно вызвать обновление в ручную. Для этого создайте файл update_yml.php

    с кодом
    PHP:
    <?php
    require_once 'config/config.php';
    require_once 
    'classes/Func.php';
    require_once 
    'classes/System.php';
    require_once 
    'classes/SiteView.php';
    $site = new SiteView();
    $site->catalog->create_yml();
    echo 
    YML_FILE." update ok";

    ?>
    и запустите его.
     
  5. Сергей

    Сергей New Member

    Не помогло
     
  6. Сергей

    Сергей New Member

    файл почему-то вообще не обновляется... последний раз выгружался вчера в 2 часа дня..
     

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