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

Помогите с программированием файла для Яндекс Маркета


Recommended Posts

У меня в магазине полное наименование товаров генерируются из рахных полей: название, производитель, объём (в гр, капс, млл, кг...) кол-во порций.

Соответственно, когда я поставил модуль и выгрузил всё на яндекс маркет - название выгрузились вот так:

BCAA Capsules

вместо

BCAA Capsules 120 капс/24 порций от Be First

 

У меня стоит какой то самый простой модуль, для выгрузки в ЯМ, частично мне удалось сгенерировать заголовки вот такой конструкцией:

 

$data['name'] = (''.$product['name'].' '.round($product['weight'], 2).''.$weight_class.' '.$product['manufacturer'].'');

 

Но '.$weight_class.' - не работает, если выводить вот так '.$product['weight_class_id'].' - id выводится корректно!

 

'.$weight_class.' -- я пытаюсь вывести вот таким кодом :

 

if ($product['weight_class_id'] == 1){
$weight_class = 'кг';
}
if ($product['weight_class_id'] == 2){
$weight_class = 'гр';
}
if ($product['weight_class_id'] == 3){
$weight_class = 'мл';
}

 

Целый код генерации ЯМ ниже. Всё затрудняется ещё тем, что после каждой правки - изменения видны только спустя время... файл почему то обновляется не сразу. Я уже задолбался, помогите пожалуйста

 

Что нужно, чтобы '.$weight_class.'  выводил млл, капс и проч?  Опенкарт 1541

<?php
/**
 * Класс YML экспорта
 * YML (Yandex Market Language) - стандарт, разработанный "Яндексом"
 * для принятия и публикации информации в базе данных Яндекс.Маркет
 * YML основан на стандарте XML (Extensible Markup Language)
 * описание формата YML http://partner.market.yandex.ru/legal/tt/
 */
class ControllerFeedYandexMarket extends Controller {
	private $shop = array();
	private $currencies = array();
	private $categories = array();
	private $offers = array();
	private $from_charset = 'utf-8';
	private $eol = "\n";

