Дополнительное поле для товара в админ панели

  • 28 Ответов
  • 10804 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Stechkin

  • Новичок
  • *
  • 8
  • 1
Всем привет!
Иногда нам может потребоваться добавить дополнительное поле для товара в админ панели и выводить его где нибудь в магазине. Для удобства, возьмем поле Артикул и на его основе добавим еще одно.

Шаг 1.
Добавим поле в файле: administrator\components\com_virtuemart\views\product\tmpl\product_edit_information.php строка ~ 44
Код
<td width="21%" >
  <div style="text-align:right;font-weight:bold;"><?php echo JText::_('COM_VIRTUEMART_PRODUCT_FORM_SKU')?></div>
</td>
<td width="79%" height="2">
  <input type="text" class="inputbox" name="product_sku" id="product_sku" value="<?php echo $this->product->product_sku; ?>" size="32" maxlength="64" />
</td>
//=========наш код для нового поля===
<td width="21%" >
<div style="text-align:right;font-weight:bold;"><?php echo "Артикул2" ?></div>
</td>
<td width="79%" height="2">
<input type="text" class="inputbox" name="product_sku2" id="product_sku2" value="<?php echo $this->product->product_sku2; ?>" size="32" maxlength="64" />
</td>
//================================
теперь у нас есть еще одно поле:


Шаг 2.
На этом шаге сразу добавим поле в БД:
табл. virtuemart_products, добавляем поле с аналогичными атрибутам как у product_sku

