Перейти к содержимому


Яндекс Маркет: официальная гарантия производителя

яндекс маркет гарантия

  • Вы не можете ответить в тему
Сообщений в теме: 17

#1 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 11 April 2012 - 07:42 AM

Добрый день, подскажите, нужно сделать возможность указывать официальная гарантия у товара или нет, т.е. при создании товара ставить галку официальная гарантия или нет. Если галка стоит при формировании прайс-листа яндексу появлялся тег

<manufacturer_warranty>

true

</manufacturer_warranty>, если его нет, то false


  • 0

#2 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 11 April 2012 - 08:48 AM

проще всего использовать какой-то ненужный чекбокс, к примеру "бесплатная доставка" или переделать какой-то другой инпут и на основании его значения добавить условие в формирование xml
намек понял ? :)
  • 0
502 Bad Gateway

#3 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 11 April 2012 - 04:04 PM

я тоже об этом подумал (использовать не нужный чек бокс), но может все-таки проще добавить новый это может понадобится, мало ли. Не могу найти в каком файле править страницу, где создается товар.
  • 0

#4 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 11 April 2012 - 04:19 PM

я тоже об этом подумал (использовать не нужный чек бокс), но может все-таки проще добавить новый это может понадобится, мало ли.

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

Не могу найти в каком файле править страницу, где создается товар.

admin.php
  • 0
502 Bad Gateway

#5 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 11 April 2012 - 05:26 PM

Спасибо за подсказку, че-то ступил)))
В общем решил попробовать сделать свой чекбокс, добавил в admin.php:
<tr class="lins">
<td> <input type=checkbox name='manufacturer_warranty' value='1' checked> &nbsp;&nbsp;Гарантия производителя
</td></tr>
Появился чекбокс уже отмеченный, так как чаще товар сертифицирован.
Потом зашел в пхпмайадмин нашел таблицу *_products и добавил поле manufacturer_warranty по принципу free_shipping
Правда не понял почему тип был int(11). и по умолчанию вместо нуля поставил 1.
И вот теперь нужно записать значение в базу, как получится отпишусь.

Что-то не получается, все сделал по аналогии с free_shipping, но в базу все равно не сохраняется почему-то
  • 0

#6 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 11 April 2012 - 06:05 PM

И вот теперь нужно записать значение в базу, как получится отпишусь.

Выложите код, который Вы делали по аналогии, там не должно быть проблем

получаем переменную из формы
$manufacturer_warranty  = $_Post[manufacturer_warranty]

и добавляем в запрос к UPDATE ......

Кроме того, нужно еще считать и вывести галку если она уже стоит.
  • 0

#7 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 11 April 2012 - 07:12 PM

free_shipping в файле встречается 12 раз, везде где проверяется установлена ли переменная
isset ($_POST["free_shipping"]),
вставлял isset ($_POST["manufacturer_warranty"]), но не работает.
  • 0

#8 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 11 April 2012 - 07:27 PM

вставлял isset ($_POST["manufacturer_warranty"]), но не работает.


не это хорошо конечно, а в сам запрос мускула переменная добавлена?
  • 0

#9 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 11 April 2012 - 09:54 PM

Походу запрос мускула идет через другой файл
  • 0

#10 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 11 April 2012 - 10:22 PM

// save product
		  if (isset($_POST["save_product"]) || isset($_POST["save_product_for_file"]))
		  {
			  if (CONF_BACKEND_SAFEMODE) //this action is forbidden when SAFE MODE is ON
			  {
				  Redirect(ADMIN_FILE."?safemode=yes&productID=".$_GET["productID"]."&eaction=prod");
			  }
			  if ($_POST["save_product"] == 1 || $_POST["save_product_for_file"] == 1)
			  {
				  if ($_GET["productID"] == 0)
				  {
					  $productID = AddProduct($_POST["categoryID"], $_POST["name"], $_POST["price"],
						  $_POST["description"], $_POST["in_stock"], $_POST["brief_description"], $_POST["list_price"],
						  $_POST["product_code"], $_POST["sort_order"], isset($_POST["ProductIsProgram"]),
						  "eproduct_filename", $_POST["eproduct_available_days"], $_POST["eproduct_download_times"],
						  $_POST["weight"], $_POST["meta_description"], $_POST["meta_keywords"], isset ($_POST["free_shipping"]),  isset ($_POST["manufacturer_warranty"]), $_POST["min_order_amount"], $_POST["shipping_freight"],
						  $_POST["tax_class"], $_POST["title"]);
					  $_GET["productID"] = $productID;
					  $updatedValues = ScanPostVariableWithId(array("option_value", "option_radio_type"));
					  configUpdateOptionValue($productID, $updatedValues);
				  }
				  else
				  {
					  UpdateProduct($productID, $_POST["categoryID"], $_POST["name"], $_POST["price"],
						  $_POST["description"], $_POST["in_stock"], $_POST["rating"], $_POST["brief_description"],
						  $_POST["list_price"], $_POST["product_code"], $_POST["sort_order"], isset($_POST["ProductIsProgram"]),
						  "eproduct_filename", $_POST["eproduct_available_days"], $_POST["eproduct_download_times"],
						  $_POST["weight"], $_POST["meta_description"], $_POST["meta_keywords"], isset
						  ($_POST["free_shipping"]),   isset ($_POST["manufacturer_warranty"]), $_POST["min_order_amount"], $_POST["shipping_freight"],
						  $_POST["tax_class"], $_POST["title"]);
					  $updatedValues = ScanPostVariableWithId(array("option_value", "option_radio_type"));
					  configUpdateOptionValue($productID, $updatedValues);
				  }

				  if (CONF_UPDATE_GCV == '1') update_psCount(1);
				  if (!isset($_POST["save_product_for_file"]) || $_POST["save_product_for_file"] != 1)ReLoadOpener();
			  }
		  }
		  if ($_POST["save_spwc"] == 1 && $_POST["AddProductAndOpenConfigurator"] == 0)
		  {

			  UpdateProduct($productID, $_POST["categoryID"], $_POST["name"], $_POST["price"], $_POST["description"],
				  $_POST["in_stock"], $_POST["rating"], $_POST["brief_description"], $_POST["list_price"],
				  $_POST["product_code"], $_POST["sort_order"], isset($_POST["ProductIsProgram"]), "eproduct_filename",
				  $_POST["eproduct_available_days"], $_POST["eproduct_download_times"], $_POST["weight"],
				  $_POST["meta_description"], $_POST["meta_keywords"], isset($_POST["free_shipping"]),  isset ($_POST["manufacturer_warranty"]),
				  $_POST["min_order_amount"], $_POST["shipping_freight"], $_POST["tax_class"], $_POST["title"]);
			  $updatedValues = ScanPostVariableWithId(array("option_value", "option_radio_type"));
			  configUpdateOptionValue($productID, $updatedValues);
		  }

