Модификации товаров

#
Re: Модификации товаров
natalya,
HostCMS Корпорация: 5.9.28, вот страница товара, пробовал сделать, как было изначально(без вывода цветов и размеров картинками), всё работает. А вообще реально сделать так, чтобы радиокнопки вообще заменить картинками соответствующего рисунка?
Делись своими знаниями. Это путь к бессмертию.
#
Re: Модификации товаров
R_www,
Да все можно... Только тут вам потребуется jquery, чтобы при клике на картинку обновлять значение input скрытого.
#
Re: Модификации товаров
vkharkov,
Да это я знаю, только как это сделать именно в том варианте, как я хочу. Просто input поменять не сложно.
Делись своими знаниями. Это путь к бессмертию.
#
Re: Модификации товаров
R_www, причина проблемы в следующем: у вас свойства "Цвет" и "Размер" имеют идентификаторы 218 и 217 соответственно. Но при этом ссылка "Купить" имеет вид, например:
<a style="text-decoration: none;" onclick="return AddIntoCart('/shop/', 425, document.getElementById('count_425').value + '&amp;property145=' + GetRadioValueModif('property145') + '&amp;property146=' + GetRadioValueModif('property146'))" href="/shop/cart/?action=add&amp;item_id=425">Купить
</a>

обратите внимание на указание в ней в качестве идентификаторов доп. свойств значений 145 и 146. Исправьте.
#
Re: Модификации товаров
natalya,
Спасибо! Наверно, когда второй раз скопировал не заметил со злости. Наталья, а как можно реализовать вот такую карточку товара? У них цвет сделан как ссылка на другой товар, а размеры, как вы показывали. Это очень не удобно конечно, особенно если товаров будет много, но по-другому я не понимаю, как сделать так, чтобы при смене цвета менялась и фотография товара соответствующего цвета.
Делись своими знаниями. Это путь к бессмертию.
#
Re: Модификации товаров
natalya писал(а):
Необходимо внести следующие изменения в код XSL-шаблона товара:
вместо:
function GetRadioValueModif(radioName)
{
var value = false;
var radioObject = document.getElementsByName(radioName);
if (radioObject!= undefined)
{
for (var i = 0; i < radioObject.length; i++)
{
if (radioObject[i].checked)
{
value = radioObject[i].value;
break;
}
}
}
return value;
}
следует использовать:
function GetSelectValue(selectName)
{
        value=document.getElementById(selectName).value;
   return value;
}
вместо:
<xsl:apply-templates select="modifications/item/property[@xml_name='razm_odez' and generate-id(.)=generate-id(key('property145', value))]"/>
следует использовать:
<select name="property145" id="property145">
<xsl:apply-templates select="modifications/item/property[@xml_name='razm_odez' and generate-id(.)=generate-id(key('property145', value))]"/>
</select>
вместо:
<xsl:apply-templates select="modifications/item/property[@xml_name='rost' and generate-id(.)=generate-id(key('property146', value))]"/>
использовать:
<select name="property146" id="property146">
<xsl:apply-templates select="modifications/item/property[@xml_name='rost' and generate-id(.)=generate-id(key('property146', value))]"/>
</select>
вместо:
<!-- для размеров -->
<xsl:template match="modifications/item/property[@xml_name='razm_odez']">
<xsl:variable name="value" select="value" />
<xsl:choose>
<xsl:when test="position() = 1">
<input name="property145" size="20" type="radio" value="{/shop/properties_for_group/property[@xml_name='razm_odez']/list_items/list_item[list_item_value=$value]/@id}" checked=""/><xsl:value-of select="value"/><br />
</xsl:when>
<xsl:otherwise>
<input name="property145" size="20" type="radio" value="{/shop/properties_for_group/property[@xml_name='razm_odez']/list_items/list_item[list_item_value=$value]/@id}" /><xsl:value-of select="value"/><br />
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<!-- для ростов -->
<xsl:template match="modifications/item/property[@xml_name='rost']">
<xsl:variable name="value" select="value" />
<xsl:choose>
<xsl:when test="position() = 1">
<input name="property146" size="20" type="radio" value="{/shop/properties_for_group/property[@xml_name='rost']/list_items/list_item[list_item_value=$value]/@id}" checked="checked"/><xsl:value-of select="value"/><br />
</xsl:when>
<xsl:otherwise>
<input name="property146" size="20" type="radio" value="{/shop/properties_for_group/property[@xml_name='rost']/list_items/list_item[list_item_value=$value]/@id}" /><xsl:value-of select="value"/><br />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
следует использовать:
<!-- для размеров -->
<xsl:template match="modifications/item/property[@xml_name='razm_odez']">
<xsl:variable name="value" select="value" />
<option value="{/shop/properties_for_group/property[@xml_name='razm_odez']/list_items/list_item[list_item_value=$value]/@id}" ><xsl:value-of select="value"/></option>
</xsl:template>
      
<!-- для ростов -->
<xsl:template match="modifications/item/property[@xml_name='rost']">
<xsl:variable name="value" select="value" />
<option value="{/shop/properties_for_group/property[@xml_name='rost']/list_items/list_item[list_item_value=$value]/@id}" ><xsl:value-of select="value"/></option>
</xsl:template>

вместо:
<a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, document.getElementById('count_{@id}'.value + '&amp;property145=' + GetRadioValueModif('property145' + '&amp;property146=' + GetRadioValueModif('property146')" style="text-decoration: none;"><img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif" style="margin: 0px 0px -4px 10px" />В корзину
</a>
следует использовать:
<a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, document.getElementById('count_{@id}'.value + '&amp;property145=' + GetSelectValue('property145' + '&amp;property146=' + GetSelectValue('property146')" style="text-decoration: none;"><img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/
cart.gif" style="margin: 0px 0px -4px 10px" />В корзину
</a>


Добрый день! Купили таки лицензию со списками, попробывал ваше решение но оно подходит только для страницы товара я так понимаю а нам нужно в каталоге товаров. Цвета не так отбираюся для товара, как-то логику нужно менять. Очень нужна ваша помощь!
изучаю hostcms 6
#
Re: Модификации товаров
R_www писал(а):
как сделать так, чтобы при смене цвета менялась и фотография товара соответствующего цвета
- загрузите для каждого товара-модификации свое изображение(соответствующего ему цвета). Затем в коде XSL-шаблона по событию выбора цвета из списка на JavaScript-е выводите изображение соответствующей модификации(которое имеет в качестве значения доп. свойства выбранный цвет).
#
Re: Модификации товаров
napishu писал(а):
оно подходит только для страницы товара я так понимаю а нам нужно в каталоге товаров
- да, реализация будет работать только в XSL-шаблоне для одного товара. К сожалению, примера реализации функционала для списка товаров нет. Можно, конечно, попробовать переделать предложенный для одного товара вариант, но это будет достаточно трудоемкая задача(по крайней мере то возможное решение, которое нам видится).
#
Re: Модификации товаров
natalya писал(а):
 — да, реализация будет работать только в XSL-шаблоне для одного товара. К сожалению, примера реализации функционала для списка товаров нет. Можно, конечно, попробовать переделать предложенный для одного товара вариант, но это будет достаточно трудоемкая задача(по крайней мере то возможное решение, которое нам видится).


8( Как-то это грустно слышать. И что делать? Что сказать заказчику что система этого не может?
изучаю hostcms 6
Модератор
#
Re: Модификации товаров
napishu,
система может, необходимо адаптировать готовое решение от карточки товара к списку товаров.
Авторизация