Перейти к содержанию
zcity

Как добавить дополнительные поля продукта?

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

Как расширить поля с стандартных 3

 

Производитель: HP

Модель: hp-lj-49a
Наличие: Есть в наличии

 

А  сделать

 

 

Принтеры:

HP LASERJET 4MV
HP LASERJET 4V

Модель картриджа:

C3900A
Ресурс картриджа (страниц): 8100
Производитель: Hewlett-Packard
Тип печати: Оригинальный
Цвет картриджа: Черный
Тип картриджа: Лазерный
Артикул: HP000355
Наличие: В наличии

А ЗНАЧЕНИЯ Принтеры СДЕЛАТЬ ССЫЛКАМИ 
HP LASERJET 4MV
HP LASERJET 4V

 

 
 
 
 

Поделиться сообщением


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

Не проще ли атрибуты задействовать?

Поделиться сообщением


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

А разве их можно вывести с ссылками?
И поместить в верх карточки?
Вот как тут plabis.ru/hp/hp-laser/hp-c3900a.html.

Изменено пользователем afwollis
unlinked, сторонняя сборка

Поделиться сообщением


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

Атрибуты можно вывести вверх.

В файле catalog/view/theme/default/template/product/product.tpl (вместо default папка с вашей темой)

После строки: <span><?php echo $text_stock; ?></span>  <?php echo $stock; ?>

 

Вставить код:

        <?php if ($attribute_groups) { ?>
        <table>
          <?php foreach ($attribute_groups as $attribute_group) { ?>
          <tbody>
            <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
              <tr>
                 <td><span><?php echo $attribute['name']; ?>:</span></td>
                 <td><?php echo $attribute['text']; ?></td>
              </tr>
            <?php } ?>
          </tbody>
          <?php } ?>
        </table>
        <?php } ?>

Это выведет вверх атрибуты.

Внизу страницы их можно убрать.

