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

[Решено] Как вывести вес в category/product? (единица веса)


Recommended Posts

Путем несложных манипуляций удалось вывести "Вес" как писали в этой теме.

Но есть еще несколько вопросов.

1. Вес, как единица измерения, мне нужна а) граммы б) килограммы - мне нужно выводить после указания значения саму переменную - "кг" или "гр", которая выставляется в админке при добавлении товара.

Пример: 1940 - нужно указыать как гр. а цельное число - 8 - уже кг.

2. Как убрать дробность в единице измерения? Я указыаю вес 4536 гр. - На странице выводится 4,536.00 - ни к чему тут запятая и два нуля в придачу.

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


Так, для страницы товаров решение здесь http://forum.opencar...opic.php?t=5121

Чтобы не лопатить чуку букв, буду краток

catalog/controller/product/product.php

После

$this->data['model'] = $product_info['model'];

поставить

$this->data['weight'] = $this->weight->format($product_info['weight'], $product_info['weight_class_id']);

view/theme/default/template/product/product.tpl

после

<span><?php echo $text_model; ?></span> <?php echo $model; ?><br />

поставить

<span>Вес: </span><?php echo $weight; ?><br />

Я не заморачиваюсь с файлом языков, кому надо - по двум ссылкам расписано куда добавлять универсальный многоязычный текст "Вес".

Осталось разобраться, как проделать тоже самое для category .php и .tpl

и запятые с двумя нолями убрать.

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


Расследую дальше. Чтобы убрать нули и запятую, в файле system/library/weight.php заменяем 2 на 0 и удалить запятую в $thousand_point = ','

public function format($value, $weight_class_id, $decimal_point = '.', $thousand_point = ',') {
  if (isset($this->weights[$weight_class_id])) {
	  return number_format($value, 2, $decimal_point, $thousand_point) . $this->weights[$weight_class_id]['unit'];
  } else {
   return number_format($value, 2, $decimal_point, $thousand_point);
  }
}
  • +1 2
Надіслати
Поділитися на інших сайтах


Вобщем, справился сам. Может, кому и пригодится тоже.

Выводим вес с наименованием в категорию.

catalog/controller/product/category.php

После

	$this->data['products'][] = array(
	 'product_id'  => $result['product_id'],
	 'thumb'	   => $image,
	 'name'		=> $result['name'],

добавляем

'weight' => $this->weight->format($result['weight'], $result['weight_class_id']),

view/theme/default/template/product/category.tpl

после

	  <div class="description"><?php echo $product['description']; ?></div>

добавляем

<div class="dimensions"><span>Вес: </span><?php echo $product['weight']; ?></div>

вывод на линейной и на сетке:

после

html += '  <div class="name">' + $(element).find('.name').html() + '</div>';

добавляем

html += '<div class="dimensions">' + $(element).find('.dimensions').html() + '</div>';

ищем опять

html += '<div class="name">' + $(element).find('.name').html() + '</div>';

добавляем

html += '<div class="dimensions">' + $(element).find('.dimensions').html() + '</div>';

В принципе, должно быть понятно, что переменную вывода в .tpl можно вставлять в любое место, после заголовка или перед описанием.

Чтобы небыло ромбиков с вопросами, как в предыдущих темах спрашивают, нужно файл открывать в нормальных редакторах типа Notepad++ и ставить Encode in UTF-8 without BOM

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


  • 11 months later...

Вобщем, справился сам. Может, кому и пригодится тоже.

Выводим вес с наименованием в категорию.

catalog/controller/product/category.php

После

	$this->data['products'][] = array(
	 'product_id'  => $result['product_id'],
	 'thumb'	   => $image,
	 'name'		=> $result['name'],

добавляем

'weight' => $this->weight->format($result['weight'], $result['weight_class_id']),

view/theme/default/template/product/category.tpl

после

	  <div class="description"><?php echo $product['description']; ?></div>

добавляем

<div class="dimensions"><span>Вес: </span><?php echo $product['weight']; ?></div>

вывод на линейной и на сетке:

после

html += '  <div class="name">' + $(element).find('.name').html() + '</div>';

добавляем

html += '<div class="dimensions">' + $(element).find('.dimensions').html() + '</div>';

ищем опять

html += '<div class="name">' + $(element).find('.name').html() + '</div>';

добавляем

html += '<div class="dimensions">' + $(element).find('.dimensions').html() + '</div>';

В принципе, должно быть понятно, что переменную вывода в .tpl можно вставлять в любое место, после заголовка или перед описанием.

Чтобы небыло ромбиков с вопросами, как в предыдущих темах спрашивают, нужно файл открывать в нормальных редакторах типа Notepad++ и ставить Encode in UTF-8 without BOM

Спасибо, работает.

Вот только непонятна как сделать что слова "Вес:" был мультиязычный?

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


Да я уже побывал, он мне ошибку выдаёт. Может Вы могли бы дать пример? Вот переменная:

$_['text_weight']	    = 'Вес:';
В контроллере еще пропишите
$this->data['text_weight'] = $this->language->get('text_weight');
  • +1 1
Надіслати
Поділитися на інших сайтах


Прогресс, больше ошибку не показывает показывает text_weight из каково файла он пытается взять $_['text_weight']     = 'Вес:';

Кусок из category.tpl

 <?php if ($product['thumb']) { ?>
      <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
      <?php } ?>
      <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
      <div class="description"><?php echo $product['description']; ?></div>
	  <div class="dimensions"><span><?php echo $text_weight; ?></span><?php echo $product['weight']; ?></div>
      <?php if ($product['price']) { ?>
      <div class="price">
        <?php if (!$product['special']) { ?>
        <?php echo $product['price']; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span>
        <?php } ?>
        <?php if ($product['tax']) { ?>
        <br />
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
        <?php } ?>
      </div>
      <?php } ?>

Кусок из product.php

			$this->data['text_refine'] = $this->language->get('text_refine');
			$this->data['text_empty'] = $this->language->get('text_empty');			
			$this->data['text_quantity'] = $this->language->get('text_quantity');
			$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
			$this->data['text_weight'] = $this->language->get('text_weight');
			$this->data['text_model'] = $this->language->get('text_model');
			$this->data['text_price'] = $this->language->get('text_price');
			$this->data['text_tax'] = $this->language->get('text_tax');
Надіслати
Поділитися на інших сайтах


Прогресс, больше ошибку не показывает показывает text_weight из каково файла он пытается взять $_['text_weight'] = 'weight']

Если язык русский, то из файла /catalog/language/russhian/product/catalog.php,

если английский - то из /catalog/language/english/product/catalog.php

Это относится к категориям. Если надо в карточку продукта, то надо добавлять в контроллере, языках и шаблоне в product.php(tpl)

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


Это относится к категориям. Если надо в карточку продукта, то надо добавлять в контроллере, языках и шаблоне в product.php(tpl)

Во! Точно.

Спасибо огромное, помогло) Спасибку тыкнул ;)

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


  • 4 months later...