	public function index() {
		if ($this->config->get('yandex_market_status')) {

			if (!($allowed_categories = $this->config->get('yandex_market_categories'))) exit();

			$this->response->addHeader('Content-Type: application/xml');
			
			$filename = DIR_DOWNLOAD . 'offers.yml';
			
			if (!is_file($filename) || time() - @filemtime($filename) > 60*30) { // one time per half of hour
				$fd = fopen($filename, 'w');
				
				$this->load->model('export/yandex_market');
				$this->load->model('localisation/currency');
				$this->load->model('tool/image');
				$this->load->model('catalog/product');

				// Магазин
				$this->setShop('name', $this->config->get('yandex_market_shopname'));
				$this->setShop('company', $this->config->get('yandex_market_company'));
				$this->setShop('url', HTTP_SERVER);
				$this->setShop('phone', $this->config->get('config_telephone'));
				$this->setShop('platform', 'ocStore');
				$this->setShop('version', VERSION);

				// Валюты
				// TODO: Добавить возможность настраивать проценты в админке.
				$offers_currency = $this->config->get('yandex_market_currency');
				if (!$this->currency->has($offers_currency)) exit();

				$decimal_place = $this->currency->getDecimalPlace($offers_currency);

				if (!$decimal_place) {
					$decimal_place = 2;
				}
if ($product['weight_class_id'] == 1){
$weight_class = 'кг';
}
if ($product['weight_class_id'] == 2){
$weight_class = 'гр';
}
if ($product['weight_class_id'] == 3){
$weight_class = 'мл';
}
if ($product['weight_class_id'] == 4){
$weight_class = 'капс';
}
if ($product['weight_class_id'] == 5){
$weight_class = табл ;
}
if ($product['weight_class_id'] == 6){
$weight_class = 'шт';
}
if ($product['weight_class_id'] == 7){
$weight_class = 'уп';
}
				$shop_currency = $this->config->get('config_currency');

				$this->setCurrency($offers_currency, 1);

				$currencies = $this->model_localisation_currency->getCurrencies();

				$supported_currencies = array('RUR', 'RUB', 'USD', 'BYR', 'KZT', 'EUR', 'UAH');

				$currencies = array_intersect_key($currencies, array_flip($supported_currencies));

				foreach ($currencies as $currency) {
					if ($currency['code'] != $offers_currency && $currency['status'] == 1) {
						$this->setCurrency($currency['code'], number_format(1/$this->currency->convert($currency['value'], $offers_currency, $shop_currency), 4, '.', ''));
					}
				}





				// Категории
				$categories = $this->model_export_yandex_market->getCategory();

				foreach ($categories as $category) {
					$this->setCategory($category['name'], $category['category_id'], $category['parent_id']);
				}

				// Товарные предложения
				$in_stock_id = $this->config->get('yandex_market_in_stock'); // id статуса товара "В наличии"
				$out_of_stock_id = $this->config->get('yandex_market_out_of_stock'); // id статуса товара "Нет на складе"
				$vendor_required = false; // true - только товары у которых задан производитель, необходимо для 'vendor.model' 
				$products = $this->model_export_yandex_market->getProduct($allowed_categories, $out_of_stock_id, $vendor_required);

				
				$yml  = '<?xml version="1.0" encoding="utf-8"?>' . $this->eol;
				$yml .= '<!DOCTYPE yml_catalog SYSTEM "shops.dtd">' . $this->eol;
				$yml .= '<yml_catalog date="' . date('Y-m-d H:i') . '">' . $this->eol;
				$yml .= '<shop>' . $this->eol;

				// информация о магазине
				$yml .= $this->array2Tag($this->shop);

				// валюты
				$yml .= '<currencies>' . $this->eol;
				foreach ($this->currencies as $currency) {
					$yml .= $this->getElement($currency, 'currency');
				}
				$yml .= '</currencies>' . $this->eol;

				// категории
				$yml .= '<categories>' . $this->eol;
				foreach ($this->categories as $category) {
					$category_name = $category['name'];
					unset($category['name'], $category['export']);
					$yml .= $this->getElement($category, 'category', $category_name);
				}
				$yml .= '</categories>' . $this->eol;

				$yml .= '<offers>' . $this->eol;
			
				fwrite($fd, $yml);

				$buffer = '';
				$buffer_size = 128*1024; // 128Kb




				foreach ($products as $product) {
					$data = array();

					// Атрибуты товарного предложения
					$data['id'] = $product['product_id'];
	//				$data['type'] = 'vendor.model';
					$data['available'] = ($product['quantity'] > 0 || $product['stock_status_id'] == $in_stock_id);
	//				$data['bid'] = 10;
	//				$data['cbid'] = 15;

					// Параметры товарного предложения
					$data['url'] = $this->url->link('product/product','path=' . $this->getPath($product['category_id']) . '&product_id=' . $product['product_id']);
					// USE THIS TO SPEED UP: $data['url'] = HTTP_SERVER . 'index.php?route=product/product&path=' . $this->getPath($product['category_id']) . '&product_id=' . $product['product_id'];
					$data['price'] = number_format($this->currency->convert($this->tax->calculate($product['price'], $product['tax_class_id']), $shop_currency, $offers_currency), $decimal_place, '.', '');
					$data['currencyId'] = $offers_currency;
					$data['categoryId'] = $product['category_id'];
					$data['delivery'] = 'true';
	//				$data['local_delivery_cost'] = 100;
					$data['name'] = (''.$product['name'].' '.round($product['weight'], 2).''.$weight_class.' '.$product['manufacturer'].'');
					$data['vendor'] = $product['manufacturer'];
					$data['vendorCode'] = $product['model'];
					$data['model'] = $product['name'];
					$data['description'] = $product['description'];
                                        $data['sales_notes'] = 'Необходима 100% предоплата заказа!';
	//				$data['manufacturer_warranty'] = 'true';
	//				$data['barcode'] = $product['sku'];
					if ($product['image']) {
						//$data['picture'] = $this->model_tool_image->resize($product['image'], 500, 500);
						
						$image_path = 'image/' . $product['image'];
					
						if (strpos($image_path, ' ') !== false) {
							$new_image_path = str_replace(' ', '__', $image_path);
							
							if (!file_exists($new_image_path)) {
								$new_image_dir = dirname($new_image_path);
								
								if (!is_dir($new_image_dir)) {
									mkdir($new_image_dir, 0777, true);
								}
								
								copy($image_path, $new_image_path);
							}
							
							$image_path = $new_image_path;
						}
						$data['picture'] = HTTP_SERVER . $image_path;
					}
					
					$attribute_groups = $this->model_catalog_product->getProductAttributes($product['product_id']);
					
					if (!empty($attribute_groups)) {
						$data['param'] = array();
						foreach ($attribute_groups as $attribute_group) {
							foreach ($attribute_group['attribute'] as $attribute) {
								$data['param'][] = array (
									'name'  => $attribute['name'],
									'value' => $attribute['text'],
								);
							}
						}
					}
	/*
					// пример структуры массива для вывода параметров
					$data['param'] = array(
						array(
							'name'=>'Wi-Fi',
							'value'=>'есть'
						), array(
							'name'=>'Размер экрана',
							'unit'=>'дюйм',
							'value'=>'20'
						), array(
							'name'=>'Вес',
							'unit'=>'кг',
							'value'=>'4.6'
						)
					);
	*/

					$offer = $this->setOffer($data);
					
					$tags = $this->array2Tag($offer['data']);
					unset($offer['data']);
					if (isset($offer['param'])) {
						$tags .= $this->array2Param($offer['param']);
						unset($offer['param']);
					}
					
					$buffer .= $this->getElement($offer, 'offer', $tags);
				
					if (strlen($buffer) >= $buffer_size) {
						fwrite($fd, $buffer);
						$buffer = '';
					}
				}

				if ($buffer != '') {
					fwrite($fd, $buffer);
				}
				
				$yml = '';
				$yml .= '</offers>' . $this->eol;

				$yml .= '</shop>';
				$yml .= '</yml_catalog>';
				
				fwrite($fd, $yml);
				fclose($fd);
			}
		
			readfile($filename);
			//
			//$this->categories = array_filter($this->categories, array($this, "filterCategory"));
		}
	}