Шаг 3.
в файле shopfunction.php 1233 строка:
Код
$filterArray = array('product_name', 'created_on' ....
добавляем в массив наше поле

Шаг 4.
Выводить так: echo $product->product_sku2;

ШАГ 5 (примечание Dianis)

В файле /administrator/components/com_virtuemart/tables/products.php

Нужно дописать свои дополнительные поля после
Код
var $product_sku= '';
« Последнее редактирование: 22.10.2012, 22:02:02 от Stechkin »

*

magic7tyle

  • Осваиваюсь на форуме
  • ***
  • 37
  • 1
В целом спасибо. Давно пользуюсь данным способом.
Но есть замечание:

Шаг 3.
в файле shopfunction.php 1233 строка:
Код
$filterArray = array('product_name', 'created_on' ....
добавляем в массив наше поле
1. Когда перепечатываете, будьте внимательнее, файл называется "shopfunctions.php".
2. В VirtueMart 2.0.10 данные нужно добавлять в строке 1403 вышеуказаного файла, которая вот как выглядит:
Код
$filterArray = array('product_name', '`p`.created_on', '`p`.product_sku',

*

veNick

  • Осваиваюсь на форуме
  • ***
  • 63
  • 0
подскажите пожалуйта, а как выводить это поле в списке товаров в админке? спасибо
с этим разобрался, нужно добавить в administrator\components\com_virtuemart\views\product\tmpl\default.php
после:
Код
<th ><?php echo $this->sort('product_sku')?></th>
добавить
Код
<th ><?php echo $this->sort('product_sku2')?></th>

и в этом же файле ~строка 150, после:
Код
<td><?php echo $product->product_sku; ?></td>
добавить
Код
<td><?php echo $product->product_sku2; ?></td>

в языковом файле прописать значение для COM_VIRTUEMART_PRODUCT_SKU2

теперь подскажите, как осуществлять поиск по новому полю?
« Последнее редактирование: 08.11.2012, 12:58:57 от veNick »

*

Dianis

  • Осваиваюсь на форуме
  • ***
  • 36
  • 0
Все это хорошо, но только походу еще что нужно добавить, так как получается работает функция на апдейт дополнительных полей только уже существующего товара. При создании нового товара если заполнить дополнительные поля то значения не сохраняются, нужно повторно заходить в созданный товар и вводить значения в дополнительные поля, только тогда значения сохраняются.

Решение я нашел.

Допишите в первый пост

ШАГ 5

В файле /administrator/components/com_virtuemart/tables/products.php

Нужно дописать свои дополнительные поля после
Код
var $product_sku= '';

Тода все будет работь как надо.

« Последнее редактирование: 21.10.2012, 03:31:58 от Dianis »

*

veNick

  • Осваиваюсь на форуме
  • ***
  • 63
  • 0
и все-таки, по новому полю в списке товаров поиск не осуществляется, как поправить?
« Последнее редактирование: 08.11.2012, 13:14:41 от veNick »

*

ssn

  • Новичок
  • *
  • 1
  • 0
Поддерживаю вопрос.

*

Dianis

  • Осваиваюсь на форуме
  • ***
  • 36
  • 0
Нашел решение что бы по дополнительному полю можно было производить поиск и сортировать.

ШАГ 6
Делаем поиск и сортировку по нашему полю.
Все продолжаем на примере с (product_sku2)

1.  В файле admin/com_virtuemart/models/invertory.php  добавляем  наш product_sku2

Было
Код
$this->addvalidOrderingFieldName(array('product_name','product_sku','product_in_stock','product_price','product_weight','published'));

Стало
Код
$this->addvalidOrderingFieldName(array('product_name','product_sku','product_sku2','product_in_stock','product_price','product_weight','published'));

Далее в этом же файле чуть ниже

Было
Код
$select = ' `#__virtuemart_products`.`virtuemart_product_id`,
     `#__virtuemart_products`.`product_parent_id`,
     `product_name`,
     `product_sku`,
     `product_in_stock`,
     `product_weight`,
     `published`,
     `product_price`';

Стало
Код
$select = ' `#__virtuemart_products`.`virtuemart_product_id`,
     `#__virtuemart_products`.`product_parent_id`,
     `product_name`,
     `product_sku`,
                                `product_sku2`,
     `product_in_stock`,
     `product_weight`,
     `published`,
     `product_price`';

2. В файле admin/com_virtuemart/models/product.php так же добавляем наш product_sku2

Было

Код
var $valid_BE_search_fields = array('product_name', 'product_sku', 'product_s_desc', '`l`.`metadesc`');

Стало

Код
var $valid_BE_search_fields = array('product_name', 'product_sku', 'product_sku2', 'product_s_desc', '`l`.`metadesc`');

3. Не забываем в языковых файлах ru-RU.com_virtuemart.ini (для админки VirtueMart и самого магазина) прописать значения у меня это VIN (делал каталог запчастей)

COM_VIRTUEMART_PRODUCT_SKU2="VIN"
COM_VIRTUEMART_SEARCH_ORDER_PRODUCT_SKU2="VIN"

4. И последнее, в настройках VirtueMart в закладке "Настройка сортировки" нужно включить наше дополнительное поле для поиска и сортировки.

« Последнее редактирование: 21.01.2013, 01:35:44 от Dianis »

*

Nikoz

  • Осваиваюсь на форуме
  • ***
  • 115
  • 4
Как сделать из этого доп.поля textarea которая будет сохранятся в БД? Сейчас все ок, но вот форматирование не сохраняется..

*

foxig

  • Новичок
  • *
  • 9
  • 0
Возник вопрос как вывести дополнительное поле ввиде ссылки на материал...
Сделал его без дополнительного поля в админ панели а так что бы оно автоматически подставлялось.
Идея в том что бы в каждом товаре отображалась строка с ссылкой на информацию о производителе,
в файле com_virtuemart>producdetails>default.php(либо ваш файл шаблона),  (в моем случае после 99 строки) добавил такой код:

Код: php
<?php if ($this->product->virtuemart_manufacturer_id == 9 )
            echo '<a href="http://uomodom.ru/index.php/component/content/article/118-1">Информация о бренде 1</a>';
       elseif ($this->product->virtuemart_manufacturer_id == 17)
             echo '<a href="/index.php/component/content/article/119-2">Информация о бренде 2</a>';
       elseif ($this->product->virtuemart_manufacturer_id == 16)
            echo '<a href="/index.php/component/content/article/120-3">Информация о бренде 3</a>';
       elseif ($this->product->virtuemart_manufacturer_id == 10)
             echo '<a href="/index.php/component/content/article/121-4">Информация о бренде 4</a>';
       elseif ($this->product->virtuemart_manufacturer_id == 13)
             echo '<a href="/index.php/component/content/article/122-5">Информация о бренде 5</a>';
  ?>

Где $this->product->virtuemart_manufacturer_id == 9 - это id производителя, и получается что у всех товаров с таким производителем будет появляться нужная ссылка на материал с информацией об этом бренде. Так же условие и оператора можно изменить на что угодно, файл, ссылка, или же функция и т.п. и т.д.

Код не особо коммуникабелен, т.к. при добавлении нового производителя придется ручками дописывать код, но для быстрого решения подойдет =))
« Последнее редактирование: 06.02.2013, 02:44:57 от foxig »

*

niggatub

  • Давно я тут
  • ****
  • 205
  • -1
В карточке товара (флайпейдж) поле выводится. все отлично работает. Не выводится на странице списка категории, не пойму в чем затык. В views/category/tmpl/default.php переменную прописал, но ничего не выводит.
update.
Все, разобрался.
« Последнее редактирование: 11.02.2013, 18:33:17 от niggatub »

*

Larisa

  • Давно я тут
  • ****
  • 261
  • 14
  • je te promets...
не выводится новое поле.
Все сделала по пунктам вроде правильно, но на п.4 не получается - в файле /components/com_virtuemart/views/productdetails/tmpl/default.php пишу в нужное мне место echo <? $product->product_sku2; ?> и ничего не меняется... Я что-то напутала?
« Последнее редактирование: 05.03.2013, 16:20:33 от Larisa »

*

rafaello9

  • Осваиваюсь на форуме
  • ***
  • 141
  • 2
 А сложно будет реализовать новое поле для закачки файлов, фотографий в данном случае?  Покупатель оформляя заказ должен закачать свое фото.

*

rafaello9

  • Осваиваюсь на форуме
  • ***
  • 141
  • 2
Одно из решений - это стандартный плагин Joomla для загрузки файлов, но тогда возникает вопрос, как этот плагин впилить или в "настраиваемые поля" или в "поля, заполняемые пользователем". При создании "настраиваемых полей" есть выпадающий список, где присутствуют плагины.
« Последнее редактирование: 22.04.2013, 22:29:45 от rafaello9 »

*

leonard-251977

  • Новичок
  • *
  • 4
  • 0
как вывести дополнительное поле ввиде "выпадающий список select"  ?

*

leonard-251977

  • Новичок
  • *
  • 4
  • 0
есть у кого-то есть идея как это реализовать?

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3
есть у кого-то есть идея как это реализовать?
Попробуйте custom fields там можно с допилом организовать выпадающий список

*

dan_klassik

  • Новичок
  • *
  • 2
  • 0
Присоединяюсь к вопросу. Как сделать из этого доп.поля textarea которая будет сохранятся в БД? Сейчас все ок, но вот форматирование не сохраняется...

*

MetaSpirit

  • Живу я здесь
  • ******
  • 1379
  • 106
  • R.A.S.Lab[.org]
Можете попробовать организовать связку: ZOO+ZOOvirtue+VirtueMart, каталог организовываете на ZOO, а с помощью ZOOvirtue делаете из него магазин. Как известно в ZOO можете насоздавать множество полей, которіе нужно.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

*

Максим Пишняк

  • Живу я здесь
  • ******
  • 847
  • 35
  • Подразделение Virtuemart Украина
Могу также предложить эти пользовательские расширения:
1. VirtueMart textarea custom field от Daycounts
2. VirtueMart 2 textarea product custom field от MC Web Design
Virtuemart 2 работает практически без ошибок. Вы можете поддержать Сообщество, проголосовав за Virtuemart. Присоединяйтесь к нам на Facebook, Google Plus, Linkedin. Подпишитесь на Еженедельник о Virtuemart на Twitter

*

Tolik51

  • Новичок
  • *
  • 1
  • 0
 В компоненте CSVi обновляю таблицы и добавляю их в импорт
кто знает как связать с CSVi?
При импорте выдается сообщение: Unsupported COM_CSVI_ОшибкаЭти поля не поддерживаются CSVI VirtueMart

    product_sku2
    product_sku3
    product_sku4
Information    COM_CSVI_Внимание    Эти поля не поддерживаются.

*

Максим Пишняк

  • Живу я здесь
  • ******
  • 847
  • 35
  • Подразделение Virtuemart Украина
Tolik51, нет проблем вам помочь, но не могли бы вы создать СВОЮ тему для СВОЕГО отдельного вопроса?
Virtuemart 2 работает практически без ошибок. Вы можете поддержать Сообщество, проголосовав за Virtuemart. Присоединяйтесь к нам на Facebook, Google Plus, Linkedin. Подпишитесь на Еженедельник о Virtuemart на Twitter

*

crazycat2000

  • Захожу иногда
  • **
  • 13
  • 1
Господа и дамы, может кто то подскажет как сделать что бы сохранялось форматирование текста. т.е. если мы добавляем не  sku, а дополнительное описание например. Я так понимаю что при описанном выше подходе плагин TinyMCE, не передает в БД HTML теги. А как сделать что бы передавал?
Спасибо.

Отвечу сам себе:
в файле administrator\components\com_virtuemart\controllers\product.php

находим строчки:
$data = JRequest::get('post');

      if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');
      if(Permissions::getInstance()->check('admin')){
         $data['product_desc'] = JRequest::getVar('product_desc','','post','STRING',2);
         $data['product_s_desc'] = JRequest::getVar('product_s_desc','','post','STRING',2);
      }

и вписываем туда свое поле:

$data = JRequest::get('post');

      if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');
      if(Permissions::getInstance()->check('admin')){
         $data['dop_pole'] = JRequest::getVar('dop_pole','','post','STRING',2);
         $data['product_desc'] = JRequest::getVar('product_desc','','post','STRING',2);
         $data['product_s_desc'] = JRequest::getVar('product_s_desc','','post','STRING',2);
      }

Вся, счастье есть... :)
« Последнее редактирование: 30.11.2013, 04:02:33 от crazycat2000 »

