DVlink Опубликовано 8 января, 2016 Жалоба Поделиться Опубликовано 8 января, 2016 (изменено) Доброе время суток.ЯндексМаркет коряво автоматом по категориям товар раскидывает.Категорий как минимум 5-6 задействовано на Яндексе.Товар на сайте тоже в своих категориях, и получается 2-5 категорий сайта, это 1 категория на Яндексе. Как присвоить категориям сайта категории Яндекс.Маркета (прописать их вручную) и добавить параметр <market_category> в yandex.php Категории Яндекс.Маркета http://download.cdn.yandex.net/market/market_categories.xls Привязку лучше делать "категория ЯМ <-> Категория сайта", т.к. для "категория ЯМ <-> конкретный товар сайта" это более трудозатратно для добавления и дальнейшего изменения при необходимости Спасибо. Изменено 8 января, 2016 пользователем DVlink Цитата Ссылка на сообщение Поделиться на другие сайты
DVlink Опубликовано 11 января, 2016 Автор Жалоба Поделиться Опубликовано 11 января, 2016 Не дождался помощи, кроме предложения заплатить.Навоял сам вот так: Сделал привязку к категории каждого продукта: 1. В БД параметр s_products добавляем поле cat_yandex:ALTER TABLE `s_products` ADD `cat_yandex` TEXT NOT NULL AFTER `body` 2. В api/Products.php после: $query = "SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body,добавляем cat_yandex, Далее там же в api/Products.php после: $query = "SELECT DISTINCT p.id, p.url, p.brand_id, p.name, p.annotation, p.body,добавляем cat_yandex, 3. в файле simpla/ProductAdmin.php после:$product->body = $this->request->post('body');добавляем:$product->cat_yandex = $this->request->post('cat_yandex'); 4. В файле simpla/design/html/product.tpl:(для напоминания при сохранении изменений товара о выбранной категории) <span class="text">{if $message_success=='added'}Товар добавлен{elseif $message_success=='updated'}Товар изменен.{else}{$message_success|escape}{/if}</span> заменим на <span class="text">{if $message_success=='added'}Товар добавлен{elseif $message_success=='updated'}Товар изменен. <br><font color=red><b>Проверте категорию Яндекс.Маркет</b></font> ({$product->cat_yandex|escape|strip_tags|truncate:500}).{else}{$message_success|escape}{/if}</span> после<li><label class=property>Описание</label><textarea name="meta_description" class="simpla_inp" />{$product->meta_description|escape}</textarea></li> добавляем:<li><label class=property>Категория Яндекс.Маркета</label><textarea name="cat_yandex" class="simpla_inp" style="height: 40px;">{$product->cat_yandex|escape|strip_tags|truncate:500}</textarea></li> <li><label class=property>Указываем категорию Яндекс.Маркета</label><select name="cat_yandex" class="simpla_inp"> <option value="">Не задана</option> <option value="Авто/Мототехника">Мототехника</option> <option value="Авто/Мототехника/Аксессуары">Мототехника -> Аксессуары</option> <option value="Авто/Мототехника/Запчасти">Мототехника -> Запчасти</option> </select></li><input class="button_green button_save" type="submit" name="" value="Сохранить" /> Категории берем из http://download.cdn.yandex.net/market/market_categories.xls5. В файл yandex.php после p.body,пишемp.cat_yandex,далее после <categoryId>".$p->category_id."</categoryId>пишем<market_category>".htmlspecialchars(strip_tags($p->cat_yandex))."<market_category> Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 11 января, 2016 Жалоба Поделиться Опубликовано 11 января, 2016 Спасибо, сделано вроде бы правильно и аккуратненько. Замечания:1. Ссылка Ваша на список категорий битая.2. Новое поле хорошо бы обрабатывать экспортом-импортом.3. В начале Вы хотели Привязку лучше делать "категория ЯМ <-> Категория сайта", т.к. для "категория ЯМ <-> конкретный товар сайта" это более трудозатратно для добавления и дальнейшего изменения при необходимостиа в итоге сделали почему-то как раз трудозатратным способом.... Цитата Ссылка на сообщение Поделиться на другие сайты
DVlink Опубликовано 11 января, 2016 Автор Жалоба Поделиться Опубликовано 11 января, 2016 Спасибо, сделано вроде бы правильно и аккуратненько.Даже лучше, чем в OkayCMS, там надо руками вводить полный путь категорий, что практически будет вести к многочисленным ошибкам. Замечания:1. Ссылка Ваша на список категорий битая.2. Новое поле хорошо бы обрабатывать экспортом-импортом.3. В начале Вы хотели а в итоге сделали почему-то как раз трудозатратным способом.... да минуса 3 даже)) 1. руками надо категории вводить в код (но у меня их не так много, и можно убрать select, тогда руками надо вбивать.. что еще большие ошибки)2. не разобрался как категории прикрутить.. получилось только в товаре (но есть и свои плюсы)3. т.к. выбор категории через select, то при перезагрузке/сохранении страницы выбор идет на первый вариант (поэтому и сделал его пустым и напоминание в шапке) и приходится снова задавать категорию. Как сохранять последний выбранный вариант еще не разобрался Цитата Ссылка на сообщение Поделиться на другие сайты
DVlink Опубликовано 11 января, 2016 Автор Жалоба Поделиться Опубликовано 11 января, 2016 2. В api/Products.php после: добавляем p.cat_yandex, Далее там же в api/Products.php после: p.cat_yandex, Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 11 января, 2016 Жалоба Поделиться Опубликовано 11 января, 2016 2. не разобрался как категории прикрутить..По аналогии с http://forum.simplacms.ru/topic/9989-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8/ Цитата Ссылка на сообщение Поделиться на другие сайты
DVlink Опубликовано 11 января, 2016 Автор Жалоба Поделиться Опубликовано 11 января, 2016 По аналогии сhttp://forum.simplacms.ru/topic/9989-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8/спасибо, попробую Цитата Ссылка на сообщение Поделиться на другие сайты
yourock Опубликовано 8 сентября, 2016 Жалоба Поделиться Опубликовано 8 сентября, 2016 5. В файл yandex.php после p.body,пишемp.cat_yandex,далее после <categoryId>".$p->category_id."</categoryId>пишемif($p->cat_yandex)print "<market_category>".htmlspecialchars(strip_tags($p->cat_yandex))."</market_category>"; Цитата Ссылка на сообщение Поделиться на другие сайты
Kniazdiit Опубликовано 8 сентября, 2016 Жалоба Поделиться Опубликовано 8 сентября, 2016 5. В файл yandex.php после p.body,пишемp.cat_yandex,далее после <categoryId>".$p->category_id."</categoryId>пишемif($p->cat_yandex)print "<market_category>".htmlspecialchars(strip_tags($p->cat_yandex))."</market_category>";А ничего что в Яндексе могут быть не такие названия категорий как в вашем магазине? Цитата Ссылка на сообщение Поделиться на другие сайты
yourock Опубликовано 8 сентября, 2016 Жалоба Поделиться Опубликовано 8 сентября, 2016 А ничего что в Яндексе могут быть не такие названия категорий как в вашем магазине?Не понял вопроса. Используя эту доработку вы в каждом товаре задаете индивидуально ту категорию, к которой, по вашему мнению, относится редактируемый товар. В пункте 4 предлагается создать SELECT (выпадающий список с выбором категорий). В код этого селекта вы как раз и добавляете наиболее подходящие для себя рубрики. Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 8 сентября, 2016 Жалоба Поделиться Опубликовано 8 сентября, 2016 Вы молодцом. Я такого плана проблемы решаю через свойства товаров. Создаю свойство и условиями ifelse делаю как мне надо Для небольших магазинов в самый раз Цитата Ссылка на сообщение Поделиться на другие сайты
unrealock Опубликовано 8 декабря, 2016 Жалоба Поделиться Опубликовано 8 декабря, 2016 p.body, откуда берется в yandex.php? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 8 декабря, 2016 Жалоба Поделиться Опубликовано 8 декабря, 2016 p.body, откуда берется в yandex.php?Из таблицы s_products, ячейка такая body которая служит для описания товара. Цитата Ссылка на сообщение Поделиться на другие сайты
unrealock Опубликовано 8 декабря, 2016 Жалоба Поделиться Опубликовано 8 декабря, 2016 (изменено) Из таблицы s_products, ячейка такая body которая служит для описания товара.Это понятно но в yandex.php она не прописана, а тут сказано после p.body, от сюда и вопрос куда писать p.cat_yandex, <?php require_once('api/Simpla.php');$simpla = new Simpla(); header("Content-type: text/xml; charset=UTF-8");print (pack('CCC', 0xef, 0xbb, 0xbf));// Заголовокprint"<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE yml_catalog SYSTEM 'shops.dtd'><yml_catalog date='".date('Y-m-d H:i')."'><shop><name>".$simpla->settings->site_name."</name><company>".$simpla->settings->company_name."</company><url>".$simpla->config->root_url."</url>"; // Валюты$currencies = $simpla->money->get_currencies(array('enabled'=>1));$main_currency = reset($currencies);print "<currencies>";foreach($currencies as $c)if($c->enabled)print "<currency id='".$c->code."' rate='".$c->rate_to/$c->rate_from*$main_currency->rate_from/$main_currency->rate_to."'/>";print "</currencies>"; // Категории$categories = $simpla->categories->get_categories();print "<categories>";foreach($categories as $c){print "<category id='$c->id'";if($c->parent_id>0) print " parentId='$c->parent_id'";print ">".htmlspecialchars($c->name)."</category>";}print "</categories>"; // Товары$simpla->db->query("SET SQL_BIG_SELECTS=1");// Товары$simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, i.filename as image FROM __variants v LEFT JOIN __products p ON v.product_id=p.id, p.cat_yandex LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1) LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1) WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");print "<offers>"; $currency_code = reset($currencies)->code; // В цикле мы используем не results(), a result(), то есть выбираем из базы товары по одному,// так они нам одновременно не нужны - мы всё равно сразу же отправляем товар на вывод.// Таким образом используется памяти только под один товар$prev_product_id = null;while($p = $simpla->db->result()){$variant_url = '';if ($prev_product_id === $p->product_id) $variant_url = '?variant='.$p->variant_id;$prev_product_id = $p->product_id; $price = round($simpla->money->convert($p->price, $main_currency->id, false),2);print"<offer id='$p->variant_id' available='true'><url>".$simpla->config->root_url.'/products/'.$p->url.$variant_url."</url>";print "<price>$price</price><currencyId>".$currency_code."</currencyId><categoryId>".$p->category_id."</categoryId>";if($p->cat_yandex)print "<market_category>".htmlspecialchars(strip_tags($p->cat_yandex))."</market_category>"; if($p->image)print "<picture>".$simpla->design->resize_modifier($p->image, 200, 200)."</picture>"; print "<name>".htmlspecialchars($p->product_name).($p->variant_name?' '.htmlspecialchars($p->variant_name):'')."</name><description>".htmlspecialchars(strip_tags($p->annotation))."</description></offer>";} print "</offers>";print "</shop></yml_catalog>"; Изменено 8 декабря, 2016 пользователем unrealock Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.