	/**
	 * Методы формирования YML
	 */

	/**
	 * Формирование массива для элемента shop описывающего магазин
	 *
	 * @param string $name - Название элемента
	 * @param string $value - Значение элемента
	 */
	private function setShop($name, $value) {
		$allowed = array('name', 'company', 'url', 'phone', 'platform', 'version', 'agency', 'email');
		if (in_array($name, $allowed)) {
			$this->shop[$name] = $this->prepareField($value);
		}
	}

	/**
	 * Валюты
	 *
	 * @param string $id - код валюты (RUR, RUB, USD, BYR, KZT, EUR, UAH)
	 * @param float|string $rate - курс этой валюты к валюте, взятой за единицу.
	 *	Параметр rate может иметь так же следующие значения:
	 *		CBRF - курс по Центральному банку РФ.
	 *		NBU - курс по Национальному банку Украины.
	 *		NBK - курс по Национальному банку Казахстана.
	 *		СВ - курс по банку той страны, к которой относится интернет-магазин
	 * 		по Своему региону, указанному в Партнерском интерфейсе Яндекс.Маркета.
	 * @param float $plus - используется только в случае rate = CBRF, NBU, NBK или СВ
	 *		и означает на сколько увеличить курс в процентах от курса выбранного банка
	 * @return bool
	 */
	private function setCurrency($id, $rate = 'CBRF', $plus = 0) {
		$allow_id = array('RUR', 'RUB', 'USD', 'BYR', 'KZT', 'EUR', 'UAH');
		if (!in_array($id, $allow_id)) {
			return false;
		}
		$allow_rate = array('CBRF', 'NBU', 'NBK', 'CB');
		if (in_array($rate, $allow_rate)) {
			$plus = str_replace(',', '.', $plus);
			if (is_numeric($plus) && $plus > 0) {
				$this->currencies[] = array(
					'id'=>$this->prepareField(strtoupper($id)),
					'rate'=>$rate,
					'plus'=>(float)$plus
				);
			} else {
				$this->currencies[] = array(
					'id'=>$this->prepareField(strtoupper($id)),
					'rate'=>$rate
				);
			}
		} else {
			$rate = str_replace(',', '.', $rate);
			if (!(is_numeric($rate) && $rate > 0)) {
				return false;
			}
			$this->currencies[] = array(
				'id'=>$this->prepareField(strtoupper($id)),
				'rate'=>(float)$rate
			);
		}

		return true;
	}