Спасибо, описанная в топике инструкция помогла. До этого находил несколько топиков, где предлагалось без правки контроллера лишь в шаблоне темы использовать $product_info['weight'] - вот с этим не получилось (наверное, для старых версий движка работало).

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


  • 4 years later...
В 23.05.2012 в 18:17, lastrong сказал:

Так, для страницы товаров решение здесь http://forum.opencar...opic.php?t=5121

Чтобы не лопатить чуку букв, буду краток

catalog/controller/product/product.php

После

 


$this->data['model'] = $product_info['model'];

поставить

 


$this->data['weight'] = $this->weight->format($product_info['weight'], $product_info['weight_class_id']);

view/theme/default/template/product/product.tpl

после

 


<span><?php echo $text_model; ?></span> <?php echo $model; ?><br />

поставить

 


<span>Вес: </span><?php echo $weight; ?><br />

Я не заморачиваюсь с файлом языков, кому надо - по двум ссылкам расписано куда добавлять универсальный многоязычный текст "Вес".

Осталось разобраться, как проделать тоже самое для category .php и .tpl

и запятые с двумя нолями убрать.

Перепробовал все возможные решения по добавлению веса в карточку товара со всех тем, имеющихся на форуме. Всегда выдает одну и ту же ошибку в карточке товара вместо отображения веса:

Notice: Undefined variable: weight in */catalog/view/theme/unishop/template/product/product.tplon line 65

Версия ocStore 2.3.0.2.3. Шаблон unishop.

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


13 минут назад, steileei сказал:

Перепробовал все возможные решения по добавлению веса в карточку товара со всех тем, имеющихся на форуме. Всегда выдает одну и ту же ошибку в карточке товара вместо отображения веса:


Notice: Undefined variable: weight in */catalog/view/theme/unishop/template/product/product.tplon line 65

Версия ocStore 2.3.0.2.3. Шаблон unishop.

$data['weight'] = $product_info['weight'];

 

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

7 минут назад, Gaziz сказал:

$data['weight'] = $product_info['weight'];

Если это ставлю в контроллере, то ошибка повторяется.

Если в шаблоне, то этот код текстом и выдает в карточке товара.

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


1 минуту назад, steileei сказал:

Если это ставлю в контроллере, то ошибка повторяется.

Если в шаблоне, то этот код текстом и выдает в карточке товара.

в контроллере catalog/controller/product/category.php:

В массиве $data['products'][] = array(

должен быть указан вес:

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

В catalog/view/theme/*/template/product/category.tpl

<?php echo $product['weight']; ?>

 

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

Проделал аналогично для категории:

в контроллере поставил вес в массив

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

в темы добавил 

<?php echo $product['weight']; ?>

выдает ошибку: 

Notice: Undefined variable: product in */catalog/view/theme/unishop/template/product/product.tpl on line 65

 

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


5 минут назад, steileei сказал:

Это для категории? Мне нужно для карточки товара.

В контроллере:

$data['weight'] = $product_info['weight'];

В product.tpl

<?php echo $weight; ?>

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

@Gaziz

Тоже самое. 

Notice: Undefined variable: weight in */catalog/view/theme/unishop/template/product/product.tpl on line 65

В итоге у меня в контроллере product.php в переменной: 

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

Также в контроллере product.php 

после 
$data['model'] = $product_info['model'];
добавлено
$data['weight'] = $product_info['weight'];

В шаблоне product.tpl: 

<?php echo $weight; ?>

Где ошибка?

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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