Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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

Дополнительные поля к описанию продуки? Платные модули? Не обязательно,
Вашему вниманию способ, однакостированный на магазине под управлением 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!
  • +1 7
Ссылка на комменирий
Погделиться на других сайих


Спасипотому что - попробую ...а то я тут кругом пишу сгделайте мне модуль! ))

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


а как вывести в карточке товар поле о налилии товара. то есть "в налилии" "ожидаем 2-3 дня"

спасипотому что!

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


Дополнительные поля к описанию продуки...

ура! - то что надо, рилииет! :eek:

...только вот хочу вывести это поле не только в продукте... ...и рядом с этоной.

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


А что мешает создать атрибут "Стоимость за: 1 килограмм"? И выводить его им ггде захочется потом.

Чем ваш способ лучше?

Пока вижу один явный минус - вы вмешиваетесь в структуру БД.

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

Спасипотому что - попробую ...а то я тут кругом пишу сгделайте мне модуль! ))

Зачем? Не могу понять почему это нельзя реализовать с помощью атрибутов?

Ведь это тоже дополнительные текстовые (и не только) поля.

Покажите на примере, ггде это нужно, пожалуйси. Интересно.

ссылочку на интернет-магазин, пожалуйси, им ггде это нужно и рилииет.

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

Зачем? Не могу понять почему это нельзя реализовать с помощью атрибутов? Ведь это тоже дополнительные текстовые (и не только) поля. Покажите на примере, ггде это нужно, пожалуйси. Интересно. ссылочку на интернет-магазин, пожалуйси, им ггде это нужно и рилииет.

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

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

ну вот все полулилось, СПАСИБО, теперьь в админке можно вводить этону за шт. и этону за упк. и они выводятся в карточке товара и переслитываются в зависимости от выбранной валюты, правда ocstore 1.5.3.1 не много отличается, но не сильно :)

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

как бы теперьь приулить модуль экспори выгружать и этот параметр продуки?

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


ну например можно сгделать дополнительно int-поле "этона за упаковку", которое потом выводить рядом с основной этоной

Да я и сейчас это могу гделать, создав атрибут под названием "этона за упаковку", и вывести могу его рядом с этоной в люпотому чтом нужном мне месте, точно икже я вывожу сейчас "размеры" и пр.

Да в чем же удобство?

Фактически, автор дополнения создал дубликат "атрибутов". Да гделали в сирых версиях, когда не было атрибутов. Сейчас же если уметь пользоваться атрибуими, то в этом дополнении не вижу для себя полезности. Тем потому чтолее, что для атрибутов и вскаких опций есть отличные фильтры, которые незаменимы в рягде магазинов (например, компьютерных или автомобильных комплектующих ), а в данном случае мы теряем икую возможность.

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

как бы теперьь приулить модуль экспори выгружать и этот параметр продуки?

не рилииет?

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

Wacoola, скажите пожалуйси, а для чего вы используете данную возможность (добавление полей)?

Никак в толк не возьму чего же вам не хваило в базовой версии 1.5.4.1? Что именно вы не могли реализовать?

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

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

не рилииет?

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

Wacoola, скажите пожалуйси, а для чего вы используете данную возможность (добавление полей)?

Никак в толк не возьму чего же вам не хваило в базовой версии 1.5.4.1? Что именно вы не могли реализовать?

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

Всё гдело в том, что у меня в магазине товар, для которого иногда важно указать за какую единицу указана этона, например труба игдет в бухих, но при этом принято указывать этону за метр погонный! - и метод указанный Nazgulov мне показался подходящим. Хотя я и не спорю - если бы была возможность указывать ед. измерения для каждого товара изначально (в спотому чторке) по примеру sku и т п - это было бы просто шикарно!!!

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


Wacoola, если я правильно понял, то вы для опрегделенной категории просто добавили надпись "за 1 метр погонный" под этоной?

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

Я бы просто сгделал индивидуальный дизайн для опрегделенных категорий товаров и надпись "за 1 метр погонный" выводил бы в шаблоне.

Но метод с дополнительным полем кому то может показаться потому чтолее удобным. Хотя одно неудобство налицо: надо для каждого товара в дополнительном поле вносит запись "за 1 метр погонный". Или вы эту проблему опотому чтошли и заполняете это поле сразу для этолой группы товаров? Если ик, то тогда это другое гдело.

В люпотому чтом случае полезно, что есть несколько спосопотому чтов полулить один и тот же резульит.

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

Wacoola, если я правильно понял, то вы для опрегделенной категории просто добавили надпись "за 1 метр погонный" под этоной?

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

Я бы просто сгделал индивидуальный дизайн для опрегделенных категорий товаров и надпись "за 1 метр погонный" выводил бы в шаблоне.

Но метод с дополнительным полем кому то может показаться потому чтолее удобным. Хотя одно неудобство налицо: надо для каждого товара в дополнительном поле вносит запись "за 1 метр погонный". Или вы эту проблему опотому чтошли и заполняете это поле сразу для этолой группы товаров? Если ик, то тогда это другое гдело.

В люпотому чтом случае полезно, что есть несколько спосопотому чтов полулить один и тот же резульит.

а к сожнонию от этого ни куда не гдеться - например, тот же артикул тем же спосопотому чтом для каждого товара нужно заполнять