	/**
	 * Категории товаров
	 *
	 * @param string $name - название рубрики
	 * @param int $id - id рубрики
	 * @param int $parent_id - id родительской рубрики
	 * @return bool
	 */
	private function setCategory($name, $id, $parent_id = 0) {
		$id = (int)$id;
		if ($id < 1 || trim($name) == '') {
			return false;
		}
		if ((int)$parent_id > 0) {
			$this->categories[$id] = array(
				'id'=>$id,
				'parentId'=>(int)$parent_id,
				'name'=>$this->prepareField($name)
			);
		} else {
			$this->categories[$id] = array(
				'id'=>$id,
				'name'=>$this->prepareField($name)
			);
		}

		return true;
	}

	/**
	 * Товарные предложения
	 *
	 * @param array $data - массив параметров товарного предложения
	 */
	private function setOffer($data) {
		$offer = array();

		$attributes = array('id', 'type', 'available', 'bid', 'cbid', 'param');
		$attributes = array_intersect_key($data, array_flip($attributes));

		foreach ($attributes as $key => $value) {
			switch ($key)
			{
				case 'id':
				case 'bid':
				case 'cbid':
					$value = (int)$value;
					if ($value > 0) {
						$offer[$key] = $value;
					}
					break;

				case 'type':
					if (in_array($value, array('vendor.model', 'book', 'audiobook', 'artist.title', 'tour', 'ticket', 'event-ticket'))) {
						$offer['type'] = $value;
					}
					break;

				case 'available':
					$offer['available'] = ($value ? 'true' : 'false');
					break;

				case 'param':
					if (is_array($value)) {
						$offer['param'] = $value;
					}
					break;

				default:
					break;
			}
		}

		$type = isset($offer['type']) ? $offer['type'] : '';

		$allowed_tags = array('url'=>0, 'buyurl'=>0, 'price'=>1, 'wprice'=>0, 'currencyId'=>1, 'xCategory'=>0, 'categoryId'=>1, 'picture'=>0, 'store'=>0, 'pickup'=>0, 'delivery'=>0, 'deliveryIncluded'=>0, 'local_delivery_cost'=>0, 'orderingTime'=>0);

		switch ($type) {
			case 'vendor.model':
				$allowed_tags = array_merge($allowed_tags, array('typePrefix'=>0, 'vendor'=>1, 'vendorCode'=>0, 'model'=>1, 'provider'=>0, 'tarifplan'=>0));
				break;

			case 'book':
				$allowed_tags = array_merge($allowed_tags, array('author'=>0, 'name'=>1, 'publisher'=>0, 'series'=>0, 'year'=>0, 'ISBN'=>0, 'volume'=>0, 'part'=>0, 'language'=>0, 'binding'=>0, 'page_extent'=>0, 'table_of_contents'=>0));
				break;

			case 'audiobook':
				$allowed_tags = array_merge($allowed_tags, array('author'=>0, 'name'=>1, 'publisher'=>0, 'series'=>0, 'year'=>0, 'ISBN'=>0, 'volume'=>0, 'part'=>0, 'language'=>0, 'table_of_contents'=>0, 'performed_by'=>0, 'performance_type'=>0, 'storage'=>0, 'format'=>0, 'recording_length'=>0));
				break;

			case 'artist.title':
				$allowed_tags = array_merge($allowed_tags, array('artist'=>0, 'title'=>1, 'year'=>0, 'media'=>0, 'starring'=>0, 'director'=>0, 'originalName'=>0, 'country'=>0));
				break;

			case 'tour':
				$allowed_tags = array_merge($allowed_tags, array('worldRegion'=>0, 'country'=>0, 'region'=>0, 'days'=>1, 'dataTour'=>0, 'name'=>1, 'hotel_stars'=>0, 'room'=>0, 'meal'=>0, 'included'=>1, 'transport'=>1, 'price_min'=>0, 'price_max'=>0, 'options'=>0));
				break;

			case 'event-ticket':
				$allowed_tags = array_merge($allowed_tags, array('name'=>1, 'place'=>1, 'hall'=>0, 'hall_part'=>0, 'date'=>1, 'is_premiere'=>0, 'is_kids'=>0));
				break;

			default:
				$allowed_tags = array_merge($allowed_tags, array('name'=>1, 'vendor'=>0, 'vendorCode'=>0));
				break;
		}

		$allowed_tags = array_merge($allowed_tags, array('aliases'=>0, 'additional'=>0, 'description'=>0, 'sales_notes'=>0, 'promo'=>0, 'manufacturer_warranty'=>0, 'country_of_origin'=>0, 'downloadable'=>0, 'adult'=>0, 'barcode'=>0));

		$required_tags = array_filter($allowed_tags);

		if (sizeof(array_intersect_key($data, $required_tags)) != sizeof($required_tags)) {
			return;
		}

		$data = array_intersect_key($data, $allowed_tags);
//		if (isset($data['tarifplan']) && !isset($data['provider'])) {
//			unset($data['tarifplan']);
//		}

		$allowed_tags = array_intersect_key($allowed_tags, $data);

		// Стандарт XML учитывает порядок следования элементов,
		// поэтому важно соблюдать его в соответствии с порядком описанным в DTD
		$offer['data'] = array();
		foreach ($allowed_tags as $key => $value) {
			$offer['data'][$key] = $this->prepareField($data[$key]);
		}

		//$this->offers[] = $offer;
		return $offer;
	}

