Максимум чего смог добиться на скрине.
Несколько косяков одновременно, при нажатии на прибавление товара то есть на плюсик, визуально добавляются все, в корзину улетает же товар нажатый и его родитель.И как наконец мне поместить всю эту таблицу в другое место, тыкаюсь а она у меня все равно на одном месте стоит, а мне нужно перед описанием.Код использовал на этот раз из поста Olf
Выкладываю сюда код для VM 2.0.22, который получился у меня. Правда мне изображений товара не нужно:
product.php:
public function getUncategorizedChildren ($withParent) {
if (empty($this->_uncategorizedChildren)) {
$q = 'SELECT * FROM `#__virtuemart_products` as p
LEFT JOIN `#__virtuemart_products_' . VMLANG . '` as pl
USING (`virtuemart_product_id`)
LEFT JOIN `#__virtuemart_product_prices`
USING (`virtuemart_product_id`) ';
$q .= ' WHERE `product_parent_id` = "'.$this->_id.'" OR `virtuemart_product_id` = "'.$this->_id.'" ';
$app = JFactory::getApplication ();
if ($app->isSite () && !VmConfig::get ('use_as_catalog', 0) && VmConfig::get ('stockhandle', 'none') == 'disableit') {
$q .= ' AND p.`product_in_stock`>"0" ';
}
if ($app->isSite ()) {
$q .= ' AND p.`published`="1"';
}
$q .= ' GROUP BY `virtuemart_product_id` ORDER BY p.pordering ASC';
$this->_db->setQuery ($q);
$this->_uncategorizedChildren = $this->_db->loadAssocList ();
$err = $this->_db->getErrorMsg ();
if (!empty($err)) {
vmError ('getUncategorizedChildren sql error ' . $err, 'getUncategorizedChildren sql error');
vmdebug ('getUncategorizedChildren ' . $err);
return FALSE;
}
}
return $this->_uncategorizedChildren;
}
customfields.php:
$options = array();
$session = JFactory::getSession ();
$virtuemart_category_id = $session->get ('vmlastvisitedcategoryid', 0, 'vm');
$productModel = VmModel::getModel ('product');
$productModel->setId($product->virtuemart_product_id);
VirtueMartModelCustomfields::bindParameterableByFieldType($customfield);
$selected = JRequest::getVar ('virtuemart_product_id',0);
if(is_array($selected) ) {
$selected = $selected[0];
}
$selected = (int) $selected;
$html = '';
$uncatChildren = $productModel->getUncategorizedChildren ($customfield->withParent);
if(empty($uncatChildren)){
return $html;
break;
}
foreach($uncatChildren as $k =>$child ){
$options[] = array( 'value' => JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id='.$virtuemart_category_id.'&virtuemart_product_id='.$child['virtuemart_product_id']),
'id'=>$child['virtuemart_product_id'],
'text' =>$child['product_name'],'tovarimage' =>$child['file_url_thumb'],
'tovarmodimage' =>$child['file_url'], 'tovarprice' =>$child['product_price'] );}
$res=array();
$table='<div class="tabletov"><table width="100%">
<tr><th width="30%">Название</th><th>Цена</th><th>Купить</th></tr>';
foreach($options as $arr) {
if ( $arr['value'] === JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id='.$virtuemart_category_id.'&virtuemart_product_id='.$selected)) continue;
$res[]= '
<tr>
<td><a href='.$arr['value'].'>'.$arr['text'].'</a></td>
<td>'.$currency->priceDisplay((float)$arr['tovarprice']).'</td>
<td>
<form method="post" class="product js-recalculate" action="index.php" >
<span class="quantity-box">
<input type="text" class="quantity-input js-recalculate" name="quantity[]" value="0" />
</span>
<span class="quantity-controls js-recalculate">
<input type="button" class="quantity-controls quantity-plus" />
<input type="button" class="quantity-controls quantity-minus" />
</span>
<span class="addtocart-button">
<input type="submit" name="addtocart" class="addtocart-button" value="Добавить в корзину" />
</span>
<input class="pname" type="hidden" value="'.$arr['text'].'" />
<input type="hidden" value="com_virtuemart" name="option" />
<input type="hidden" value="cart" name="view" />
<noscript><input type="hidden" name="task" value="add" /></noscript>
<input type="hidden" value='.$arr['id'].' name="virtuemart_product_id[]" />
<input type="hidden" value="0" name="virtuemart_category_id[]" />
</form>
</td>
</tr>';
}
$str = implode($res);
$html = $table.''.$str.'</table></div>';
return $html;
Но! У меня почему-то если отправлять общей кнопкой главного товара, - в корзину летит первый из дочерних. Правда для них я по-умолчанию сделал value="0", - ведь не надо же их в корзину отправлять по-любому?
И есть тут знатоки javascript? Когда на странице меняешь количество, - меняется у всех. Скрипт не понимает, что тут кнопка не одна.
И еще как то изображения прикрутить надо, короче надо веревку с мылом покупать и на дерево чтоб не мучится