Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Яндекс Маркет - делаем правильное краткое описание товара.


iSeller

Recommended Posts

Добрый день. Бьюсь не первый день, не могу вылечить проблему. route=feed/yandex_market генерирует информацию для маркета, все бы хорошо, если к товару писать описания в 3 предложения. Но я пишу больше. Этот зверь вставляет весь этот текст, 1000+ знаков в описание, в файл для отправки в яндекс, думаю последний меня не поймет. Я долго ковырялся так и не понял где изменить место сбора текста. Создал по интсрукции отдельное поле с mini_description. Но как пихнуть этот текст yandex_market.php не пойму.

И так ввиду очень отзывчивого сообщества opencartforum, проблему пришлось решать методом тыка.

Все кто торгует или торговал на Яндекс-Маркет знают, что товар должен иметь конкретное, краткое описание, в поле <description></description>, иначе магазин просто не пройдет проверку. На проверку магазина отводиться 6 попыток, если вы не уложились, то вам откажут в размещении. Это кончено не конец света, можно написать в сапорт и вам дадут еще 6 попыток, но лучше сделать все сразу. По умолчанию в поле description попадает description, логично, но не в нашем случае, так как товар может быть один, но с разными характеристиками, например памятью, да и само поле description можно использовать в нужных целях, например написание длинного описания товара с целью SEO. Ниже я приведу пример для ocStore 1.5.1.3.

Начнем.

Добавляем новое поле в Базу Данных.

1. Запускаем phpMyAdmin, находим таблицу oc_product_description.

2. Добавляем новое поле после meta_description. В строку поле пишем: yml_ description, выбираем в поле тип: TEXT, поле сравнение: utf8_general_ci. Остальное не трогаем, жмем сохранить.

3. Открываем файл product.php (admincontrollercatalog) и после строки

$this->data['entry_description'] = $this->language->get('entry_description');

Добавляем

$this->data['entry_yml_description'] = $this->language->get('entry_yml_description');

4. Открывем файл product_form.tpl (..adminviewtemplatecatalog) и после

<tr>

<td><span class="required">*</span> <?php echo $entry_name; ?></td>

<td><input type="text" name="product_description[<?php echo $language['language_id']; ?>][name]" maxlength="255" size="100" value="<?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['name'] : ''; ?>" />

<?php if (isset($error_name[$language['language_id']])) { ?>

<span class="error"><?php echo $error_name[$language['language_id']]; ?></span>

<?php } ?></td>

</tr>

Вставляем это

<tr>

<td><?php echo $entry_yml_description; ?></td>

<td><textarea name="product_description[<?php echo $language['language_id']; ?>][yml_description]" cols="40" rows="5"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['yml_description'] : ''; ?></textarea></td>

</tr>

5. Открываем файл product.php (..adminmodelcatalog) и изменим это (строка 12)

foreach ($data['product_description'] as $language_id => $value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

}

На это

foreach ($data['product_description'] as $language_id => $value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', yml_description = '" . $this->db->escape($value['yml_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

}

И это (строка 138)

foreach ($data['product_description'] as $language_id => $value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

}

На это

foreach ($data['product_description'] as $language_id => $value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', yml_description = '" . $this->db->escape($value['yml_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");

}

6. В том же файле добавляем после

'meta_keyword' => $result['meta_keyword'],

Вот это

'yml_description' => $result['yml_description'],

7. В фале product.php (..adminlanguagerussiancatalog) после строки

$_['entry_description'] = 'Описание:';

Добавляем

$_['entry_yml_description'] = 'YML описание:';

Открываем админку и в продукте видим новое поле: YML описание. Я долго не мог понять как подсунуть это в YML файл. Помог мне в этом deeman, спасибо ему за это. Делаем описанное ниже.

Шаг номер 1. Открываем yandex_market.php (catalogmodelexport) строка 10 меняем pd.description на pd.yml_description.

Шаг номер 2. Открываем yandex_market.php (catalogcontrollerfeed) строка 92 меняем

$data['description'] = $product['description'];

на

$data['description'] = $product['yml_description'];

На этом все.

Теперь вводя описание в поле YML описание, оно будет появляться в <description></description>.

отмечу что что-то посоветовать не смогу, я вообще не разбираюсь в php. Делал по инструкции с этого сайта, немного подумав подогнал под ocStore 1.5.1.3. Там есть небольшие различия. Но опять же методом тыка можно разобратся. Далее есть описание, как вставить это описание в товар. Но мне это не нужно, я не замарачивался. Но опять же надо будет искать подход 1.5.1.3, так как там, я так же некоторых строк не нашел.

  • +1 2
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Вопрос был ранее. 2 мая.

Добрый день. Бьюсь не первый день, не могу вылечить проблему. route=feed/yandex_market генерирует информацию для маркета, все бы хорошо, если к товару писать описания в 3 предложения. Но я пишу больше. Этот зверь вставляет весь этот текст, 1000+ знаков в описание, в файл для отправки в яндекс, думаю последний меня не поймет. Я долго ковырялся так и не понял где изменить место сбора текста. Создал по интсрукции отдельное поле с mini_description. Но как пихнуть этот текст yandex_market.php не пойму.

Ответ я сам в итоге дал. Для всех.

Надіслати
Поділитися на інших сайтах


Странно...всё сделал по инструкции, окошко с кратким описанием появилось. Вот только товар не сохраняется, пишет ошибку