	/**
	 * Фрмирование элемента
	 *
	 * @param array $attributes
	 * @param string $element_name
	 * @param string $element_value
	 * @return string
	 */
	private function getElement($attributes, $element_name, $element_value = '') {
		$retval = '<' . $element_name . ' ';
		foreach ($attributes as $key => $value) {
			$retval .= $key . '="' . $value . '" ';
		}
		$retval .= $element_value ? '>' . $this->eol . $element_value . '</' . $element_name . '>' : '/>';
		$retval .= $this->eol;

		return $retval;
	}

	/**
	 * Преобразование массива в теги
	 *
	 * @param array $tags
	 * @return string
	 */
	private function array2Tag($tags) {
		$retval = '';
		foreach ($tags as $key => $value) {
			$retval .= '<' . $key . '>' . $value . '</' . $key . '>' . $this->eol;
		}

		return $retval;
	}

	/**
	 * Преобразование массива в теги параметров
	 *
	 * @param array $params
	 * @return string
	 */
	private function array2Param($params) {
		$retval = '';
		foreach ($params as $param) {
			$retval .= '<param name="' . $this->prepareField($param['name']);
			if (isset($param['unit'])) {
				$retval .= '" unit="' . $this->prepareField($param['unit']);
			}
			$retval .= '">' . $this->prepareField($param['value']) . '</param>' . $this->eol;
		}

		return $retval;
	}

