VirtueMart - как добавить поле к товару
Другими словами, как добавить всем товарам еще один атрибут, чтоб потом иметь возможность значение в карточке товара, и выводить его на flypage - странице товара. VirtueMart 1.0.5 (Joomla Paranoia MCE! 1.0.8.2, но, мне кажется, это некритично:)
- Сначала надо добавить поле в Конфигурация импорта/экспорта CSV:
Админка/Товары/Использовать загрузку CSV/Конфигурация (Админка/ Products/Use CSV upload/Configuration). Запомните имя, которое ему дали - например, у меня это regcert - от “регистрационный сертификат”. Выбирая имя, постарайтесь, чтобы оно не совпало со всей той кучей переменных, которые там уже существует ;) - добавляем руцями поле в базу, размерность по вкусу:
alter table jos_vm_product add regcert varchar(55) default NULL; - добавляем поле в карточку товара:
administrator/components/com_virtuemart/html/product.product_form.php
Где именно? по вкусу между </tr> и <tr> ;)<tr><td style="text-align:right;font-weight:bold;"> Рег. удостоверение №:</td> <td valign="top" align="left" width="69%"> <input type="text" name="regcert” class=”inputbox” size=”32″ value=”<?php echo $db->sf("regcert"); ?>”/> </td></tr> - Чтобы поле выводилось на странице товара: administrator/components/com_virtuemart/html/templates/product_details/flypage.php добавляем в нужном месте {regcert}
- Чтобы ему присваивалось значение:
administrator/components/com_virtuemart/html/shop.product_details.php
где-то начиная со строки 385 приводим к виду$template = str_replace( “{product_type}”, $product_type, $template ); // Changed Product Type $template = str_replace( “{product_packaging}”, $product_packaging, $template ); // Changed Packaging $template = str_replace( “{regcert}”, $regcert, $template ); // Регистрационное удостоверение №.. и присвоить значение $regcert, в этом же файле, чуть выше:
$regcert =$db_product->f(’regcert‘);
В этом виде магазин готов принимать значение этого поля через CSV, показывает его в админке и на странице.
Проверить так:
update jos_vm_product set regcert=”sdfhvdjvbdvh dhvb sd” where product_sku=”ваш_артикул“;
Осталось только, чтоб значение этого поля, поправленое в админке VirtueMart, сохранялось. Еще не успел расколупать, сейчас займусь :)
June 23rd, 2006 at 12:48
Жаль что Вы не продолжили тему!
(Включена подписка на комментарии)(Осталось только, чтоб значение этого поля, поправленое в админке VirtueMart, сохранялось. Еще не успел расколупать, сейчас займусь :))
Было бы интересно написать такой патч, или описать в статье как добавить поле к товару которое в свою очередь является атрибутом с ограничением допустимых значений (например покупатель выбирает от 20 до 40% чего либо) если он ошибается набирает 10 процентов то после перехода получает сообщение, что он неправильно ввел значение атрибута!!!
June 23rd, 2006 at 14:38
к сожалению, пока не добрался. Для меня сейчас гораздо важнее интеграция этого хозяйства и 1С.
Если про фиксированный выбор - на скорую руку можно заменить через спиок атрибутов, например
Концентрация,20%[+1],25%[+1],30%,35%[-1],40%[-1];
Покупателю и придется что-то выбрать, и не даст выбрать “не то”.
July 18th, 2006 at 11:02
Закончил интеграцию 1С и VirtueMart/Joomla!
http://putnik.net.ua/index.php/comps/web/2006/07/18/virtuemart-1c-integratsiya/
July 23rd, 2006 at 22:21
Уважаемый Путник! Для того, чтобы значение поля, которое мы добавили и поправленое в админке VirtueMart, сохранялось, в product.product_form.php его нужно вставлять вот так
:
sp(”my_depth”); ?>” size=”15″ maxlength=”15″ />
(Включена подписка на комментарии)July 24th, 2006 at 7:00
2Дмитрий: к сожалению, коммент получился покоцаным, скорее всего из-за тегов. Было бы здорово или запостить его еще раз с учетом этого, или через вот эту форму, а я выложу сюда.
Обновление 30/08: К сожалению, Дмитрий ничего не прислал второй раз… :(
August 30th, 2006 at 1:23
Уважаемые, а можно ли сделать так чтоб по тем полям что добавили можно было сделать сортровку уже на сайте , тоесть например есть несколько производителей (Шины Michlien и шины Contintntal) выбираешь напимер Contintntal, далее идет размерность и сезонность которые тоже выбирает конечный пользователь
(Включена подписка на комментарии)в общем моно сделать мнесколько выпадающих менюшек
1- производитель - (предложен список производителей) открываем выбираем
2 - сезонность (предложены зима лето например)
2- размерность - (тоже предложено несколько параметров)
Извините что довольно сумбурно написано - пример того что хотелось бы сделать на сайте предложен вот тут http://www.prokoloff.net/rus/select_t/
August 30th, 2006 at 8:18
Именно такой формы не будет точно - только если сами допишете, сильно узкоспециализированное решение, имхо.
Я бы сначала сделал так, как тут (потому, что это у меня уже сделано:) )- это фильтр по производителю, а потом копать в сторону shop.browse.php и VM_BROWSE_ORDERBY_FIELDS.
Upd: Или стандартная возможностьфильтра по производителю - имхо вполне подходит…
August 30th, 2006 at 8:59
Татьяна, Вам уже объясняли на форуме, что такого в Virtuemat не сделаешь. Правильно говорит товарит - очень узкое специализированное решение.
(Включена подписка на комментарии)Какие же порой люди упрямые бывают :)
August 30th, 2006 at 11:44
Нууууу, если посильнее упереться, то можно и сделать…. но это должен быть очень хороший стимул :)
Попробуйте заказать кому-нибудь.
зы: не возьмусь, т.к. быстро не получится, а на долго - времени нет, а копать глубоко надо :(
August 30th, 2006 at 12:39
Мой программист мог бы это сделать и в разумные сроки. Такой поиск будет стоить 2000-2500 рублей (около 80-100$)
(Включена подписка на комментарии)August 31st, 2006 at 12:54
Упертые - конечно - а как вы думаете прогресс движется? если топтаться на месте то ясен пень ничего не сделаешь, а то что обрываю все форумы по этому вопросу - ну пристите - 1 объяснил что нельзя , 2-ой может и сможет помочь ;)
Дмитрий - дайте свои контакты - спишeмся
(Включена подписка на комментарии)напишите мне письмо на ящик alex_sal [гав] list.ru - пообщаемся или в асю 305655755
September 1st, 2006 at 7:51
Мне комисионные плз!!!!!!! За сводничество ;)
шутка :)
September 1st, 2006 at 9:52
в любом случае спасибо за сводничество ;)
(Включена подписка на комментарии)September 1st, 2006 at 23:40
Все - решение найдено господа, осталось только причесать!!!
Для того чтобы вывести дополнительные параметры в VirtueMart нужно найти файл mod_virtuemart.php в папке modules
найти стороку с таким содержимым:
/* Get module parameters */….
строка: $show_product_parameter_search = $params->get( ’show_product_parameter_search’, ‘no’ );
по умолчанию …$params->get( ’show_product_parameter_search’, ‘no’ ) …
Заменить $params->get( ’show_product_parameter_search’, ‘YES’ )
тем самым разрешается поиск по дополнительным параметрам типов товаров.
Кто сказал что такого нельзя сделать? ;)
(Включена подписка на комментарии)September 2nd, 2006 at 8:39
Очень интересно, посмотри, что у тебя получится :)
Если смотреть тот сайт, который Вы указали, то списки можно сделать, если постараться. Мне вот интересно, как Вы сделаете возможность выбор по сезонам. Втом виде, в котором это реализовано на сайте http://www.prokoloff.net/rus/select_t/ думаю стандартными средства не выйдет. Конечно, если хорошо знаете php и есть опыт программирования под joomla, nj будто намного проще
(Включена подписка на комментарии)September 2nd, 2006 at 10:08
по сезонам выпадающая менюшка получилась и там можно выбрать , час причешем все - покажу что вышло
(Включена подписка на комментарии)September 9th, 2006 at 11:49
2) добавляем руцями поле в базу, размерность по вкусу:
alter table jos_vm_product add regcert varchar(55) default NULL;
а в какую базу добавлять, можно пдробней расписать, и будет ли это работать , если не прописывает, а то я не вписал, т.к . не знаю куда добавлять, и у меня не работает. Заранее спасибо.
(Включена подписка на комментарии)January 15th, 2007 at 20:15
Путник, а подскажите пожалуйста, как быть в следующей ситуации?
Я варю каши на разных продуктах: воде и молоке. Так вот вопрос: можно ли сделать, чтобы на странице просмотра моих товаров выводилось 2 цены: каша на молоке 10р., каша на воде 5р.?
Можно конечно через аттрибуты товара сделать, но как то неудобно получается - человек должен зайти в продукт чтобы увидеть, сколько будет стоить товар в различных исполнениях.
Заранее благодарю за ответ
(Включена подписка на комментарии)January 16th, 2007 at 9:46
2Татьяна: и где обещаные результаты? ;)
2Orphis: база - одна. Вашего сайта. Пожалуйста, сначала поймите, как выполнять постейшие sql-запросы (например, select * from jos_vm_product). после этого будет легче :)
2Андрей: А почему неудобно? а если у Вас разная фасовка - автоматически цена должна быть разной, ведь так?
Если же хочется, чтоб виделись все цены сразу - можно на странице категории каждому товару подцепить еще соответствующую табличку, только нагормождение большое будет…
January 19th, 2007 at 18:28
Путник, спасибо за ответ! вот как раз хотел спросить о технической стороне подцепления таблички.
(Включена подписка на комментарии)наткнулся на следующую проблему. В csv файл вбил данные по длине, высоте и ширине. теперь в shop.browse.php добавил:
$product_cell = str_replace( “{product_length}”, $db_browse->f(”product_length”), $product_cell );
а в темплейте соответственно добавил строчку {product_length}. Только вот результата нет - и не ругается, но и на страничке пустое место выводит. Не подскажите, в чем может быть проблема?
January 19th, 2007 at 19:36
Все, отыскал.. надо было поправить еще shop_browse_queries.php
(Включена подписка на комментарии)Теперь я при размерах.. осталось только разобраться, как сделать чтобы не выводило такого большого количества нулей: 252.0000мм
January 21st, 2007 at 16:22
2Андрей: С решением!:)
самое первое, что пришло в голову - может, printf?
January 27th, 2007 at 23:00
сделал так: зашел в mySQL и сменил формат для нужных ячеек с 10.4 на 10.0. Помогло! сенк за ответ.
(Включена подписка на комментарии)May 3rd, 2007 at 4:52
Подскажите как заставить принимать значения введенные в админке…
с советом Дмитрия чет не разобрался :(
[quote]
sp(”my_depth”); ?>” size=”15″ maxlength=”15″ />
[/quote]
вместо sf sp вписать надо или как? или фокус в my_depth?
наставте на путь истинный ато уже не в моготу…
(Включена подписка на комментарии)May 3rd, 2007 at 15:55
2TyT: сорри, код невозможно вставить в комменты таким образом.
Именно поэтому не работает код Дмитрия, если его вставить в точности так, как он есть тут в комментах.
зы: Если бы Дмитрий прислал его мне через Feedback - контакты, то я б исправил, чесслово!
May 3rd, 2007 at 18:29
Такс… разобрался :)
подправил еще дополнительно по аналогии с родными полями (product_height например)
shop_browse_queries.php
ps_csv.php
ps_product.php
задал в языковых фалах переменные с названием новых пунктов
и изменение товара из админки заработало…
остался вопрос :(
я во flypage.php вывожу значение полей используя языковые файлы
{vm_lang:_НАЗВАНИЕ_МОЕГО_ПОЛЯ} : {значение_моего_поля}
но если значение поля не заданно, выводится только _НАЗВАНИЕ_МОЕГО_ПОЛЯ:
какое условие надо создать (как его оформить) чтобы при пустом поле _НАЗВАНИЕ_МОЕГО_ПОЛЯ не выводилось
типа:
{vm_lang:_НАЗВАНИЕ_МОЕГО_ПОЛЯ} {значение_моего_поля}
(Включена подписка на комментарии)May 4th, 2007 at 14:59
Дополнение от ТуТ, за что ему респект:
Чтобы поле выводилось только при наличии значения:
Если по вышеописанному примеру то так:
Вместо
писать:
if ( $db_product->f(’regcert’) ) { $regcert = “<br >Рег. удостоверение №: ”.$db_product->f(’regcert’); } else {$regcert = “”;}и потом во флайпейдже вставлять только заглушку {regcert}
при желании забиваем в языковые файлы переменную типа
_REGCERT = “Рег. удостоверение №:”;
тогда во shop.product_details.php писать:
if ( $db_product->f(’regcert’) ) { $regcert = “<br >”.$VM_LANG->_REGCERT.” ”.$db_product->f(’regcert’); } else {$regcert = “”;}June 17th, 2007 at 9:06
Спасибо за решение проблемы с “Чтобы поле выводилось только при наличии значения”. Вот только как сделать аналогично для shop.browse.php, т.е. для страницы, где отображается сразу несколько товаров.
Заранее благодарю за ответ
June 17th, 2007 at 12:11
аналогично, только гайки крутить в той обработке, которая непосредственно товар выводит.
Если ничего не путаю, то это действительно shop.browse.php,
у меня на 338 строке, начинается с
/*** Start printing out all products (in that category) ***/ while ($db_browse->next_record()) {June 17th, 2007 at 18:58
Вроде всё легко, но
// if ($db_browse->f(’izdatelstvo’) ) {
// $izdatelstvo= $db_browse->f(’izdatelstvo’).”, “;
// } else {$izdatelstvo= “”;}
либо
// $izdatelstvo= $dbр->f(’izdatelstvo’).”, “;
не работает. Ещё несколько вариаций пришло на ум - тоже нет эффекта. Вроде вообще не тут надо менять.
Мож shop_browse_queries.php надо поцокать? Там же всё внесённые переменные обитают.
June 19th, 2007 at 15:21
db_browse->f или dbр->f - не помню. В любом случае сначала выяснить, а потом заворачивать в иф :)
не работает - а что именно получается? первый вариант мне кажется вполне нормальным.
то, что строки закомментированы - это, надеюсь, только в блоге, а на сайте все ок?
еще момент - чтотименно не должно показываться - только значение? так оно и так если пустое - не покажется. А если чтоб, например, рамочка вокруг него тоже не появлялась - так и надо рамочку засунуть в if.
shop_browse_queries.php - он формирует запрос, а обрабатывается рез-т уже в shop.browse. Если бы надо было какой-то хитрый фильттр ставить - тогда, может, еще есть смысл, и то под вопросом.
June 19th, 2007 at 18:23
Понял, где ошибка:
была строчка
//$product_cell = str_replace( “{izdatelstvo}”, $db_browse->f(”izdatelstvo”), $product_cell );
, а надо
//$product_cell = str_replace( “{izdatelstvo}”, $izdatelstvo , $product_cell );
Всё работает.
November 5th, 2007 at 23:11
Путем “соединения” этой статьи и этого поста на форуме (с изменениями) http://forum.virtuemart.ru/index.php?topic=815.0 , и правки еще одного файла - prodict.product_display я таки заставил добавиться еще два поля : )) и заставил все работать в админке
Будет время, отпишу все подробно
(Включена подписка на комментарии)November 6th, 2007 at 4:31
2 Евгений: напишите, пожалуйста. Мне будет совсем не жалко поставить ссылку на Ваш будущий(?) сайт :)
June 25th, 2008 at 12:09
Напишите пожалуйста как сделать так, чтобы запись из админки записывалась!
(Включена подписка на комментарии)Я всё сделал, всё работает, только вот записи в админке нет….
Спасибо!
June 30th, 2008 at 18:38
а как вывести это новое поле при просмотре списка товаров в browse_listtable.tpl.php?
(Включена подписка на комментарии)July 2nd, 2008 at 8:19
Как все таки сделать чтоб изменения нового поля из админки сохранялось?
(Включена подписка на комментарии)July 3rd, 2008 at 10:12
Михаил - не делал я этого. У меня все такие поля обновляются из 1С, и централизованно правятся там.
July 3rd, 2008 at 11:42
Пока ждал ответа знающих нашел сам как.
правда под версию VM 1.1
Суть такая, проделов все выше описанное идем в /administrator/components/com_virtuemart/classes/ps_product.php
там находим функциии add() и update().
в них есть вот такое:
$fields = array ( ‘vendor_id’ => $vendor_id,
вот в эти массиивы по аналогии и дописываем новое поле.
(Включена подписка на комментарии)March 5th, 2009 at 17:15
Доброго времени суток! После прочтения недюженного количества форумов я так и не нашел ответа на свой вопрос. Очень надеюсь, что здесь мне подскажут.
Задача состоит в следующем:
1. Добавить новые поля в административной части при добавлении нового товара. Т.е. помимо стандартных полей типа “Артикул”, “Наименование”, “Краткое описание”, “Полное описание”, надо добавить еще поля “Год выпуска”, “Качество” и др.
2. Сделать отображение товара примерно как на сайте numizmat.net.
Очень прошу помочь. Подскажите хотя бы где копать. Я еще не очень хорошо знаком со структурой директорий в ВиртуМарте!
Заранее благодарю Вас.
–
(Включена подписка на комментарии)С уважением, Валуев Максим!
March 7th, 2009 at 13:19
2 Maxim: пожалуйста, перечитйте все, что написано выше. Если Вы это все попробуете, и не поможет - напишите, что именно Вы делали, и на чем остановились.
February 7th, 2010 at 3:54
Я хочу поменять два поля местами - поле артикул с полем название. Перерыл код, изменял, но пока так ничего и не получилось… везде старые мануалы, а жаль… неужели в базу придется лезть?
(Включена подписка на комментарии)February 7th, 2010 at 20:17
WebSerfer: где поменять?
February 7th, 2010 at 22:41
Ну, в таблице, где выводиться список товаров. В корзине я изменил вывод, а вот в основном меню пока не получается…
(Включена подписка на комментарии)February 8th, 2010 at 9:39
Зашел написать слова благодарности. Спасибо всем, кто участвовал в разрешении данной проблемы. Благодаря вашим постам у меня все получилось. ВУыглядит это примерно так vipcoins.net!!! Если кому надо, могу поделиться исходником! ))
(Включена подписка на комментарии)