Ссылка у Жени правильная, но нужна доработка.
1. Берем и переопределяем элемент цены. Это или jbpricecalc или jbpriceplain. Переопределяем в своем шаблоне JBZoo. Я думаю, что не нужно объяснять, как?
2. Открываем файл элемента jbpricecalc.php или jbpriceplain.php.
Далее в конструкторе класса добавляем метод addToCart.
/**
* Class constructor
*/
public function __construct()
{
parent::__construct();
// add callbacks
$this->registerCallback('addToCart');
$this->isOverlay = true;
}
3. Добавляем новый метод addToCart. Он скопирован с метода добавления товара в корзину аяксом, но немного изменен.
/**
* Add to cart method
* @param array $template
* @param int $quantity
* @param array $values
* @throws ElementJBPriceException
*/
public function addToCart($template = array('default'), $quantity = 1, $values = array())
{
//Get variant by selected values
$list = $this->getVariantByValues($values);
$cart = JBCart::getInstance();
$keys = array_keys($list);
$key = (int)end($keys);
// Set the default option, which we have received, not saved. For correct calculation.
$this->setDefault($key)->setTemplate($template);
$list = $this->getList($list, array(
'values' => $this->getValues($values),
'selected' => $values,
'quantity' => $quantity
));
$session_key = $list->getSessionKey();
$data = $cart->getItem($session_key);
if (!empty($data)) {
$quantity += $data['quantity'];
}
// Check if all required params is selected.
$missing = $this->getMissing($values);
// Check required.
if (count($missing)) {
throw new ElementJBPriceException(JText::sprintf('JBZOO_JBPRICE_OPTIONS_IS_REQUIRED', '"' . implode('", "', $missing) . '"'));
}
// Check balance.
if (!$this->inStock($quantity, $key)) {
throw new ElementJBPriceException(JText::_('JBZOO_JBPRICE_ITEM_NO_QUANTITY'));
}
$cart->addItem($list->getCartData())
->updateItem($cart->get($session_key));
JFactory::getApplication()->redirect($this->app->jbrouter->basket());
}
4. Ссылка
/?option=com_zoo&controller=default&task=callelement&element=ID_PRICE_ELEMENT&method=addToCart&item_id={offerID}
где ID_PRICE_ELEMENT - id Вашего элемента цены.