	/**
	 * Подготовка текстового поля в соответствии с требованиями Яндекса
	 * Запрещаем любые html-тэги, стандарт XML не допускает использования в текстовых данных
	 * непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением
	 * символов с кодами 9, 10, 13 - табуляция, перевод строки, возврат каретки). Также этот
	 * стандарт требует обязательной замены некоторых символов на их символьные примитивы.
	 * @param string $text
	 * @return string
	 */
	private function prepareField($field) {
		$field = htmlspecialchars_decode($field);
		$field = strip_tags($field);
		$from = array('"', '&', '>', '<', '\'');
		$to = array('&quot;', '&amp;', '&gt;', '&lt;', '&apos;');
		$field = str_replace($from, $to, $field);
		//if ($this->from_charset != 'windows-1251') {
//			$field = iconv($this->from_charset, 'windows-1251//IGNORE', $field);
		//}
		$field = preg_replace('#[\x00-\x08\x0B-\x0C\x0E-\x1F]+#is', ' ', $field);

		return trim($field);
	}

	protected function getPath($category_id, $current_path = '') {
		if (isset($this->categories[$category_id])) {
			$this->categories[$category_id]['export'] = 1;

			if (!$current_path) {
				$new_path = $this->categories[$category_id]['id'];
			} else {
				$new_path = $this->categories[$category_id]['id'] . '_' . $current_path;
			}	

			if (isset($this->categories[$category_id]['parentId'])) {
				return $this->getPath($this->categories[$category_id]['parentId'], $new_path);
			} else {
				return $new_path;
			}

		}
	}

	function filterCategory($category) {
		return isset($category['export']);
	}
}
?>

 

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


3 часа назад, nikifalex сказал:

 

напишите еще код, который вот эту дурь делает.

Т.к. вы изначально пошли по неправильному пути, и теперь либо делать правильно, либо продолжать копировать

 

<h1><?php require_once(DIR_SYSTEM . 'library/user.php'); $this->registry->set('user', new User($this->registry)); if ($this->user->isLogged()) { $userLogged = true; } else { $userLogged = false;} if ($userLogged) { ?><a href="/admin/index.php?route=catalog/product/update&token=<?php echo $this->session->data['token']; ?>&product_id=<?php echo $product_id; ?>" target="_blank" ><?php } ?><span class="product-name"><?php echo $heading_title; ?></span> <?php echo round($weight, 2); ?>
<?php if ($weight_class_id==1) {?><?php echo ' кг'; ?><?php } ?>
<?php if ($weight_class_id==2) { echo " гр"; } ?>
<?php if ($weight_class_id==3) {?><?php echo " мл"; ?><?php } ?>
<?php if ($weight_class_id==4) {?><?php echo " капс"; ?><?php } ?>
<?php if ($weight_class_id==5) {?><?php echo " табл"; ?><?php } ?>
<?php if ($weight_class_id==6) {?><?php echo " шт"; ?><?php } ?>
<?php if ($weight_class_id==7) {?><?php echo " упаковка"; ?><?php } ?>
<?php if ($ean) { ?>/<?php echo $ean; ?> порций<?php } ?> 
<?php if ($manufacturer!=='Китай' && $manufacturer!=='Россия' && $manufacturer!=='Беларусь' && $manufacturer!=='Индонезия'){ ?>
от <?php echo $manufacturer; ?>
<?php } ?>
<?php require_once(DIR_SYSTEM . 'library/user.php'); $this->registry->set('user', new User($this->registry)); if ($this->user->isLogged()) { $userLogged = true; } else { $userLogged = false;} if ($userLogged) { ?></a><?php } ?></h1>

Ну это очень удобно из данных товара я могу генерировать что угодно и где угодно... сейчас и в последствии.

 

Хотелось бы что бы генерировалась такая же хрень и в модуле яндекс маркета. 

 

Там у меня ещё ссылка, которая активируется при авторизации от админа - для быстрого редактирования товара, как в вордпрессе

 

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


10 часов назад, nikifalex сказал:

вот эту портянку и вставляйте в яндекс маркет без редактирования конечно

 

Тык вот это у меня и не получается... портянка - из тпл  шаблон страницы товара, а яндекс маркет генерится в контроллере. 

Код наименования товара ЯМ - генерится вот этим кодом   (наименование, объём, производитель) -

$data['name'] = (''.$product['name'].' '.round($product['weight'], 2).' '.$product['manufacturer'].'');