ну вот сохранение данных, все вроде понятно, только не ясно что это за UpdateProduct и откуда берется
  • 0

#11 Dbus

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 1116 сообщений
Репутация: 174
Мастер
  • ГородОдесса

Отправлено 11 April 2012 - 10:38 PM

ну вот сохранение данных, все вроде понятно, только не ясно что это за UpdateProduct и откуда берется

вот потому я и говорил, что проще брать неиспользованое поле, которе УЖЕ есть. доставка, например.
  • 0
502 Bad Gateway

#12 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 11 April 2012 - 11:07 PM

только не ясно что это за UpdateProduct и откуда берется


ну почему не понятно
UpdateProduct вызов функции из product_functions.php
  • 0

#13 Go_Blin

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 44 сообщений
Репутация: 0
Начинающий

Отправлено 12 April 2012 - 11:22 AM

Если у Вас нет товара без гарантии производителя, то самый простой вариант в modules_yandex.php вставить строчку:
fputs( $f, " <manufacturer_warranty> true </manufacturer_warranty>\n");
перед:
fputs( $f, " </offer>\n");
  • 0

#14 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 12 April 2012 - 07:33 PM

Если у Вас нет товара без гарантии производителя, то самый простой вариант в modules_yandex.php вставить строчку:
fputs( $f, " <manufacturer_warranty> true </manufacturer_warranty>\n");
перед:
fputs( $f, " </offer>\n");

спасибо до этого уже давно догадался, но проблема в том, что не весь товар имеет эту гарантию
  • 0

#15 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 12 April 2012 - 10:16 PM

странно, неужели никто не делал ничего подобного? Перебрал файл product_functions.php, добавил все опять по аналогии, но записи в базу не происходит, подскажите может еще что надо переделать?
  • 0

#16 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 12 April 2012 - 11:53 PM

странно, неужели никто не делал ничего подобного? Перебрал файл product_functions.php, добавил все опять по аналогии, но записи в базу не происходит, подскажите может еще что надо переделать?


Тут нужно не пальцем в небо тыкать, а конкретно знать что Вы делаете. Принцип простой, в тпл размещается чекбокс, который имеет значение 1 или 0 (думаю это понятно). Форма отправляет значения всех полей обработчику (файл php). Вот нужно найти этот обработчик, обработчик делает запрос INSERT для добавления записи или UPDATE для редактирования. Т.е. приходит переменная ПОСТ и записывается в поле БД. Т.е. нужно найти где запрос который добавляет/обновляет данные в БД.

Потом при выводе также в обработчике нужно найти запрос SELECT добавить в запрос нашу галку и написать условие if ($row == 1) {$ch = checked} esle {$ch = ""} и передать {$ch} в шаблон, добавив к нашему чекбоксу. Если этого не сделать то при каждом редактировании будет записываться что галка не стоит.
  • 0

#17 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 13 April 2012 - 09:29 AM

Сергей спасибо за объяснение, все вроде сделал как нужно. Решил пойти другим путем, переименовал free_shipping на manufacturer_warranty, все теперь в базу записывается, стал вопрос как сделать проверку в файле modules_yandex.php
  • 0

#18 fastik

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 161 сообщений
Репутация: 11
Начинающий
  • ГородТирасполь

Отправлено 13 April 2012 - 01:46 PM

Сергей спасибо за объяснение, все вроде сделал как нужно. Решил пойти другим путем, переименовал free_shipping на manufacturer_warranty, все теперь в базу записывается, стал вопрос как сделать проверку в файле modules_yandex.php

разобрался:
находим строчку примерно 111

$sql = "select productID, name, Price, categoryID, default_picture".$dsc_q.", in_stock from ".PRODUCTS_TABLE." where enabled=1".$clause;
и добавляем manufacturer_warranty
$sql = "select productID, manufacturer_warranty, name, Price, categoryID, default_picture".$dsc_q.", in_stock from ".PRODUCTS_TABLE." where enabled=1".$clause;
Далее находим примерно 126 и под ней добавляем

fputs( $f, "                                                <manufacturer_warranty>".(($product['manufacturer_warranty']==1)?'true':'false')."</manufacturer_warranty>\n" );
Вот и все, вроде работает как надо, но все равно попробую сделать отдельный чекбокс.
  • 0