LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 21:37:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: 1 [2]  Все   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Добавляем новое поле в спецификацию товара  (Прочитано 21560 раз)
nekrassss и 3 Гостей смотрят эту тему.
PbICb
Joostina
*****

Репутация: +38/-0
Offline Offline

Пол: Женский
Сообщений: 100


Мяфф...)


« : 25.06.2008, 20:35:32 »

Так как не увидела "вменяемых" инструкций на данную тему, а вопросы продолжают поступать (на форуме, в аську, почту и т.п.) - решила написать свою "шпаргалку". Может быть, кому-нибудь пригодится.

1. Открываем phpMyAdmin, щелкаем по имени талички #__vm_product. Под таблицей с перечнем полей есть область для добавления нового поля
(Рис.1).
Создаем новое поле типа varchar с именем product_sku2 (Рис.2). Новое поле появилось в списке полей данной таблицы (Рис.3).

2. Переходим к редактированию файла administrator/com_virtuemart/html/product.product_form.php. Этот файл содержит форму добавления/редактирования товара. Сюда нам необходимо добавить новое поле ввода для ввода значения "product_sku2".
Находим строчку, где расположено поле для ввода артикула (product_sku). Вот такой участок кода:
   <tr>
      <td width="21%" ><div style="text-align:right;font-weight:bold;"><?php echo $VM_LANG->_PHPSHOP_PRODUCT_FORM_SKU ?>:</div>
      </td>
      <td width="79%" height="2">
        <input type="text" class="inputbox"  name="product_sku" value="<?php echo shopMakeHtmlSafe( $db->sf("product_sku") ); ?>" size="32" maxlength="64" />
      </td>
    </tr>


Копируем код и вставляем ниже. Заменяем текстовую переменную на "Еще один артикул" (например), а имя текстового поля на product_sku2. Должно получиться примерно так:

  <tr>
      <td width="21%" ><div style="text-align:right;font-weight:bold;"><?php echo "Еще один артикул" ?>:</div>
      </td>
      <td width="79%" height="2">
        <input type="text" class="inputbox"  name="product_sku2" value="<?php echo shopMakeHtmlSafe( $db->sf("product_sku2") ); ?>" size="32" maxlength="64" />
      </td>
    </tr>


Сохраняем изменения. Открываем в админке VirueMart форму добавления товара. Любуемся на результат. (Рис.4).

3. Открываем файл administrator/com_virtuemart/clases/ps_product.php
Здесь нас интересуют две функции. Первая - добавление нового товара.
Ищем участок кода, содержащий "function add". Недалеко от начала функции, после следующего участка кода:

Код:
$timestamp = time();
$db = new ps_DB;

if (empty($d["product_publish"])) {
$d["product_publish"] = "N";
}

добавляем

$product_sku2=$_POST["product_sku2"];

Теперь пишем значение в базу. Чуть ниже места, где мы добавили предыдущую строчку начинается большой блок вставки данных в таблицу. Добавляем product_sku2 сразу после product_sku:

   
Код:
$q  = "INSERT INTO #__{vm}_product (vendor_id,product_parent_id,product_sku,product_sku2";
$q .= "product_name,product_desc,product_s_desc,";
..............................................
..............................................
$q .= "VALUES ('";
$q .= $d['vendor_id'] . "','" . $d["product_parent_id"] . "','";
$q .= $d["product_sku"] . "','" . $d["product_name"] . "','" . $d["product_name"] . "','";   
..............................................
..............................................

Далее, переходим к функции, отвечающей за изменение данных о товарах:    function update.
Также добавлем $product_sku2=$_POST["product_sku2"];
и ниже, где происходит обращение к БД:

Код:
$q  = "UPDATE #__{vm}_product SET ";
$q .= "product_sku='" . $d["product_sku"] . "',";
$q .= "product_sku2='" . $d["product_sku2"] . "',";
$q .= "vendor_id='" . $d["vendor_id"] . "',";
............................................................

4. Теперь попросим VirtueMart включить данные из нашего новорожденного поля в выборку при обращении к странице просмотра товаров в категории или при просмотре карточки товара. Для этого открываем файл  administrator/com_virtuemart/html/shop_browse_queries.php.
Находим в перечсилении полей для выборки (то, что записано в $fieldnames = "", в самом начале файла) `product_sku` и после запятой добавляем `product_sku2`.