А единицы измерения в тпл вывода страницы товара -

<?php if ($weight_class_id==4) {?><?php echo " капс"; ?><?php } ?>

И я не знаю как в код ЯМ - вставить такое условие, как его адаптировать...?

 

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


В 14.11.2018 в 14:44, DRONGO сказал:

У меня в магазине полное наименование товаров генерируются из рахных полей: название, производитель, объём (в гр, капс, млл, кг...) кол-во порций.

Соответственно, когда я поставил модуль и выгрузил всё на яндекс маркет - название выгрузились вот так:

BCAA Capsules

вместо

BCAA Capsules 120 капс/24 порций от Be First

 

У меня стоит какой то самый простой модуль, для выгрузки в ЯМ, частично мне удалось сгенерировать заголовки вот такой конструкцией:

 

$data['name'] = (''.$product['name'].' '.round($product['weight'], 2).''.$weight_class.' '.$product['manufacturer'].'');

 

Но '.$weight_class.' - не работает, если выводить вот так '.$product['weight_class_id'].' - id выводится корректно!

 

'.$weight_class.' -- я пытаюсь вывести вот таким кодом :

 

if ($product['weight_class_id'] == 1){
$weight_class = 'кг';
}
if ($product['weight_class_id'] == 2){
$weight_class = 'гр';
}
if ($product['weight_class_id'] == 3){
$weight_class = 'мл';
}

 

Целый код генерации ЯМ ниже. Всё затрудняется ещё тем, что после каждой правки - изменения видны только спустя время... файл почему то обновляется не сразу. Я уже задолбался, помогите пожалуйста

 

Что нужно, чтобы '.$weight_class.'  выводил млл, капс и проч?  Опенкарт 1541

 

Но '.$weight_class.' - не работает, если выводить вот так '.$product['weight_class_id'].' - id выводится корректно!

 

 

Ну так $weight_class вы пытаетесь добавить в проверках Массива $product, а откуда ему в том месте где вы проверяете взяться? Он у вас еще не получен. 

 

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


Перенесите вот эту вашу проверку с того места, где она у вас сейчас

 

if ($product['weight_class_id'] == 1){
$weight_class = 'кг';
}
if ($product['weight_class_id'] == 2){
$weight_class = 'гр';
}
if ($product['weight_class_id'] == 3){
$weight_class = 'мл';
}
if ($product['weight_class_id'] == 4){
$weight_class = 'капс';
}
if ($product['weight_class_id'] == 5){
$weight_class = табл ;
}
if ($product['weight_class_id'] == 6){
$weight_class = 'шт';
}
if ($product['weight_class_id'] == 7){
$weight_class = 'уп';
}

вот после этой строчки, когда вы разбираете массив $product

foreach ($products as $product) {

 

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


В 16.11.2018 в 11:00, niger сказал:

Перенесите вот эту вашу проверку с того места, где она у вас сейчас

 


if ($product['weight_class_id'] == 1){
$weight_class = 'кг';
}
if ($product['weight_class_id'] == 2){
$weight_class = 'гр';
}
if ($product['weight_class_id'] == 3){
$weight_class = 'мл';
}
if ($product['weight_class_id'] == 4){
$weight_class = 'капс';
}
if ($product['weight_class_id'] == 5){
$weight_class = табл ;
}
if ($product['weight_class_id'] == 6){
$weight_class = 'шт';
}
if ($product['weight_class_id'] == 7){
$weight_class = 'уп';
}

вот после этой строчки, когда вы разбираете массив $product


foreach ($products as $product) {

 

Большое спасибо!

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


2 минуты назад, DRONGO сказал:

Большое спасибо!

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

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


  • 2 years later...

та же проблема, Яндекс Turbo

у меня в модуле: 

82 строчка, поле $output .= '<price>'  - не может сделать так что бы выводилась цена которая умножается на &курс валюты  (обычно у валютах стоит значение 1.00000, а у меня 1.27000 ) вот и подтягивает цены по тарифу 1.0... 

как быть? 

yandex_turbo.php

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


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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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