Всем доброго времени суток.
Версии: J1.5 VM 1.1.9
Столкнулся с такой проблемой, что необходимо добавить вкладку в раздел редактирования продукта.
Собственно саму вкладку я добавил:
в файле
/administrator/components/com_virtuemart/html/product.product_form.phpпосле
elseif(!empty($product_parent_id)) {
$parent_product_name = $ps_product->get_field($product_parent_id, 'product_name');
$title .= ' :: <a href="' .$sess->url( $_SERVER['PHP_SELF'].'?page=product.product_form&product_id='.$product_parent_id).'">'.$parent_product_name.'</a>';
}
добавил
$gift_label = $VM_LANG->_('PHPSHOP_GIFT_VERSION');
языковую константу добавил в нужном файле.
Далее в том же файле в нужном мне месте для вкладки добавил
$tabs->startTab( $gift_label, "gift-version");
$database->setQuery("SELECT xh.id_icon, xh.product_id, v.gift_version_publish, v.name_img FROM #__vm_gift_version_xhref xh, #__vm_gift_version v WHERE v.id_icon = xh.id_icon;");
$xhref = $database->loadObjectList();
function echoGiftTable($xhref, $product_id){
$table = '<table class="gift_table">
<tr>
<th>Name Version</th>
<th>Current situation</th>
</tr>';
foreach($xhref as $xh){
if($xh->product_id != $product_id){
continue;
}else{
$table .= "<tr>
<td> $xh->name_img </td>
<td>Y</td>
</tr>";
}
}
$table .= '</table>';
return $table;
}
$database->setQuery("SELECT v.id_icon, v.name_img, v.gift_version_publish
FROM #__vm_gift_version v");
$list = $database->loadObjectList();
после этого у меня идут поля с названиями версий (это мне нужно как раз реализовать, чтобы нужно было выбрать версию в чекбоксе и она сохранялась в базу, так же была связь версии и продукта)
табличка с версиями:
<table class="gift_table">
<tr>
<th>Name Version</th>
<th>Publish</th>
</tr>
<?php foreach($list as $item){ ?>
<tr>
<td><?php echo $item->id_icon." - ".$item->name_img ?></td>
<td>
<input type="checkbox" name="version[]" value="<?php echo $item->id_icon ?>" />
</td>
</tr>
<?php } ?>
</table>
Далее все манипуляции с версиями:
$database->setQuery("SELECT v.id_icon, v.name_img, v.gift_version_publish
FROM #__vm_gift_version v");
$list = $database->loadObjectList();
if($_POST['version']){
//обнуляем все пункты
$q ="UPDATE #__vm_gift_version SET gift_version_publish = 'N';";
$db->setQuery($q);
$db->query($q);
//делаем новую выборку
$database->setQuery("SELECT id_icon, name_img, gift_version_publish FROM #__vm_gift_version");
$list = $database->loadObjectList();
//удаляем устаревшие связи
$q3 = "DELETE FROM #__vm_gift_version_xhref
WHERE product_id = ".$product_id.";";
$db->setQuery($q3);
$db->query($q3);
foreach($list as $item){
foreach($_POST['version'] as $key => $val){
if($item->id_icon != (int)$val){
continue;
}else{ //получили все нажатые
//Неопубликованные, публикуем
if($item->gift_version_publish == 'Y'){ //опубликованные не трогаем
//echo "Отменяем публикацию $val<br />";
continue;
}else{
//echo "$val -- Публикуем $item->id_icon<br />";
$q ="UPDATE #__vm_gift_version SET gift_version_publish = 'Y' WHERE id_icon = ".$item->id_icon.";";
$db->setQuery($q);
$db->query($q);
//вставляем связи
$q2 = "INSERT INTO #__vm_gift_version_xhref (product_id, id_icon)
VALUES (".(int)$product_id.", ".$item->id_icon.");";
$db->setQuery($q2);
$db->query($q2);
}
}
}
}
}
echo echoGiftTable($xhref, $product_id);
$tabs->endTab();
Суть моего вопроса в том,
как реализовать обновление версий таким образом чтобы они корректно работали со всеми обновлениями данных в других вкладках?На текущий момент обновление и запись данных в базу работают, но:
- не обновляются данные сразу
- после нескольких сохранений слетает фотка продукта, не пойму почему?
Кто разбирался с подобным вопросом, огромная прозьба, помогите пожалуйста.
По поводу добавления различных вкладок и параметров нашел немного статей интересных, но там не совсем то что мне нужно. Кому интересно, может почитать:
http://www.didgo.ru/dopolnitelnye-svojstva-tovara-virtuemart.htmlhttp://www.joomla-show.ru/item/30-rasshiryaem-funktsionalnost-virtuemart-chast-2-modul-filtratsii-tovarahttp://mc-joomla.ru/index.php?option=com_content&view=article&id=19:-virtuemart&catid=3:joomla&Itemid=5