*

Stasweb

  • Живу я здесь
  • ******
  • 1058
  • 17
Подскажите возможно вывести в списке заказов дополнительное поле "Желаемая дата доставки"


Нашел такую тему
http://beagler.ru/virtuemart/dobavlyaem-v-oformlenie-zakaza-datu-i-vremya-dostavki.html
но там под первый VirtueMart

подскажите можно осуществить это все на VirtueMart 2

*

lustoff

  • Осваиваюсь на форуме
  • ***
  • 101
  • 3
Здравствуйте!
Помогите, пожалуйста. Направьте в нужную сторону.
Использую ВМ версии 2.6.0
Делаю магазин автозапчастей. Нужно выводить каталожный номер и нужна возможность поиска по нему.
Для импорта хочу использовать CSVI Free 5.15
Сначала думал использовать под каталожный номер поле "Product SKU", но не у всех наименований он прописан (и теоретически может повторяться).
Поэтому "Product SKU" будет артикулом (1,2,3,...9999)

В карточке товара вижу поле "GTIN (EAN,UPC)". Хорошо - не нужно добавлять новое поле. Пусть будет каталожным номером.
В настройках магазина "Настройки - Настройки - Настройки сортировки" нет этого поля, чтоб можно его было активировать для поиска (и не ищет его при поиске на Фронтэнде).
Думал сделать так, как описано тут http://joomlaforum.ru/index.php/topic,230522.msg1265830.html#msg1265830 , но не нашел даже файла "invertory.php"

