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

motor1

  • Осваиваюсь на форуме
  • 38
  • 4 / 0
Иногда возникает необходимость сделать дополнительное поле для товара в VirtueMart, которое будет отображаться в админке управления товаром и выводится на сайте. Опыты проводим на VirtueMart 1.1.8 .

Первым делом что нужно сделать так это зайти в БД с помощью phpMyAdmin, выбрать вашу БД. В появившемся списке найти vm_product (если при установке задавали префикс базы данных, то соответственно ищем префиксvm_product ), и нажать кнопку Структура.

После того, как откроется структура vm_product, нужно добавить наше новое поле, назовем его product_doppole. Для добавления перемещаемся вниз страницы и выбираем из выпадающего списка "После" product_sku, и жмем Ок.
Далее необходимо заполнить основные поля:

Поле: product_doppole;

Тип: VARCHAR;

Длина/значения: 64;

По умолчанию: НЕТ;

Сравнение: utf8_general_ci;

и нажать кнопу Ок.

Создав новое поле в базе, вносим изменения в файл product.product_form.php расположенный по адресу: "administrator/com_virtuemart/html/". В данный файл нужно внести следующий код:
Код
<tr class="row1"> 
    <td width="29%" valign="top">
       <div style="text-align:right;font-weight:bold;">Дополнительное поле:</div>
    </td>
       <td width="71%" >
          <input type="text" class="inputbox" name="product_doppole" size="60" value="<?php echo $db->sf("product_doppole"); ?>" />
       </td>
</tr>
Разместить новое поле ввода было решено после краткого описания о товаре, так что код был вставлен сюда:
Код
<tr class="row1"><td colspan="2">&nbsp;</td></tr>
 <tr class="row1">
 <td width="29%" valign="top"><div style="text-align:right;font-weight:bold;">
 <?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_S_DESC')?>:</div>
 </td>
 <td width="71%"  valign="top">
 <textarea class="inputbox" name="product_s_desc" id="short_desc" cols="35" rows="6" ><?php echo $db->sf("product_s_desc"); ?></textarea>
 </td>
 </tr>
ВСТАВЛЯТЬ КОД СЮДА
</table>
 </td>
 </tr>
</table>
Особой роли не играет где разместить новое поле ввода, так что выбор за вами, только главное вставить в правильное место. Сохраняем документ, если мы указываем название поля на кириллице, то документ сохраняем в кодировке UTF-8.

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

Для сохранения данных введенных в это поле, вносим изменения в файл ps_product.php по адресу: "administrator/components/com_virtuemart/classes/", а именно добавляем строчку: 'product_doppole' => vmGet($d,'product_doppole'), .