Поделиться сообщением


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

  Там если оставить разметку таблицы, будет вылазить. Что бы все было ровненько таблицу лучше убрать. Что бы стиль текста был такой же как у $text_manufacturer можно добавить тег <a>. Примерно так:

 

 <?php if ($attribute_groups) { ?>
              <?php foreach ($attribute_groups as $attribute_group) { ?>
                    <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
                       <span><?php echo $attribute['name']; ?>:</span>
                       <a><?php echo $attribute['text']; ?></a><br>
                       <?php } ?>
              <?php } ?>
        <?php } ?>

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От vadimpanicherski
      Здравствуйте! У меня проблема, у меня есть интернет магазин, продавать я буду по партнерской программе, проблема в том, что мне нужно что бы пользователь когда нажимает на кнопку купить выбранного товара, его перекидывало по партнерской ссылке на форму оформления заказа выбранного им товара, то есть мне нужно что бы при добавлении товара в магазине была ячейка для ссылки, которая будет вставлена в кнопку купить товара, и пользователь нажимая на кнопку купить его направляло на сайт с оформлением заказа. Пожалуйста помогите мне. Как это сделать? Версия OpenCart 2.3.0.2
    • От Nazgulov
      Дополнительные поля к описанию продукта? Платные модули? Не обязательно,
      Вашему вниманию способ, протестированный на магазине под управлением OpenCart версии 1.5.4.1.
      P.S. Не забываем про backup оригинальных файлов :-)

      Задача:
      Создание дополнительного текстового поля к описанию товара. В моем случае это будет поле "Стоимость за". Например: "Стоимость за: 1 килограмм" или "Стоимость за: 1 метр квадратный".

      Шаг 1. База данных. Создание столбца таблицы "product"
      Административная панель хостера --> управление базами данных --> выбор базы --> таблица "product" --> SQL запрос:

      ALTER TABLE `product` ADD `sellunit` VARCHAR( 32 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `shipping`ИЛИ выбор базы --> таблица "product" --> "Структура" --> "Добавить столбец" (под таблицей).
      В моем случае новосозданный столбец под названием 'sellunit' следует сразу после столбца 'shipping' и имеет символьный тип данных varchar с ограничением длины в 32 символа.

      Шаг 2. Административная часть
      /admin/controller/catalog/product.php
      Пример необходимого кода будет приводиться в окружении неизмененного кода (для удобства навигации по файлу), выделяясь отступами.
      Строка 563
      $this->data['entry_quantity'] = $this->language->get('entry_quantity'); $this->data['entry_stock_status'] = $this->language->get('entry_stock_status'); $this->data['entry_sellunit'] = $this->language->get('entry_sellunit'); $this->data['entry_price'] = $this->language->get('entry_price'); $this->data['entry_tax_class'] = $this->language->get('entry_tax_class');Строка 849
      if (isset($this->request->post['shipping'])) { $this->data['shipping'] = $this->request->post['shipping']; } elseif (!empty($product_info)) { $this->data['shipping'] = $product_info['shipping']; } else { $this->data['shipping'] = 1; } if (isset($this->request->post['sellunit'])) { $this->data['sellunit'] = $this->request->post['sellunit']; } elseif (!empty($product_info)) { $this->data['sellunit'] = $product_info['sellunit']; } else { $this->data['sellunit'] = ''; } if (isset($this->request->post['price'])) { $this->data['price'] = $this->request->post['price']; } elseif (!empty($product_info)) { $this->data['price'] = $product_info['price']; } else { $this->data['price'] = '';
      /admin/model/catalog/product.php
      В данном файле запросы к базе данных представлены в виде сплошной строки. Вынос каждого запроса в новую строку в представленном ниже коде сделан для наочности; менять структуру вовсе необязательно.
      Строка 4
      manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', sellunit = '" . $this->db->escape($data['sellunit']) . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "',Строка 120
      manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', sellunit = '" . $this->db->escape($data['sellunit']) . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "',
      /admin/language/russian/catalog/product.php
      Внести аналогичные изменения во все использующиеся языковые файлы административной панели, например /admin/language/ukrainian/catalog/product.php
      Строка 48
      $_['entry_minimum'] = 'Минимальное количество:<br/><span class="help">Указание минимально количества в заказе</span>'; $_['entry_stock_status'] = 'Остутствие на складе:<br /><span class="help">Статус, показываемый, когда товара нет на складе</span>'; $_['entry_sellunit'] = 'Стоимость за:'; $_['entry_price'] = 'Цена:'; $_['entry_tax_class'] = 'Налог:';
      /admin/view/template/catalog/product_form.tpl
      Строка 100
      <tr> <td><?php echo $entry_location; ?></td> <td><input type="text" name="location" value="<?php echo $location; ?>" /></td> </tr> <tr> <td><?php echo $entry_sellunit; ?></td> <td><input type="text" name="sellunit" value="<?php echo $sellunit; ?>" /></td> </tr> <tr> <td><?php echo $entry_price; ?></td> <td><input type="text" name="price" value="<?php echo $price; ?>" /></td> </tr>
      Шаг 3. Клиентская часть
      /catalog/controller/product/product.php
      Строка 150
      $this->data['text_discount'] = $this->language->get('text_discount'); $this->data['text_stock'] = $this->language->get('text_stock'); $this->data['text_sellunit'] = $this->language->get('text_sellunit'); $this->data['text_price'] = $this->language->get('text_price'); $this->data['text_tax'] = $this->language->get('text_tax'); Строка 190
      $this->data['reward'] = $product_info['reward']; $this->data['points'] = $product_info['points']; $this->data['sellunit'] = $product_info['sellunit']; if ($product_info['quantity'] <= 0) { $this->data['stock'] = $product_info['stock_status']; } elseif ($this->config->get('config_stock_display')) { $this->data['stock'] = $product_info['quantity']; } else { $this->data['stock'] = $this->language->get('text_instock'); }
      /catalog/model/catalog/product.php
      Строка 39
      'manufacturer_id' => $query->row['manufacturer_id'], 'manufacturer' => $query->row['manufacturer'], 'sellunit' => $query->row['sellunit'], 'price' => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']), 'special' => $query->row['special'],
      /catalog/language/russian/product/product.php
      Внести аналогичные изменения во все языковые файлы задействованных языков, например /catalog/language/ukrainian/product/product.php
      Строка 11
      $_['text_stock'] = 'Наличие:'; $_['text_instock'] = 'Есть в наличии'; $_['text_sellunit'] = 'Стоимость за:'; $_['text_price'] = 'Цена:'; $_['text_tax'] = 'Без НДС:';
      /catalog/view/theme/%yourtheme%/template/product/product.tpl
      Строка 34
      <div class="description"> <?php if ($manufacturer) { ?> <span><?php echo $text_manufacturer; ?></span> <a href="<?php echo $manufacturers; ?>"><?php echo $manufacturer; ?></a><br /> <?php } ?> <span><?php echo $text_model; ?></span> <?php echo $model; ?><br /> <?php if ($reward) { ?> <span><?php echo $text_reward; ?></span> <?php echo $reward; ?><br /> <?php } ?> <span><?php echo $text_stock; ?></span> <?php echo $stock; ?> <br /> <span><?php echo $text_sellunit; ?></span> <?php echo $sellunit; ?></div> <?php if ($price) { ?> <div class="price"><?php echo $text_price; ?> <?php if (!$special) { ?> <?php echo $price; ?> <?php } else { ?> <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span> <?php } ?>
      На этом всё. Good luck!
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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