Ростов-на-Дону
(863) 261-27-24
телефон / факс
282-63-19
...или закажите обратный звонок и мы с вами свяжемся!
 

HostCMS - выбор модификации товара из списков

Ниже описан пример реализации в карточке товара выбора модификации товара по каким-либо дополнительным полям из выпадающего списка. Например, есть товар "Куртка", с различными модификациями по свойствам: "Цвет", "Размер".

 

 

Добавляем 2 дополнительных поля с xml-именам color и size, создаем необходимые модификации (в редакциях, в которых отсутствует модуль списков, доступно только ручное создание модификаций).

 

В XSL-шаблоне карточки товара добавляем:

 

<!-- Модификации -->
<xsl:if test="count(modifications/item) &gt; 0">
    <table border="0" style="">
        <xsl:if test="count(modifications/item/property[@xml_name='color'])>0">
            <tr>
                 <td>Цвет:</td><td><select id="pcolor" style="width: 100px;">
                 <xsl:for-each select="modifications/item/property[@xml_name='color']">
                   <xsl:variable name="val" select="value"/>
                   <xsl:if test="not(parent::*/following-sibling::item/property[@xml_name='color']/value[text() = $val])">
                     <option value="{value}"><xsl:value-of select="value" /></option>
                   </xsl:if>
                 </xsl:for-each>
                 </select></td>
             </tr>
           </xsl:if>
           <xsl:if test="count(modifications/item/property[@xml_name='size'])>0">
              <tr>
                  <td>Размер:</td><td><select id="psize" style="width: 100px;">
                     <xsl:for-each select="modifications/item/property[@xml_name='size']">
                       <xsl:variable name="val" select="value"/>
                            <xsl:if test="not(parent::*/following-sibling::item/property[@xml_name='size']/value[text() = $val])">
                             <option value="{value}"><xsl:value-of select="value" /></option>
                            </xsl:if>
                         </xsl:for-each>
                      </select></td>
                  </tr>
          </xsl:if>
    </table>
</xsl:if>

 

<!-- Модификации -->
<xsl:if test="count(modifications/item) &gt; 0">
  <xsl:for-each select="modifications/item">
    <input type="hidden" id="mod{@id}" value="{property[@xml_name='size']/value}{property[@xml_name='color']/value}"/>
  </xsl:for-each>
</xsl:if>

 

В условии test="not(parent::*/following-sibling::item/property[@xml_name='color']/value[text() = $val])" проверка на наличие дублей.

 

Далее добавляем js-код для поиска и замены id товара на id модификации, соответствующей выбранным свойствам:

 

<script type="text/javascript">
  <![CDATA[
    function getMod() {
      var m=$('#psize').val()+$('#pcolor').val();
      var newid = 0;
      $('input.modif').each(
        function() {
          if ($(this).val() == m) {
            newid = $(this).attr('id').replace('mod','');
            $('a.cart_ln').each(

              function() {
                h = $(this).attr('href');
                $(this).attr('href',h.replace(/item_id=([0-9]+)/i,'')+'item_id='+newid);
              }
            );
          }
        }
      );
    }
  ]]>
</script>

 

Модифицируем строку:

 

<a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="getMod();">Купить</a>

От 08 Декабрь 2010, 4425 просмотров.

С 26 ноября 2012 г. по 25 декабря 2012 г. стоимость регистрации доменов в зонах.RU и. РФ составит 340 руб.
от 27 Ноябрь
Специальное предложение — домен в зоне. РФ за 350 руб.
от 15 Ноябрь
Домены для профессионалов.
от 18 Октябрь
Доступна REA.CMS v. 2.3.0, подробное описание на страницах документации.
от 29 Сентябрь
Внимание! У нас поменялись номера телефонов.
от 19 Апрель

Ниже описан пример реализации в карточке товара выбора модификации товара по каким-либо дополнительным полям из выпадающего списка.

REA SOFT
344092, Россия, Ростовская область, , город Ростов-на-Дону,улица Петровская, д. 59, оф. 20
время работы: пн-пт 10:00-19:00
Веб дизайн,Регистрация доменов,Программное обеспечение
+7 (863) 261-27-24, 282-63-19 226-51-66
https://www.rea-soft.ru