Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

Рекомендованные сообщения

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

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

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 месяцев спустя...

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

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

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 месяца спустя...

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

Ссылка на комментарий
Поделиться на других сайтах


  • 4 года спустя...
В 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; ?>

Где ошибка?

Ссылка на комментарий
Поделиться на других сайтах


@AlexDW дополнительные поля реализованы, но они не завязаны с весом товара. Двойная работа получается.

 

@Gaziz Убрал. Ошибка осталась.

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.