5. Сейчас самое время создать "заглушку" для шаблона категории. Для этого открываем файл administrator/com_virtuemart/html/shop_browse.php и ищем блок, начинающийся такими комментариями:
/*** Now fill the template 

Находим:
Код:
$product_cell = str_replace( "{product_sku}", $db_browse->f("product_sku"), $product_cell );

Этой строчкой формируется "заглушка" для отображения артикула товара, который мы используем в шаблоне в виде: {product_sku}.
Добавляем заглушку для нашего нового поля:

Код:
$product_cell = str_replace( "{product_sku2}", $db_browse->f("product_sku2"), $product_cell );

6. Открываем шаблон категории (по умолчанию browse_1.php) и добавляем {product_sku2} в нужное место.

7. Для добавления "заглушки" в шаблон полного описания товара:
- открываем файл administrator/com_virtuemart/html/shop.product_details.php, почти в самом конце файла после:
Код:
$template = str_replace( "{product_sku}", $db_product->f("product_sku"), $template );

добавляем:
Код:
$template = str_replace( "{product_sku2}", $db_product->f("product_sku2"), $template );
и используем {product_sku2} в своем шаблоне карточки товара.

Мотор! Снято! Всем спасибо ))

Записан
 
Nikita Web
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 58



« Ответ #31 : 19.04.2010, 18:41:10 »

здесь все очень круто...

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

готов отблагодарить веб-мани за помощь... очень нужена вторая цена товара, и второй столбик в корзине...
Записан
Yazi
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Женский
Сообщений: 80



« Ответ #32 : 04.11.2010, 01:38:05 »

Для Joomla 1.5 и VirtueMart 1.1.5 stable (у меня свойство color):
пп 1
п. 2
После:
<tr class="row0">
                  <td width="21%" >
                     <div style="text-align:right;font-weight:bold;"><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_FORM_SKU')?>:</div>
                  </td>
                  <td width="79%">
                    <input type="text" class="inputbox"  name="product_sku" value="<?php $db->sp("product_sku"); ?>" size="32" maxlength="64" />
                  </td>
             </tr>
Добавляем:
            <tr class="row1">
                  <td width="21%" >
                     <div style="text-align:right;font-weight:bold;"><?php echo $VM_LANG->_('PHPSHOP_PRODUCT_COLOR')?>:</div>
                  </td>
                  <td width="79%">
                    <input type="text" class="inputbox"  name="color" value="<?php $db->sp("color"); ?>" size="32" maxlength="64" />
                  </td>
             </tr>
п.3
после:
$fields = array ( 'vendor_id' => $vendor_id,
                  'product_parent_id' => vmRequest::getInt('product_parent_id'),
                  'product_sku' => vmGet($d,'product_sku'),
добавляем:
'color' => vmGet($d,'color'),
п.4
В шаблоне прописываем
<?php echo $color ?>
Все.
Записан
TakT
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 111


« Ответ #33 : 04.12.2010, 17:04:01 »

пожалуйста скиньте кто нить уже исправленные файлы, у меня Joomla 1.5.22 и VirtueMart 1.1.5 Stable? мне надо дополнительный артикул, ни как не могу разобраться, он его в админке не сохраняет(((, пожалуйста очень надо
Записан
Unikal
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 63


http://yacht-skipper.ru


« Ответ #34 : 10.12.2010, 09:23:54 »

Подскажите как сделать дополнительное текстовое поле в описании категории. Стоит задача показывать тултип с кратким описанием категории при наведении на картинку(ссылку) категории.
Записан
orchanin
Давно я тут
****

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 244



« Ответ #35 : 27.12.2010, 13:14:21 »

Может кому пригодится добавление поля с выпадающим списком  и вывод каждого значения в своем стиле. Можно сделать по аналогии поле типа краткого описания или простого поля для текста. Актуально для добавления дополнительного поля VirtueMart 1.1.5
Записан
Movs
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 8


« Ответ #36 : 16.02.2011, 14:28:27 »

Дополню:

Если необходимо выводить поле на КАРТОЧКЕ ТОВАРА то дополнительно правим файл
shop.product_details.php
Прмерно 120 строка :
$MOE_POLE = $db_product->f("MOE_POLE");
430я строка:
$tpl->set( "MOE_POLE", $MOE_POLE );

И теперь можно выводить в шаблоне на flypage.php это поле как <?echo $MOE_POLE ?>


Записан
Annaweb
Давно я тут
****

Репутация: +3/-0
Offline Offline

Пол: Женский
Сообщений: 264



« Ответ #37 : 16.02.2011, 16:40:21 »



1. В файле shop.browse.php после строки 453
Код:
$products[$i]['product_url'] = $db_browse->f("product_url");
добавил
Код:
$products[$i]['child_option_ids'] = $db_browse->f("child_option_ids");


3. Ну и, чтобы вывести содержимое поля, в файле browse_1.php в нужное место вставить
Код:
<?php echo $child_option_ids ?>



почему то не показывается в категории..
(в карточке товара доп. поле добавилось)
Записан
Erepb
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 44


« Ответ #38 : 18.02.2011, 19:34:16 »

почему то не показывается в категории..
(в карточке товара доп. поле добавилось)
А какой файл изменяли, чтобы было видно в категории?
Записан
Annaweb
Давно я тут
****

Репутация: +3/-0
Offline Offline

Пол: Женский
Сообщений: 264



« Ответ #39 : 25.02.2011, 17:48:14 »

а что нужно сделать чтобы при редактировании показывались в новых полях данные из бд?
(которые вводились ранее)

вот в "русскоязычное наименование" почему-то показывается, а в других нет.. Sad



Записан
Annaweb
Давно я тут
****

Репутация: +3/-0
Offline Offline

Пол: Женский
Сообщений: 264



« Ответ #40 : 25.02.2011, 17:50:22 »

А какой файл изменяли, чтобы было видно в категории?

все работает. у меня в настройках был указан другой файл, не browse_1.php
Записан
Annaweb
Давно я тут
****

Репутация: +3/-0
Offline Offline

Пол: Женский
Сообщений: 264



« Ответ #41 : 28.02.2011, 16:13:59 »

поняла все дело в создании select поля.

как правильно его создать?
Записан
Master of Magic
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 47


« Ответ #42 : 13.03.2011, 17:52:39 »

А теперь как сделать что бы это поле экспортировалось/импортировалось через csvi?
А все разобрался: http://joomlaforum.ru/index.php/topic,113045.0.html
« Последнее редактирование: 13.03.2011, 18:34:56 от Master of Magic » Записан
artliffe
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 142


...акки пчела


« Ответ #43 : 09.05.2011, 01:39:56 »

здесь все очень круто...

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

готов отблагодарить веб-мани за помощь... очень нужена вторая цена товара, и второй столбик в корзине...
Присоединяюсь к вопросу. Уже делал кто нибудь такое?
Записан
lcd25
Давно я тут
****

Репутация: +26/-0
Offline Offline

Сообщений: 374



« Ответ #44 : 09.05.2011, 01:48:02 »

С ценой намного сложнее, т.к. она должна учавствовать в функциях корзины, учитывать скидки, продавца, налоги, добавочную стоимость атрибутов, конвертироваться в др. валюту и т. д.
Записан
artliffe
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 142


...акки пчела


« Ответ #45 : 29.05.2011, 01:00:34 »

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

Хорошо, а если не вторую цену, а баллы, т.е. у каждого товара есть балловая составляющая и необходимо чтобы она отдельно суммировалась в корзине и соответственно выводилась в заказе.
Записан
orexov_m
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 213


« Ответ #46 : 24.06.2011, 09:59:55 »

Я не знаю надо кому или нет, но в VirtueMart 1.1.8 , 1.1.9 немножко по другому называются поля поэтому добавлю свое решение для добавления поля в админку в карту товара и вывод его в категории и в карточке товара на сайте :

Для начала идем в базу магазина и в #_vm_product на закладке структура добавляем необходимые нам поля.

Далее идем в administrator/components/com_virtuemart/classes находим файл ps_product.php в нем находим строку :

Код:
'product_sku' => vmGet($d,'product_sku'),

после нее добавляем нашу строчку :

Код:
'product_opt_price' => vmGet($d,'product_opt_price'),

далее находим строку :

Код:
$timestamp = time();
$db = new ps_DB;
$ps_vendor_id = $_SESSION["ps_vendor_id"];

после неё добавляем :

Код:
$product_opt_price=$_POST["product_opt_price"];

чуть ниже находим строку :

Код:
$fields = array ( 'vendor_id' => $vendor_id,
'product_sku' => vmGet($d,'product_sku'),

и добавляем :

Код:
'product_opt_price' => vmGet($d,'product_opt_price'),

С этим файлом закончили. Далее идем в administrator/components/com_virtuemart/html находим файл product.product_form.php

находим строку :

Код:
echo vmToolTip( $VM_LANG->_('PHPSHOP_PRICE_FORM_GROUP'). ": ".$shopper_db->f("shopper_group_name")); ?>               
                <input type="hidden" name="shopper_group_id" value="<?php echo $my_shopper_group_id ?>" />
              </td>

ниже вставляем :

Код:
<td width="21%" >
      <div style="text-align:right;font-weight:bold;"><?php echo ('Оптовая цена')?>:</div>
      </td>
      <td width="79%">
        <input type="text" class="inputbox"  name="product_opt_price" value="<?php $db->sp("product_opt_price"); ?>" size="32" maxlength="64"

/>
      </td>

С этим файлом все. тут же в administrator/components/com_virtuemart/html находим файл shop.browse.php

находим строку :

Код:
$products[$i]['product_sku'] = $db_browse->f("product_sku");

и ниже вставляем :

Код:
$products[$i]['product_opt_price'] = $db_browse->f("product_opt_price");

С этим файлом все. тут же в administrator/components/com_virtuemart/html находим файл shop_browse_queries.php

находим строку :

Код:
// These are the names of all fields we fetch data from
$fieldnames = "`product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`#__{vm}_category`.`category_id`,
`#__{vm}

_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_parent_id`,`product_publish`,`product_in_stock`,`product_sku`,

и сразу после 'product_sku', вставляем по аналогии наш 'product_opt_price'

С этим файлом все. тут же в administrator/components/com_virtuemart/html находим файл shop.product_details.php

находим строку :

Код:
$product_sku = $db->getEscaped( vmGet($_REQUEST, "sku", '' ) );

и после неё добавляем :

Код:
$product_opt_price = $db->getEscaped( vmGet($_REQUEST, "opt_price", '' ) );

все тут закончили.
Дальше открываем файл вывода категории Browse_x и в нужном месте пишем <?php echo $product_opt_price ?> и видим нашу оптовую цену (в моем случае) в вашем может быть любой

другой параметр.

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

На этом все Azn
Записан
haidamaka
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 52


« Ответ #47 : 25.08.2011, 19:36:43 »

Сделал всё как описано в верхнем посте. В админке поле есть, в базу сохраняет. Но во фронт не выводит. Версия 1.1.9
Записан
orexov_m
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 213


« Ответ #48 : 25.08.2011, 19:52:09 »

Сделал всё как описано в верхнем посте. В админке поле есть, в базу сохраняет. Но во фронт не выводит. Версия 1.1.9
а не забыли
Код:
<?php echo $ваша_переменная ?>
  ?
Записан
haidamaka
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 52


« Ответ #49 : 26.08.2011, 00:06:51 »

Сделал, 2 раза проверил... странно)
Записан
haidamaka
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 52


« Ответ #50 : 26.08.2011, 00:17:41 »

Могут ли быть какие-либо проблемы в настройках создаваемых полей в БД?
Записан
haidamaka
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 52


« Ответ #51 : 26.08.2011, 01:58:57 »

Сорри...) нашёл заработало, спасибо!+ в карму)
Записан
motor1
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 17


« Ответ #52 : 26.10.2011, 17:57:39 »

Вот готовое решение для Дополнительное поле для товара в VirtueMart 1.1.8 работает
http://joomlaforum.ru/index.php/topic,183416.0.html
Записан
artrush
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 103



« Ответ #53 : 21.01.2012, 22:50:40 »

Как Добавить checkbox для дополнительных полей, чтобы выбирать отображать его в карточке товара или нет?
Записан
streelok
Осваиваюсь на форуме
***

Репутация: +0/-3
Offline Offline

Сообщений: 171


« Ответ #54 : 23.01.2012, 12:43:37 »

подскажите пожалуйста такую вешь.. вот я добавлю новое поле к товару... можно сделать поиск товаров по этому полю?
Записан
nightbodom
Осваиваюсь на форуме
***

Репутация: +0/-1
Offline Offline

Пол: Мужской
Сообщений: 43



« Ответ #55 : 16.02.2012, 17:10:54 »

А кто нибудь знает как создать дополнительное поле в карточке товара textarea product_desc (ну типа под названием product_full_desc).

Тоесть:
product_desc - описание товара (первая часть описания)
product_full_desc - полное описание товара (вторая часть описания)
чтобы потом их можно было вывести в flypage через скрипт Показать/Скрыть
Записан
kepa
Осваиваюсь на форуме
***

Репутация: +1/-2
Offline Offline

Пол: Мужской
Сообщений: 67



« Ответ #56 : 06.05.2012, 17:57:05 »

лучший способ: http://mc-joomla.ru/index.php?option=com_content&view=article&id=19:-virtuemart&catid=3:joomla&Itemid=5
Записан
lcd25
Давно я тут
****

Репутация: +26/-0
Offline Offline

Сообщений: 374



« Ответ #57 : 06.05.2012, 18:34:01 »


Копипаст. Дешевая рекламка.
Записан
Страниц: 1 [2]  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet