OpenCart — как добавить вес, размеры и артикул в карточку товара | помощь в создании сайта и и…



OpenCart — как добавить вес, размеры и артикул в карточку товара

Автор: jul | Ноябрь 15, 2012 | Раздел: OpenCart | Комментариев: 57

По умолчанию в магазине OpenCart в карточке товара выводится следующая информация: модель, налоги, наличие и цена.

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

Все эти характеристики можно вывести на странице товара просто добавив несколько строк в код трех файлов магазина.  Теперь давайте рассмотрим весь процесс по порядку.

Версия OpenCart 1.5.3.1., тема по умолчанию.

1. Открываем файл, который отвечает за карточку товара, — catalog/view/theme/default/template/product/product.tpl и ищем строки вывода модели товара

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

после них добавляем строки для вывода веса

<?php if ($weight>0) { ?><span><?php echo $text_weight; ?></span> <?php echo round($weight, 2); ?> 
 <?php if ($weight) { ?>
 <?php } ?>

Где <?php if ($weight>0) { ?> отвечает за то, чтобы вес на странице товара отображался лишь в том случае, если он больше «0″. Если в данных товара поле «вес» будет не заполнено, то информация о весе на странице товара не отобразится.

2. Переходим к файлу catalog/controller/product/product.php и ищем строку

$this->data['text_model'] = $this->language->get(‘text_model’);

после нее добавляем

$this->data['text_weight'] = $this->language->get('text_weight');

Немного ниже находим следующую строку

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

и опять после нее добавляем код, который относится к весу

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

3. Теперь переходим к файлу, отвечающему за русский язык — catalog/language/russian/product/product.php, и после

$_['text_model'] = ‘Модель:’;

добавляем

$_['text_weight'] = 'Вес:';

4. Для того, чтобы после цифр выводились «граммы» или «килограммы», сразу же, за тем кодом, что мы добавили в самом начале, в файле  catalog/view/theme/default/template/product/product.tpl, добавляем следующие строки:

 <?php if ($weight_class_id==2) {?>
 <?php echo " гр<br />"; ?>
 <?php } ?>
 <?php if ($weight_class_id==1) {?>
 <?php echo ' кг'; ?>
 <?php } ?><?php } ?>

В файле  catalog/controller/product/product.php, после строк добавленных нами

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

добавляем следующий код:

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

И теперь, заполняя поле вес в админ-панели, мы будем видеть на странице товара указанный нами вес:

 

Аналогичным образом можно вывести в карту товара артикул и размеры (длина, ширина, высота) товара. Переменные для этих значений:

  • length — длина
  • width — ширина
  • height — высота
  • sku — артикул

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

Итак, нам необходимо вывести размеры товара: длину, ширину и высоту. Действовать мы будем точно также, как и при добавлении веса в карту товара.

Открываем файл  catalog/view/theme/default/template/product/product.tpl

и в необходимом месте, например, после вывода веса, добавляем следующий код:

<?php if ($length>0) { ?><span><?php echo $text_length; ?></span> <?php echo round($length, 2); ?> 
 <?php echo " см<br/>"; ?>
 <?php if ($length_class_id==1) {?>
 <?php } ?><?php } ?>
 <?php if ($length) { ?>
 <?php } ?>
 
 <?php if ($width>0) { ?><span><?php echo $text_width; ?></span> <?php echo round($width, 2); ?> 
 <?php echo " см<br/>"; ?>
 <?php if ($width_class_id==1) {?>
 <?php } ?><?php } ?>
 <?php if ($width) { ?>
 <?php } ?>
 
 <?php if ($height>0) { ?><span><?php echo $text_height; ?></span> <?php echo round($height, 2); ?> 
 <?php echo " см<br/>"; ?>
 <?php if ($height_class_id==1) {?>
 <?php } ?><?php } ?>
 <?php if ($height) { ?>
 <?php } ?>

Теперь, открываем второй файл, с которым мы работаем —  catalog/controller/product/product.php, и после строки, отвечающий за вывод веса,

$this->data['text_weight'] = $this->language->get('text_weight');

добавляем следующие строки:

$this->data['text_length'] = $this->language->get('text_length');
 $this->data['text_width'] = $this->language->get('text_width');
 $this->data['text_height'] = $this->language->get('text_height');

Спускаемся немного ниже и, опять таки, ищем строки с весом,

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

после которых добавим аналогичные строки, но только с необходимыми для нас высотой, длиной и шириной:

$this->data['length'] = $product_info['length'];
 $this->data['width'] = $product_info['width'];
 $this->data['height'] = $product_info['height'];

Всем удачной правки и красивых карт товара!)

