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

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Обнуление атрибутов

 (Прочитано 95 раз)
0 Пользователей и 1 Гость смотрят эту тему.
olf
Давно я тут
****

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

Сообщений: 333



« : 11.02.2016, 16:38:03 »

Появилась необходимость сделать разные комплектации товара со своими ценами (переключаются во вкладках на фронтэнде). Причем у каждой комплектации свои атрибуты, которые плюсуются к цене.
AJAX cмену цены при клике по вкладке сделать удалось:

В файле шаблона:
Ссылки вкладок:
Код
<a href="#level-2-1" rel="product_price=100000"></a>
<a href="#level-2-1" rel="product_price=200000"></a>
javascript:
Код
function number_format(n, d, s) {
       if (arguments.length == 2) { s = " "; }
       if (arguments.length == 1) { s = " "; d = "."; }
       n = n.toString();
       a = n.split(d);
x = a[0];
y = a[1];
z = "";
if (typeof(x)!= "undefined") {
for (i=x.length-1;i>=0;i--)
z += x.charAt(i);
z = z.replace(/(\d{3})/g, "$1" + s);
if (z.slice(-s.length) == s)
z = z.slice(0, -s.length);
x = "";
for (i=z.length-1;i>=0;i--)
x += z.charAt(i);
if (typeof(y)!= "undefined" && y.length > 0)
x += d + y;
}
return x;
}
$(document).ready(function () {
$('.ajaxPrice').on('click', function () {
               $.ajax({
                       type:'POST',
                       cache:false,
                       dataType:'html',
                       url:'/index.php?option=com_jshopping&controller=product&task=ajax_price&product_id=1',
                       data: $(this).attr("rel"),
                       format : 'raw',
                       success:function (data) {
                               data = number_format(data);
                               jQuery("#block_price").html(data + ' <?php print $this->config->currency_code;?>');
                       }
               });
 
       });
});

Контроллер \controllers\product.php:
Код
function display($cachable = false, $urlparams = false){
$session = JFactory::getSession();
$session->clear('product_price');
...
}
function ajax_price()
{
       $product_price = JRequest::getInt('product_price');
print $product_price;
$session = JFactory::getSession();
$session->set( 'product_price', $product_price );
die();
}
В файл \tables\product.php переопределил function load для загрузки цены комплектации из сессии, которая выводится при выборе комплектации:
Код
public function load($keys = null, $reset = true)
{
parent::load($keys, $reset);
$session = JFactory::getSession();
if ($session->get('product_price')){
$this->product_price = $session->get('product_price');
       }
}
Цена при переключается, всё вроде бы пашет, в корзину заносится. Но вот как только мы выберем атрибут в одной комплектации, потом перейдем на другую, - плюсуются стоимость атрибутов обеих.

Подскажет кто где и как их обнулять? Уже мозги сломал все. Этот кусок кода например не помогает:
Код
$product = $this->product;
$product->load($this->product_id);
$product->setAttributeActive(array());
« Последнее редактирование: 11.02.2016, 16:52:37 от olf » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | 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