Notice: Error: Unknown column 'yml_description' in 'field list'
Error No: 1054
INSERT INTO product_description SET product_id = '301', language_id = '1', name = 'ываыв', meta_keyword = '', meta_description = '', yml_description = 'ывав', description = '<p>rn ываыв</p>rn', seo_title = '', seo_h1 = '' in /home/tmzcomua/public_html/system/database/mysql.php on line 49
Эта же ошибка появилась при проверке xml файла яндекс-маркета.

кодировка вроде впорядке...по крайней мере в phpmyadmin написано utf8_general_ci

расположение таблицы yml_ description тоже вроде верное, сразу под meta_description и над meta_keyword

Вернул пока обратно...буду думать что не так

Надіслати
Поділитися на інших сайтах


post-19420-0-23787300-1337478996_thumb.jpg

У вас так выглядит созданное поле в базе? Тип таблицы TEXT?

Вот попробуйте заменить файлы.

yml.zip

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

Шаг номер 1. Открываем yandex_market.php (catalogmodelexport) строка 10 меняем pd.description на pd.yml_description.

Шаг номер 2. Открываем yandex_market.php (catalogcontrollerfeed) строка 92 меняем

$data['description'] = $product['description'];

на

$data['description'] = $product['yml_description'];

  • +1 1
Надіслати
Поділитися на інших сайтах


В прикреплённом файле модуль, копируете содержимое, ставите через админку.

Ставится только при наличии vQmod.

Соответственно должны быть права у пользователя MySQL на изменение таблиц и права на запись в директорию vqmod/xml

З.Ы. ocStore 1.5.1.3

YML_fix.zip

Змінено користувачем costas
  • +1 1
Надіслати
Поділитися на інших сайтах

Благодарю! сейчас буду пробовать.

ps. Огромнейшее спасибо Уважаемый costas и iSeller! Ваша помощь помогла мне решить сразу 2 серьезные проблемы.

Надіслати
Поділитися на інших сайтах


В прикреплённом файле модуль, копируете содержимое, ставите через админку.

Ставится только при наличии vQmod.

Соответственно должны быть права у пользователя MySQL на изменение таблиц и права на запись в директорию vqmod/xml

З.Ы. ocStore 1.5.1.3

У меня нет vQmod. Стандартная сборка ocstore. Указанное выше действие у меня работает. Долго занимался сексом с ПК но своего добился. Я ни PHP, ни MySQL не знаю. Рядовой пользователь. Если есть замечания, исправления, буду рад. Мне уже не надо, но другим поможет.
Надіслати
Поділитися на інших сайтах


Благодарю! сейчас буду пробовать.

ps. Огромнейшее спасибо Уважаемый costas и iSeller! Ваша помощь помогла мне решить сразу 2 серьезные проблемы.

Пользуйтесь на здоровье. ))) Рад что был полезен.
Надіслати
Поділитися на інших сайтах


Собсно родилась мысля...а что если выводить это краткое описание в списке товаров из категорий...С чего стоит начать, господа? Обещаю в случае успешной реализации - выложить решение :)

Надіслати
Поділитися на інших сайтах


Собсно родилась мысля...а что если выводить это краткое описание в списке товаров из категорий...С чего стоит начать, господа? Обещаю в случае успешной реализации - выложить решение :)

Вывести по идее можно где угодно, но делал я это исключительно для маркета. Пробуйте, я не заморачивался. ))))
Надіслати
Поділитися на інших сайтах


Этот зверь вставляет весь этот текст, 1000+ знаков в описание, в файл для отправки в яндекс, думаю последний меня не поймет.

поймет... не поймёт... зачем гадать?

Есть описание формата YML в котором всё написано http://partner.marke...id1168859851787

Элемент <description> может содержать текст длиной не более 512 символов. Если длина описания выходит за пределы допустимого значения, то текст обрезается и в конце ставится многоточие.

Я делал вариант который на сервере резал описания до 512 символов, но потом решил этого не делать.

Дело в том что экспорт в YML формате используется не только для ЯМ и в других системах нет ограничений в 512 символов.

Надіслати
Поділитися на інших сайтах

Собсно родилась мысля...а что если выводить это краткое описание в списке товаров из категорий...С чего стоит начать, господа? Обещаю в случае успешной реализации - выложить решение :)

Оказалось всё проще чем я думал. После всех вышеперечисленных манипуляций:В файле category.php делаем замену значения
'description' => utf8_truncate(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 400, ' …', true),
на
'yml_description' => utf8_truncate(strip_tags(html_entity_decode($result['yml_description'], ENT_QUOTES, 'UTF-8')), 400, ' …', true),
и в файле category.tpl
<div class="description"><?php echo $product['description']; ?></div>
на
<div class="description"><?php echo $product['yml_description']; ?></div>
теперь, если у вас краткое описание выводилось только в yml файл для яндекс, будет отображаться вместо обрезанного описания в списке товаров в категориях.Это может быть удобным если у вас длинные и подробные описания товаров, а вам надо как можно более сжато охарактеризовать товар - чтобы человек пройдясь по списку - выбрал тот который ему больше по вкусу, не используя все тонкости фильтра товаровЗы. Только сейчас заметил, что при попытке отфильтровать товар - возвращается обычное описание...нужно править ajax
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.