Jump to content

Edit History

Chill_user

Chill_user

 У тебя все грузится с Ajax -  поэтому и долго.

Я нашел "решение" , не знаю на сколько правильное, но у меня была такая-же проблема. Вот примерный алгоритм решения:

1. загружаем данные всех комбинаций при загрузке страницы, присваиваем display:none

2. Для комбинаций делаем блок дизайна в .tpl файле, но каждой из комбинаций присваиваем уникальный id (Например: id="{$product.id}_{$product.id_attribute}") и задаем класс для всех цен, например класс css price_modification

Пункт 2 делаем с помощью цикла foreach {} естественно

3.Делаем js функцию, типа

function changeAttributePrice(id,id_attr){
	var pricesToHide = document.getElementsByClassName("price_modification");
  	for(var i = 0; i < pricesToHide.length; i++){
      pricesToHide[i].style.display = "none"; 
  	}
   	document.getElementById(id+id_attr).style.display = "block";  //оставляем тот, который нужен                                 
}

4. В твоем списке комбинаций назначаем onclick функцию

(onclick="changeAttributePrice({$product.id}, {$product.id_attribute})")

для каждого droplist эл-та

В принципе вот и все, у тебя будет моментально меняться цена при нажатии

P.S нужно учитывать тот факт, что нужно будет с такой-же схемой переписать кнопку "Добавить в корзину" чтобы правильная комбинация добавлялась.

Chill_user

Chill_user

 У тебя все грузится с Ajax -  поэтому и долго.

Я нашел "решение" , не знаю на сколько правильное, но у меня была такая-же проблема. Вот примерный алгоритм решения:

1. загружаем данные всех комбинаций при загрузке страницы, присваиваем display:none

2. Для комбинаций делаем блок дизайна в .tpl файле, но каждой из комбинаций присваиваем уникальный id (Например: id="{$product.id}_{$product.id_attribute}") и задаем класс для всех цен, например класс css price_modification

Пункт 2 делаем с помощью цикла foreach {} естественно

3.Делаем js функцию, типа

function changeAttributePrice(id,id_attr){
	var pricesToHide = document.getElementsByClassName("price_modification");
  	for(var i = 0; i < pricesToHide.length; i++){
      pricesToHide[i].style.display = "none"; 
  	}
   	document.getElementById(id+id_attr).style.display = "block";  //оставляем тот, который нужен                                 
}

4. В твоем списке комбинаций назначаем onclick функцию

(onclick="changeAttributePrice({$product.id}, {$product.id_attribute})")

для каждого droplist эл-та

В принципе вот и все, у тебя будет моментально меняться цена при нажатии

×
×
  • Create New...