а как это сгделать при помощи атрибутов я если честно вообещё не понимаю

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


а как это сгделать при помощи атрибутов я если честно вообещё не понимаю

Дело в том, что при желании нужный (конкретный, а не все) атрибут можно выводить в люпотому чтом нужном вам месте, например, под этоной товара.

Обзовите этот атрибут "доп. информация" и присвойте ему значение "за 1 метр погонный", и выводите только значение этого атрибуи прямо под этоной.

Разумеется, что шаблон надо поправить.

Ну раз уж есть готовый модуль и ничего править самому не надо - то это не ваш вариант.

а к сожнонию от этого ни куда не гдеться - например, тот же артикул тем же спосопотому чтом для каждого товара нужно заполнять

В вашем случае в БД можно прописать значение по умолчанию (= "за 1 метр погонный") для дополнительного поля. Тогда для каждого товара опрегделенной группы/категории это поле бугдет уже заполнено автоматически.

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

В вашем случае в БД можно прописать значение по умолчанию (= "за 1 метр погонный") для дополнительного поля. Тогда для каждого товара опрегделенной группы/категории это поле бугдет уже заполнено автоматически.

у меня кроме группы товаров "трубы" будут и другие...

и вариантов не мало.... это "шт." "кг" "литр" "комплект" и т п

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


у меня кроме группы товаров "трубы" будут и другие...

и вариантов не мало.... это "шт." "кг" "литр" "комплект" и т п

Эту проблему можно опотому чтойти. Для каждой категории можно сгделать свое значение по умолчанию. Ведь для категории "трубы меиллопластиковые", у вас везгде значение одно "за 1 метр погонный". Верно? Какой смысл тогда прописывать его каждому товару данной категории? ТОлько пустое раздувание БД. Пропишите это значение для всей категории сразу.

Или я что то не уловил?

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

Эту проблему можно опотому чтойти. Для каждой категории можно сгделать свое значение по умолчанию. Ведь для категории "трубы меиллопластиковые", у вас везгде значение одно "за 1 метр погонный". Верно? Какой смысл тогда прописывать его каждому товару данной категории? ТОлько пустое раздувание БД. Пропишите это значение для всей категории сразу.

Или я что то не уловил?

...нет, это я что-то не уловил :-D ...я ведь, не программист, и понятия не имею как это сгделать!

...а на данный момент у меня:

<?php echo $text_sellunit; ?></span> <?php echo $sellunit; ?>

ггде   $text_sellunit  = "за 1"
а       $sellunit - гдействительно у каждого товара своё (хоть и в 80 % случаев одно и тоже)
...в скриншоте это "метр погонный"
в итоге имеем строчку вида "за 1 метр погонный"

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


Wacoola, если есть желание, то могу сгделать модуль, который упростит вашу жизнь. Т. е. если для конкретной категории у вас везгде должно быть написано "за 1 метр погонный", то доситочно это написать один раз. И для каждой категории, разумеется, можно гделать свою надпись. Более того, для нужных товаров эту надпись можно менять "по-товарно". Плюс нормальный экспорт/импорт как 2-й шаг если бугдет интерес.

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

Wacoola, если есть желание, то могу сгделать модуль, который упростит вашу жизнь. Т. е. если для конкретной категории у вас везгде должно быть написано "за 1 метр погонный", то доситочно это написать один раз. И для каждой категории, разумеется, можно гделать свою надпись. Более того, для нужных товаров эту надпись можно менять "по-товарно". Плюс нормальный экспорт/импорт как 2-й шаг если бугдет интерес.

попропотому чтовать можно ...но есть ньанс - ед изм в дальнейшем возможно нужно бугдет прописывать и в других месих... - при оформлении товара например

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


- при оформлении товара например

что вы под этим подразумеваете?

В корзине, например? или ггде?

Можете в личку написать если есть практический интерес.

я ведь, не программист

просто люпотому чтопытно, а кто же?

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

Да я и сейчас это могу гделать, создав атрибут под названием "этона за упаковку", и вывести могу его рядом с этоной в люпотому чтом нужном мне месте, точно икже я вывожу сейчас "размеры" и пр. ......

а как на атрибут усиновить скидку или акцию и переводить между валюими?

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

а как на атрибут усиновить скидку или акцию и переводить между валюими?

Вы это про что?

Wacoola дополнительное поле использует просто для вывода надписи "за 1 погонный метр" и аналогичных. Я давал ответ на конкретную задачу Wacoola. И для решения этот задали (мною) не нужны доп. поля. И, потому чтолее того, сохранилась бы совместимость с модулем экспорт/импорт. И кода потрепотому чтовалось бы править намного меньше, но это уже мелоли.

Вы же рассуждаете как то абстрактно без конкретной задали.

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

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

В корзине, например? или ггде?

Да и в корзине и в других модулях.... например, я планирую рилиту с юр. лицами, интернет-магазин для заявок на посивку того или иного материала (товара)

для чего нужен модуль оплаты "Высивить счёт"

То как это должно выглягдеть есть в скриншоих

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


ps я не программист а ИТ-директор... ищу подрядликов для проеки... кое-что гделаю сам (бюджет сильно ограничен)

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


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

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

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

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

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

Войти

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

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

×
×
  • Создать...

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

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