Добрый день. Бьюсь не первый день, не могу вылечить проблему. 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, так как там, я так же некоторых строк не нашел.