Подскажите, пожалуйста, куда копать

*

lustoff

  • Осваиваюсь на форуме
  • ***
  • 101
  • 3
Похоже, что нужно было выполнить только шаг 3 http://joomlaforum.ru/index.php/topic,230522.msg1206182.html#msg1206182 для версии 2.6.0
После этого поле сразу появилось в админке. По нему можно теперь искать и сортировать.

*

crazycat2000

  • Захожу иногда
  • **
  • 13
  • 1
Доброго времени суток.
Проблема с полями. На этот раз VM версия 2.0.26d  + Joomla 2.5
Добавил поля как обычно. но при попытке сохранить товар с заполненными полями ругаеться что не находит поле в таблице lvfro_virtuemart_products_ru_ru нет нужного поля. Добавил. Сохраняет теперь туда, а читает из lvfro_virtuemart_products. Удалил скопировав содержимое доп. поля из lvfro_virtuemart_products. С товарами теперь все ок, но вот незадача. При попытке менять настройки магазина, любые. Он присваивает моим полям тип char длинной 255 символов.
Вопрос один как лечить?
Спасибо.

*

strongest

  • Новичок
  • *
  • 4
  • 0
Подскажите как можно создать форму с ассоциативным массивом? Хочу создать форму с авто заполнением наименования на основе выбранной категории, подкатегории и статического названия товара.

