Так как не увидела "вменяемых" инструкций на данную тему, а вопросы продолжают поступать (на форуме, в аську, почту и т.п.) - решила написать свою "шпаргалку". Может быть, кому-нибудь пригодится.
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} в своем шаблоне карточки товара.
Мотор! Снято! Всем спасибо ))