Добавить её нужно в двух местах (используйте поиск по значению "// Insert into DB") т.к. код одинаковый привожу только один участок кода. Я добавил строку после строки 'product_sku' => vmGet($d,'product_sku'), ,
Код
// Insert into DB
 $fields = array ( 'vendor_id' => $vendor_id,
 'product_parent_id' => vmRequest::getInt('product_parent_id'),
 'product_sku' => vmGet($d,'product_sku'),<strong>
ВСТАВЛЯТЬ СТРОКУ СЮДА
</strong>'product_name' => vmGet($d,'product_name'),
 'product_desc' => vmRequest::getVar('product_desc', '', 'default', '', VMREQUEST_ALLOWHTML),
Сохраняем файл, заходим в админку и тестируем сохранение и загрузку данных нашего поля.
После проверки работоспособности внесенных изменений, редактируем файл shop_browse_queries.php, по адресу: "administrator/com_virtuemart/html/". В него добавляем `product_doppole` , после `product_sku`. Получившийся код должен выглядеть так:
Код
?
1
2
// These are the names of all fields we fetch data from
$fieldnames = "`#__{vm}_product`.`product_id`, `product_name`, `products_per_row`, `category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`, `product_full_image`, `product_thumb_image`, `product_s_desc`, `product_parent_id`, `product_publish`, `product_in_stock`, `product_sku`, `product_doppole`, `product_url`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_available_date`, `product_availability`, `#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`";
Сохраняем.

Теперь изменяем файл shop.browse.php, по адресу: "administrator/com_virtuemart/html/". Добавляем строку $products[$i]['product_doppole'] = $db_browse->f("product_doppole"); , добавить её нужно сюда:
Код
// Unset these for the next product
 unset($full_image_width);
 unset($full_image_height);
$products[$i]['product_name'] = shopMakeHtmlSafe( $product_name );
 $products[$i]['product_s_desc'] = $product_s_desc;
 $products[$i]['product_details'] = $product_details;
 $products[$i]['product_rating'] = $product_rating;
 $products[$i]['product_price'] = $product_price;
 $products[$i]['product_price_raw'] = $product_price_raw;
 $products[$i]['product_sku'] = $db_browse->f("product_sku");
 ДОБАВЛЯЕМ СТРОКУ СЮДА
 $products[$i]['product_weight'] = $db_browse->f("product_weight");
После сохранения, в шаблоне нужно вывести наше новое поле, так что редактируем нужные вам файлы в папке по адресу: "components/com_virtuemart/themes/default".

Я добавил отображение нового поля в карточку товара, так что отредактировал flypage.tpl.php по адресу: "components/com_virtuemart/themes/default/templates/product_details", добавив в него строку <?php echo $product_doppole ?> в нужной мне позиции.
« Последнее редактирование: 26.10.2011, 17:50:33 от smart »
*

saynez

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Спасибо большое за мануал!
Не могли вы подсказать у меня версия 1.1.6
В шаге
Цитировать
После проверки работоспособности внесенных изменений, редактируем файл shop_browse_queries.php, по адресу: "administrator/com_virtuemart/html/". В него добавляем `product_doppole` , после `product_sku`. Получившийся код должен выглядеть так:
После того как я вставляю `product_doppole` в любое местое у меня пропадают все товары в категории. Код в версии 1.1.6 выглядит так:
Код
// These are the names of all fields we fetch data from
$fieldnames = "p.product_id, p.product_name, `products_per_row`, `category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`, p.product_full_image, p.product_thumb_image, p.product_s_desc, p.product_parent_id, p.product_publish, p.product_in_stock, p.product_sku, p.product_url, p.product_weight, p.product_weight_uom, p.product_length, p.product_width, p.product_height, p.product_lwh_uom, p.product_available_date, p.product_availability, p.mdate, p.cdate";
*

Fat

  • Захожу иногда
  • 479
  • 25 / 0
  • Разрабатываю компоненты для Joomla
а в таблице jos_vm_product присутствует такое поле `product_doppole`?
*

saynez

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Во всем оказались виноваты мои кривые руки. Мануал замечательно работает и в версии 1.1.6
Спасибо Fat за подсказку. Я забыл сохранить поле product_doppole в базе MYSQL.
« Последнее редактирование: 04.12.2011, 18:59:22 от saynez »
*

kry

  • Захожу иногда
  • 124
  • 3 / 0
Создал дополнительное поле для товара только в VirtueMart 1.1.9.
Теперь стоит задача вывести значение из этого поля в таблице Содержание заказа на странице Информация о заказе вместо Артикула...да, ладно, теперь хоть просто только вывести  :(
Кто решил у себя или поможет?

Решено
http://joomlaforum.ru/index.php/topic,194532.new.html
« Последнее редактирование: 22.01.2012, 22:03:51 от kry »
*

Master of Magic

  • Осваиваюсь на форуме
  • 39
  • 2 / 0
И как сделать что бы поиск это поле видел?
*

surzh

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
а как добавить это doppole в список при выборе дочерних товаров. т.е. изменить порядок и содержание
*

artrush

  • Захожу иногда
  • 99
  • 0 / 0
А как добавить chekbox для данного поля?
Хотелось бы выбирать его не для всех товаров!
*

kry

  • Захожу иногда
  • 124
  • 3 / 0
А как добавить chekbox для данного поля?
Хотелось бы выбирать его не для всех товаров!
Просто оставьте его пустым в нужном товаре и оно отображаться не будет
*

artrush

  • Захожу иногда
  • 99
  • 0 / 0
Просто оставьте его пустым в нужном товаре и оно отображаться не будет
Но при этом может отображаться CSS данного поля!
Типа background или жестко проставленный height и т.п.!
*

diggs

  • Захожу иногда
  • 60
  • 4 / 0
motor1 немного кривовато реализовано, в плане ты не в языковых файлах прописываешь название нового поля, а непосредственно в теле самого php файла, который ты правил. Но по-любому спасибо за мануал, он рабочий, даже для 1.1.9.
Если нужно, отпиши в личку, я скину свою схему реализации с правкой языковых файлов. В добавок, могу поделиться как я добавил новое поле в стандартную сортировку.
*

nightbodom

  • Захожу иногда
  • 97
  • 1 / 1
А кто нибудь знает как создать дополнительное поле в карточке товара textarea product_desc (ну типа под названием product_full_desc).
Тоесть:
product_desc - описание товара
product_full_desc - полное описание товара
так как <hr id="system-readmore" /> не пашет в VirtueMart. Хотя с ним было бы намного проще
*

artrush

  • Захожу иногда
  • 99
  • 0 / 0
А кто нибудь знает как создать дополнительное поле в карточке товара textarea product_desc (ну типа под названием product_full_desc).
Тоесть:
product_desc - описание товара
product_full_desc - полное описание товара
так как <hr id="system-readmore" /> не пашет в VirtueMart. Хотя с ним было бы намного проще
можно добавить в карточку уже имеющееся поле "краткое описание"
*

nightbodom

  • Захожу иногда
  • 97
  • 1 / 1
можно добавить в карточку уже имеющееся поле "краткое описание"
Но там прийдется в каждой строке ставить <br>, а для каждого товара это гемор
*

Virusss1985

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Сделал все как сказано выше но у меня почему-то  не сохраняет то что добавил в поле через админку и не выводит на страницу товара. Где что нетак сделал.  'product_doppole' => vmGet($d,'product_doppole'), - добавлял дважды. VM 1.1.9
*

Virusss1985

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Все разобрался, когда создавал новое поле в SQL, перед названием по невнимательности поставил пробел. Автору БОЛЬШОЕ СПАСИБО
*

motor1

  • Осваиваюсь на форуме
  • 38
  • 4 / 0
Все разобрался, когда создавал новое поле в SQL, перед названием по невнимательности поставил пробел. Автору БОЛЬШОЕ СПАСИБО
Внимание это главное а спасибо можно в виде +)))
*

Tu-144

  • Осваиваюсь на форуме
  • 18
  • 4 / 0
Реализовал через <option> но тееперь вопрос, как передать значение SELECTED на нужный вариант?
*

newjey

  • Захожу иногда
  • 405
  • 2 / 0
Добрый день.
Подскажите, сделал всё как в первом посте,всё ок,всё работает, но, я хочу вывести видео с ютуба с помощью плагина AllVideos, для этого сделал доп поле Видео куда вставляю код {youtube}28oOLwNnvYM{/youtube} сохраняю и в карточке товара выводится этот код,а если просто в текст добавлять то видео выводится нормально. В чём может быть проблема? Может надо как-то плагин подключать к этому хаку?
Спасибо.
*

nightbodom

  • Захожу иногда
  • 97
  • 1 / 1
Я обычно прописывал в файле flypage скрипт с ютуба а через админку вставлял лишь ссылку, и тогда все работало. Твой вариант ({youtube}28oOLwNnvYM{/youtube}) будет работать только в материалах и описании товара. можно попробовать создать дубликат поля Описание, чтобы присутствовали кнопки c WORDa? тогда будет работать этот код. а так другие поля не принимают тэги видео
*

newjey

  • Захожу иногда
  • 405
  • 2 / 0
Я обычно прописывал в файле flypage скрипт с ютуба а через админку вставлял лишь ссылку, и тогда все работало. Твой вариант ({youtube}28oOLwNnvYM{/youtube}) будет работать только в материалах и описании товара. можно попробовать создать дубликат поля Описание, чтобы присутствовали кнопки c WORDa? тогда будет работать этот код. а так другие поля не принимают тэги видео
Уже всё работает, прописал как
Код
<?php echo JHtml::_('content.prepare', $product_video)?>
надо было подключить плагин и всё)
*

Dimir

  • Захожу иногда
  • 426
  • 13 / 1
скажите почему не сохраняет то что я пишу в новом поле,поле все создал,изменения только через базу сохраняются,virtuemart 1.4
-==Dimir==-
*

motor1

  • Осваиваюсь на форуме
  • 38
  • 4 / 0
скажите почему не сохраняет то что я пишу в новом поле,поле все создал,изменения только через базу сохраняются,virtuemart 1.4
Теперь, если зайти в админку и выбрать товар, то мы увидим наше добавленное поле.

Для сохранения данных введенных в это поле, вносим изменения в файл ps_product.php по адресу: "administrator/components/com_virtuemart/classes/", а именно добавляем строчку: 'product_doppole' => vmGet($d,'product_doppole'), .

Добавить её нужно в двух местах (используйте поиск по значению "// Insert into DB") т.к. код одинаковый привожу только один участок кода. Я добавил строку после строки 'product_sku' => vmGet($d,'product_sku'), ,
Код
// Insert into DB
 $fields = array ( 'vendor_id' => $vendor_id,
 'product_parent_id' => vmRequest::getInt('product_parent_id'),
 'product_sku' => vmGet($d,'product_sku'),<strong>
ВСТАВЛЯТЬ СТРОКУ СЮДА
</strong>'product_name' => vmGet($d,'product_name'),
 'product_desc' => vmRequest::getVar('product_desc', '', 'default', '', VMREQUEST_ALLOWHTML),
Внимательно проверь все буквы и код
*

Dimir

  • Захожу иногда
  • 426
  • 13 / 1
Теперь, если зайти в админку и выбрать товар, то мы увидим наше добавленное поле.

Для сохранения данных введенных в это поле, вносим изменения в файл ps_product.php по адресу: "administrator/components/com_virtuemart/classes/", а именно добавляем строчку: 'product_doppole' => vmGet($d,'product_doppole'), .

Добавить её нужно в двух местах (используйте поиск по значению "// Insert into DB") т.к. код одинаковый привожу только один участок кода. Я добавил строку после строки 'product_sku' => vmGet($d,'product_sku'), ,
Код
// Insert into DB
 $fields = array ( 'vendor_id' => $vendor_id,
 'product_parent_id' => vmRequest::getInt('product_parent_id'),
 'product_sku' => vmGet($d,'product_sku'),<strong>
ВСТАВЛЯТЬ СТРОКУ СЮДА
</strong>'product_name' => vmGet($d,'product_name'),
 'product_desc' => vmRequest::getVar('product_desc', '', 'default', '', VMREQUEST_ALLOWHTML),
Внимательно проверь все буквы и код
плюсом тебя отблагодорил!Спасибо
-==Dimir==-
*

Dimir

  • Захожу иногда
  • 426
  • 13 / 1
а как реализовать вывод всем товаром Слова нет видео если видео не внесено в товар в этой строке?
-==Dimir==-
*

Dimir

  • Захожу иногда
  • 426
  • 13 / 1
Сделал табы такого плана Описание,Отзывы,Видео(вывел через новое поле плагином all videos),Все фото товара,так вот если нет видео то последний таб уезжает вниз,если вписываю что для данного товара нет видео то все встает на место
-==Dimir==-
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
а как реализовать вывод всем товаром Слова нет видео если видео не внесено в товар в этой строке?
В шаблоне, в месте вывода этой строки напиши условие на php - если поле не пустое - выводить "видео", иначе - выводить "нет видео".
*

Dimir

  • Захожу иногда
  • 426
  • 13 / 1
В шаблоне, в месте вывода этой строки напиши условие на php - если поле не пустое - выводить "видео", иначе - выводить "нет видео".
в шаблоне вывода товара?код примерноможно?если не трудно
<?php echo JHtml::_('content.prepare', $product_video)?>  как правильно написать вот для этой строки условие
« Последнее редактирование: 24.09.2012, 23:00:37 от Dimir »
-==Dimir==-
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
в шаблоне вывода товара?код примерноможно?если не трудно
<?php echo JHtml::_('content.prepare', $product_video)?>  как правильно написать вот для этой строки условие
Как-то так. Только скорее всего вместо нулю нужно будет поставить что-то другое. Это надо посмотреть, что стоит в этом поле в БД, когда оно не заполнено.
Код
<?php 
if($product_video == 0) {
echo 'нет видео';
} else {
echo JHtml::_('content.prepare', $product_video);
?>

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart - SMS уведомления о сделаном заказе.

Автор bork

Ответов: 42
Просмотров: 21859
Последний ответ 26.07.2021, 22:11:25
от Oleg91
Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 9890
Последний ответ 14.01.2021, 00:09:53
от gartes
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 51738
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 24991
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Хаки для убыстрения VirtueMart (уменьшение запросов и т.п.)

Автор yadrinez

Ответов: 197
Просмотров: 77961
Последний ответ 05.02.2016, 21:53:34
от flyingspook