Также Вам могут быть интересны следующие статьи:

Комментариев: 57. Добавьте свой комментарий

  1. Доброй ночи, просидела 4 часа, никак не смогла добиться корректной работы, выдает ошибку. Мне нужно именно по этой схеме чтобы выводилась категория "Цвет" и "Состав". Экспериментировала именно по вашей схеме с весом, т.к. он заполняется в админке понимаю что нужные мне характеристики еще сложнее привязать, но и вес не получилось, не пойму где ошибка. Спасибо, jul, очень подробная инструкция, но где-то косяк, а может уже и у меня в голове.
    • Наталья, здравствуйте. Опишите, что за ошибка появляется после проделанных действий. Прошерстила весь код, который разместила в посте касательно добавления веса, на наличие ошибок, и единственное, что заметила, так это то, что кавычки после копирования и добавления в документ принимают иной вид. Происходит это именно в пункте 2 с (‘text_weight’). Так что, если у Вас ошибка возникала именно по этой причине (в коде сразу видно, что не те кавычки, так как редактор подсвечивает переменную не тем цветом), то достаточно просто изменить кавычки на прямые. А вот те же Цвет и Состав можно спокойно выводить в опциях, не прибегая к копанию в коде. Если же этот варант не подходит, то гораздо проще изменить существующие поля (например, UPC или Расположение) на те, которые Вам нужны. Желаю, чтобы Ваши старания увенчались успехом!
  2. Да, именно из-за скобок была ошибка, а так получилось все ок, спасибо. Но вот возникает вопрос — я в атрибутах описываю состав и, получается еще вместо UPC настроила чтобы выдавал состав товара. А вот найти чтобы забивать, например в админке просто атрибут — состав- и чтобы он отражался одновременно внизу карточки товара и сбоку где модель — не нашла, или хотябы только справа в карточке товара. Спасибо за быстрый отзыв, я и не надеялась что возможно так быстро получить ответ и еще за такие приятные пожелания.
    • Наталья, простите, но не пойму в чем суть проблемы… В атрибутах (ниже самого товара) покупателям виден состав товара, поле "UPC" Вы переделали под "Состав", то есть в карточке товара состав также отображается, где же он еще требуется? Если вопрос касался единого поля в админке, при заполнении которого, состав мог бы отобразиться и в карте товара и ниже под товаром, то да, такого поля, к сожалению, просто нет. Ваш магазин доступен для просмотра или он у Вас на локалхосте? Было бы проще понять Вашу проблему, если бы можно было увидеть картинку. P.S. Хорошо, что с "весом" разобрались))
  3. jul, после того как делаю 4 пункт страница слетает, мне срочно надо сделать чтобы выводились кг и граммы. Помогите пожалуйста
    • Здравствуйте, Vlad. Если проблема еще актуальна, то опишите ее подробней: какая ошибка появляется, что не работает и т.д.
      • http://savepic.org/2559197.png мне надо чтобы напротив веса выводило гр, кг, еще в админке добавил таблетки и капсулы, то есть вес будет в гр,кг,таблетки,купсулы. Когда начинаю делать последний пункт сразу возникает такая проблема: Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/ismys157/domains/сайт.ру/public_html/catalog/view/theme/default/template/product/product.tpl on line 39
        • Код в пункте 4 только что обновлен, попробуйте его использовать в своем документе вместо предыдущего. Ошибка появлялась из-за неверных кавычек (редактор по какой-то причине их меняет). Если же и с новым кодом останется та же проблема (хотя ее быть не должно), то вручную измените кавычки, используя английскую раскладку.
  4. Отличная статья. С весом все ОК. Не подскажете, как сделать чтобы цена тоже отображалась только если она >0 ? Попробовал в catalog/view/theme/default/template/product/product.tpl также как с весом ?php if ($price>0) { ? Но цена исчезает вообще, даже если поле заполнено.
    • Спасибо. С вопросом о цене не сталкивалась, как-то еще не интересовал подобный вопрос, так что, к сожалению, не могу подсказать как это реализовать.
  5. после всех установок все работает кроме картинки товара, открывается в новой странице как wp, что делать? помогите если можете
    • Вы корректно добавили код в product.tpl? В нем находится код, отвечающий за вывод pop up окна миниатюры.
  6. Подскажите и мне пожалуйста. Сделал все так же как и в статье и у Vlad, тоже вес показывает но не пишет что это кг. как добавить чтоб писало?
    • Андрей, Вы корректно разместили код в своих файлах? У Vlada, к примеру, была пропущена часть кода, отвечающая за вывод "гр/кг". Проверьте пошагово проделанные изменения, если все же не найдете ошибку, пишите, помогу с кодом.
  7. А как вывести размеры товара на странице категорий и главной? $products[$j]['length']; не работает
    • Верно, таким способом вес в категории не вывести, но к сожалению, и положительного ответа как это сделать, я не дам — для меня это нечто новое, обязательно разберусь, но на данный момент не знаю как это реализовать посредством кода. Но можно попробовать этого добиться с помощью модуля Product Display Settings vqmod.
  8. Приветствую) Отличная статья) всё вышло просто прекрасно) Есть вопрос (как выше) по поводу вывода веса во всех товарах. категориях и производителях) так же ещё в других модулях.. в тойже карзине к примеру и в модуле быстрого просмотра)) Вес у меня обозначен Объёмом т.к. ИМ парфюмерный, Так же *Модель* переименовал в *Состав* вывести бы и его во все товары, категории и производители. Суть в том. что во всех товарах, категориях и производителях, по умолчанию переделано сеткой, и немного изменен дизайн. по типу списком но в два ряда) Пытаюсь экспериментировать.. но пока безрезультатно))
    • Спасибо. Что касается вывода характеристик опций не только в карте товара, но и в категориях, например, то для этой цели можно использовать модуль Product Display Settings vqmod, который автоматически выведет необходимые данные на нужных страницах.
  9. Спасибо) я заметил его постом выше) Виноват, не полностью осветил ситуацию… хочца без вмешательство через VQмод, так сказать ручками) не очень советуют использовать его…
    • Поэксериментирую и позже добавлю пост о добавлении вышеупомянутых характеристик кодом, а не посредством модулей. А что касется модуля, на который я дала ссылку, то не знаю насколько он хорош, знакома с ним только теоретически, а вот о самом vqmod плохое сказать сложно — отличная разработка для OpenCart.
  10. Спасибо огромное за помощь. Практически всё получилось, но есть несколько нюансов, с которыми не получается справиться: 1. Добавил длину, ширину, высоту и вес и всё это у меня вывело в 1 строку, а не каждый показатель на отдельной, как хотелось бы… 2. Также только в длине вывелись "см" и в весе "кг", а ширина и высота — без опознавательных знаков. Хотя все блоки абсолютно одинаковые — делал по Вашему образцу… Буду признателен за подсказку — как это всё и справить…
  11. Такая же проблема как и у Андрея выше Длинна с “см”, а ширина и высота – без опознавательных знаков. Помогите пжл
    • Если Ваша проблема заключалась исключительно в ширине и высоте, то я Вам ответила выше — необходимую информацию добавила в пост. Если же нет, то можете описать проблему подробнее и я постараюсь помочь с ней разобраться.
  12. Приветствую всех! Все сделал все выводиться но наверху страницы ругается: Notice: Undefined index: width_class_id in catalog/controller/product/product.php on 204 Undefined index: height_class_id in catalog/controller/product/product.php on line 205 в этих строках все прописано: $this->data['width_class_id'] = $product_info['width_class_id']; $this->data['height_class_id'] = $product_info['height_class_id']; Что делать? 😉
    • Добрый вечер, Max! А по какой причине у Вас в этих строках прописано 'width_class_id' и 'height_class_id'? По этой причине может возникать ошибка, о которой Вас и оповещает движок. Пропишите просто 'width' и 'height'.
  13. сделал как описано, но на странице выдает ошибку: Notice: Undefined variable: length_class_id in catalog/view/theme/theia/template/product/product.tpl on line 34 text_width 1.3 см Notice: Undefined variable: width_class_id in catalog/view/theme/theia/template/product/product.tpl on line 41 Подскажите, пожалуйста, как побороть?
    • Здравствуйте, Александр. Как у Вас обстоят дела с длиной и шириной? Разобрались с проблемой? Если нет, то напишите, постараюсь помочь.
  14. Александр, просто уберите одно равно из должно получиться далее везде. То же с этим голову ломал (я не спец в программировании), но методом научного тыка нашел ошибку. :))))
    • Денис, если Вы хотели помочь Александру, указав на какую-то ошибку в коде, и разместили код непосредственно в комментарии, то, как можете в этом сами убедиться, Вам это не удалось — код не отображается. Его необходимо размещать не в обычных тегах, а например, в квадратных скобках.
  15. Извиняюсь! В общем не знаю как вставить – смотрите в catalog/view/theme/default/template/product/product.tpl в классе id – после него два знака равно. Работает с одним. нужно убрать один знак равно. jul — огромное спасибо за статью !!!!!! Но проверьте пожалуйста код. У меня лично не работал при двух знаках равно, а вот при одном всё замечательно заработало.
    • Спасибо, Денис за комментарий. Во всех магазинах, которые я делала, и в которых требовалось вывести опции веса, длины и т.д., я использовала именно такой код, который здесь же и выложила: [?php if ($length_class_id==1) {?] то есть с двойным знаком равенства (оператор сравнения). Можно поинтересоваться, какую ошибку Вам выдает с использованием "=="? И какая версия OpenCart? Но главное, что у Вас получилось разобраться с проблемой!
      • и да, ошибка выдается, т.к. стоит неверный знак "==". Проверял на 1.5.4.1 Вообще весьма интересная реализация. Можно немного критики? Для чего вы выводите текстовые переменный в отдельный файл, и тут же используете вывод голого текста "см"? Тогда уж подключаем новую текстовую переменную: text_size и пропишем ее везде: 1/ вместо <?php echo " см"; ?> пишем 2/ в контроллере добавляем $this->data['text_size'] = $this->language->get('text_size'); и ессно в языковом файле добавляем $_['text_size'] = 'см';
        • Сергей, критика всегда только приветсвуется, главное, чтобы она была конструктивной. Спасибо, что предложили чистый вариант кода — удобный вариант. А что касается ошибки, то знак вполне себе верный (был бы он неверным, этого кода здесь бы не было, и мои магазины вместо отображения необходимых данных, выдавали бы ошибку), а вот версия уже не та, выше я писала, что данный код актуален для версии 1.5.3.1.
  16. Да не за что ! OcStore 1.5.4.1 + шаб от темфореста. Ошибку сейчас и не помню, но помню, что забив её в поисковик(гугли) увидел кучу ссылок на такую же проблему.
    • В посте я всегда пишу на какой версии применимы действия. Что касается данной темы, то все вышеописанные действия я использовала на версии 1.5.3.1. Вполне возможно, что это момент и оказывает решающее значение в верности или неверности кода.
  17. Здравствуйте! SKU Вы добавили только в product.tpl. А не подскажете, как добавить в базу данных существующего магазина параметр sku наряду с model, id и другими? Opencart 1.5.4.1…
    • Извините, но не совсем улавливаю суть вопроса. SKU и так есть в БД, хотя утверждать ничего не буду на счет версии 1.5.4.1 (до сих пор пользуюсь версией 1.5.3.1), но было бы весьма странно, если бы артикула не было в этой версии по умолчанию. Если я Вас неверно поняла, перефразируйте вопрос.
  18. Приветствую категорически! Спасибо за объяснение хака, я сегодня первый раз открыл опенкарт и тут такая удача — Ваша статья, но имхо в пункте 1 в первой строке ошибка: не хватает закрывающейся фигурной скобки и тега BR. Я вообще написал так:
    • Спасибо за замечание! А вот то, как Вы написали движок "съел" — в кооменте он не сохранился… Код бы следовало обрамить звездочками. Буду рада увидеть Ваш код!
  19. Спасибо, огромное! Все получилось. А как можно добавить мл. шт. капс. табл.? ocstore 1.5.4.1
    • И Вам спасибо за отзыв! Что касается мл. шт. капс. табл., то их можно отобразить таким же образом, как и вес. Если Вам необходимо, чтобы вместо кг и гр отображались другие параметры, то просто прописывайте их вместо указанных в статье. Всегда проще использовать уже существующие, но не используемые поля в админке, чем создавать новые.
      • В том то и дело, что нужны граммы, миллилитры, штуки, таблетки и капсулы. Магазин спортивног питания. Т.е. Вы предлагаете переименовать поля UPC, EAN, JAN, ISBN, MPN. и вывести в карточку товара?
        • А почему и нет? Зачем готовым параметрам пустовать и создвать нечто новое, если можно использовать уже существующие? Главное каждому параметру задать вывод только в том случае, если он больше "0", чтобы пустое поле не выводилось там, где в нем нет надобности.
  20. Спасибо огромное за подробнейшее описание. Возможно жто была моя большая ошибка и я стал делать аналогичные действия, чтобы вывести графу "расположение" (location) в карточку товара. Вроде все делал пошагово, но где-то допустил ошибку и теперь сайт пишет постоянные ошибки Parse error: syntax error, unexpected '}' in /home1/pokupaio/public_html/catalog/view/theme/bt_venous/template/product/product.tpl on line 35
    • Михаил, спасибо за отзыв. По большому счету, Вам, для того, чтобы вывести поле "Расположение" в карточку товара, и моя статья не нужна была. Это делается буквально в четыре клика. В файле product.tpl находите строку с выводом модели (как в статье, в первом шаге) и размещаете точно такую же строку, там где Вам необходимо и вместо model прописываете location. Затем в product.php находите строки с весом: $this->data['text_model'] = $this->language->get('text_model'); и $this->data['model'] = $product_info['model']; и опять таки, создаете аналогичные для location. Последнее, что потребуется сделать — в файле рус. локализации задать перевод для text_location.
  21. Кстати, мож кому пригодится — если нужно прописывать в этих строчках ещё и буквы или знаки, то лучше "клонировать" строчку отвечающую за вывод модели. Потому как в тех строчках, что получились, этого сделать не получится. Делал как в инструкции + поправил файл в админке admin/language/russian/catalog/product.php. Я ещё использовал окошки для вывода EAN, UPC, JAN, что б не простаивали. Делал по аналогии с инструкцией выше. У меня 1.5.4.1 + шаб навороченный.
    • Верное решение, так как модель предусматривает вывод различных символов, а тот же вес, например, должен выводить только цифры. Спасибо, Денис, за отзыв.
  22. А как вывести значения высоты длины и ширины товара (его объём)… в корзину товара при заказе..там по умолчанию тольо вес груза

Вступайте в беседу!

Имя
Email
Сайт
Комментарий

Уведомлять меня о новых записях почтой.


http://jul-collection.com/opencart-kak-dobavit-ves-razmeryi-i-artikul-v-kartochku-tovara.html

Губарь Маргарита Александровна