К примеру выбрать:
категорию запчасти->вывести список статических наименований в категории и чекбоксом выбрать нужную запчасть. Запчасти для каждой категории свои должны быть заранее быть в базе.
Затем выбрать Марку авто, Модель авто. Все это скомпонировать в поле наименование.

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

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

*

lakshmi

  • Осваиваюсь на форуме
  • ***
  • 177
  • 3

В карточке товара вижу поле "GTIN (EAN,UPC)". Хорошо - не нужно добавлять новое поле. Пусть будет каталожным номером.
В настройках магазина "Настройки - Настройки - Настройки сортировки" нет этого поля, чтоб можно его было активировать для поиска (и не ищет его при поиске на Фронтэнде).
Думал сделать так, как описано тут http://joomlaforum.ru/index.php/topic,230522.msg1265830.html#msg1265830 , но не нашел даже файла "invertory.php"

Подскажите, пожалуйста, куда копать
Я недавно все процедуры повторил для VirtueMart 2.6.14 и все работает и отображаются в админке нужные поля, возможно что файл invertory.php остался у меня с прошлой версии так я ставил не сразу 2.6.14 а обновлялся до 2.6.14 с более старой. Попробуйте либо игнорировать либо добавить с последней где он присутствует версии.
Либо могу дать свой если он поможет.

*

Eholov

  • Осваиваюсь на форуме
  • ***
  • 153
  • 13
А вот у меня в VirtueMart 2.6.6  нет этого файла. Нашел его в установочном файле VirtueMart 2.0.24, в VirtueMart 2.0.26 его уже нет, закинул, изменил по инструкции. Не помогает. Подскажите, может кто знает где добавляются поля в поиск? мне надо добавить стандартное поле metakey в поиск.

Нашел решение. В файле administrator\components\com_virtuemart\helpers\shopfunctions.php в строку $filterArray = array('product_name', 'created_on' .... добавляем название нужного поля. Если поле находится в таблице virtuemart_products_ru_ru, то название поля без p. Если поле находится в таблице  virtuemart_products то только название поля. У меня это 'metakey' И все. В VirtueMart - Настройки - Доступные поля для поиска - появляется ваше поле, которое надо отметить.
« Последнее редактирование: 09.02.2016, 11:53:13 от Eholov »