Как привести к такому виду?

#
Re: Как привести к такому виду?
HostCMS,
Все таки не получаеться привести к таму ввиду.
Попробовал подставить вместо картинки checkbox, добавлять добавляет, а обратную функцию не делает.
Как можно выйти из ситуации подскажите или хотябы наведите на мысль.
#
Re: Как привести к такому виду?
HostCMS,
Что я не так сделал, никак не могу вставить код в xsl макет

<tr>
                  <xsl:if test="type = 0 or (type = 1 and (eitem_count > 0 or eitem_count = -1))">
                     <div style="display: inline; margin-left: 3px">
                        <input type="text" size="3" value="1" id="count_{@id}"/>
                        <a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, document.getElementById('count_{@id}').value)">
                           <img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif" style="margin: 0px 0px -4px 10px" />
                        </a>
</tr>


А вот полный


<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
      encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml" />
   
   <!-- Шаблон "МагазинПрайс" -->
   <xsl:template match="/shop">
      <!-- CSS для таблицы с прайсом -->
      <style TYPE="text/css">
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
               <![CDATA[
               .price_table_border, .price_table_border td
               {
               border-collapse: collapse;
               empty-cells: show;
               border-width:1px;
               border-color: #CCCCCC;
               border-style: dashed;
               padding-left: 5px;
               }
               ]]>
            </xsl:text>
         </xsl:comment>
      </style>
      
      <h1>Прайс-лист</h1>
      
      <!-- Отображаем таблицу -->
      <table class="price_table_border">
         <tr bgcolor="#EEEEEE">
         <td align="center" height="25" valign="middle"><b>Наименование</b></td>
         <td align="center" height="25" valign="middle"><b>Цена</b></td>
         </tr>
         <xsl:apply-templates select="/shop/item">
            <xsl:with-param name="group_id" select="0"/>
         </xsl:apply-templates>
         <xsl:apply-templates select="//group"><xsl:sort select="@id" data-type="number" order="ascending"/></xsl:apply-templates>
      </table>
      
      <!-- Строка ссылок на другие страницы каталога -->
      <p>
         <xsl:if test="count_items > 0 and items_on_page > 0">
            <xsl:call-template name="for">
               <xsl:with-param name="n" select="count_items div items_on_page"/>
               <xsl:with-param name="current_page" select="current_page"/>
            </xsl:call-template>
            <div style="clear: both"></div>
         </xsl:if>
      </p>
      
   </xsl:template>
   
   <!-- Группы товаров -->
   <xsl:template match="group">
      <xsl:variable name="attr_group_id"><xsl:value-of select="@id"/></xsl:variable>
      <xsl:if test="count(/shop/item[@group=$attr_group_id]) > 0">
         <tr>
            <td bgcolor="#EEEEEE" colspan="2">
               <xsl:value-of select="name"/>
            </td>
         </tr>
         <xsl:apply-templates select="/shop/item">
            <xsl:with-param name="group_id" select="@id"/>
         </xsl:apply-templates>
      </xsl:if>
   </xsl:template>
   
   <!-- Товары -->
   <xsl:template match="/shop/item">
      <xsl:param name="group_id" />
      <xsl:if test="$group_id = @group">
         <tr>
            <td><xsl:value-of select="name"/></td>
            <td><xsl:value-of select="price"/>&#xA0;<xsl:value-of select="currency"/></td>
         </tr>
      </xsl:if>
   </xsl:template>
<tr>
                  <xsl:if test="type = 0 or (type = 1 and (eitem_count > 0 or eitem_count = -1))">
                     <div style="display: inline; margin-left: 3px">
                        <input type="text" size="3" value="1" id="count_{@id}"/>
                        <a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, document.getElementById('count_{@id}').value)">
                           <img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif" style="margin: 0px 0px -4px 10px" />
                        </a>
</tr>

   <!-- ============================ -->
   <!-- Цикл для вывода строк ссылок -->
   <!-- ============================ -->
   <xsl:template name="for">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>
      <xsl:param name="current_page"/>
      
      <xsl:if test="$n > $i and $n > 1">
         <!-- Ставим ссылку на страницу-->
         <xsl:if test="$i != $current_page">
            
            
            <!-- Определяем адрес ссылки -->
            <xsl:variable name="number_link"><xsl:choose>
                  <!-- Если не нулевой уровень -->
                  <xsl:when test="$i != 0">page-<xsl:value-of select="$i+1"/>/</xsl:when>
                  <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
                  <xsl:otherwise></xsl:otherwise>
            </xsl:choose></xsl:variable>
            
            <a href="{/shop/path}price/{$number_link}" class="page_link"><xsl:value-of select="$i+1"/></a>
         </xsl:if>
         
         <!-- Не ставим ссылку на страницу-->
         <xsl:if test="$i = $current_page">
            <span class="current"><xsl:value-of select="$i+1"/></span>
         </xsl:if>
         
         <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
         <xsl:call-template name="for">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
            <xsl:with-param name="current_page" select="$current_page"/>
         </xsl:call-template>
         
      </xsl:if>
   </xsl:template>
   
</xsl:stylesheet>
Модератор
#
Re: Как привести к такому виду?
Вот XSL-шаблон, в котором при выборе checkbox-а, товар добавляется в корзину. Продолжение в следующих сериях  

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
      encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml" />
  
   <!-- Шаблон "МагазинПрайс" -->
   <xsl:template match="/shop">
      <!-- CSS для таблицы с прайсом -->
      <style TYPE="text/css">
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
               <![CDATA[
               .price_table_border, .price_table_border td
               {
               border-collapse: collapse;
               empty-cells: show;
               border-width:1px;
               border-color: #CCCCCC;
               border-style: dashed;
               padding-left: 5px;
               }
               ]]>
            </xsl:text>
         </xsl:comment>
      </style>
      
      <script language="JavaScript">
         <!-- Скрипт открывает/скрывает форумы текущей группы  -->
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
               <![CDATA[
               function CheckboxClick(shop_path, catalog_item_id)
               {
                  var item_id =  'count_' + catalog_item_id;
                  
                  if (document.getElementById(item_id).checked == true)
                  {
                  
                     AddIntoCart(shop_path, catalog_item_id, 1);
                  }
                  else
                  {
                                       
                  }
               }
               ]]>
            </xsl:text>
         </xsl:comment>
      </script>
      
      
      <h1>Прайс-лист</h1>
      
      <!-- Отображаем таблицу -->
      <table class="price_table_border">
         <tr bgcolor="#EEEEEE">
         <td align="center" height="25" valign="middle"><b>Наименование</b></td>
         <td align="center" height="25" valign="middle"><b>Цена</b></td>
         </tr>
         <xsl:apply-templates select="/shop/item">
            <xsl:with-param name="group_id" select="0"/>
         </xsl:apply-templates>
         <xsl:apply-templates select="//group"><xsl:sort select="@id" data-type="number" order="ascending"/></xsl:apply-templates>
      </table>
      
      <!-- Строка ссылок на другие страницы каталога -->
      <p>
         <xsl:if test="count_items > 0 and items_on_page > 0">
            <xsl:call-template name="for">
               <xsl:with-param name="n" select="count_items div items_on_page"/>
               <xsl:with-param name="current_page" select="current_page"/>
            </xsl:call-template>
            <div style="clear: both"></div>
         </xsl:if>
      </p>
      
   </xsl:template>
  
   <!-- Группы товаров -->
   <xsl:template match="group">
      <xsl:variable name="attr_group_id"><xsl:value-of select="@id"/></xsl:variable>
      <xsl:if test="count(/shop/item[@group=$attr_group_id]) > 0">
         <tr>
            <td bgcolor="#EEEEEE" colspan="2">
               <xsl:value-of select="name"/>
            </td>
         </tr>
         <xsl:apply-templates select="/shop/item">
            <xsl:with-param name="group_id" select="@id"/>
         </xsl:apply-templates>
      </xsl:if>
   </xsl:template>
  
   <!-- Товары -->
   <xsl:template match="/shop/item">
      <xsl:param name="group_id" />
      <xsl:if test="$group_id = @group">
         <tr>
            <td><xsl:value-of select="name"/></td>
            <td><xsl:value-of select="price"/>&#xA0;<xsl:value-of select="currency"/></td>
            <td>
            <!-- Ссылку на добавление в корзины выводим, если:
                  type = 0 - простой тип товара
                  type = 1 - электронный товар, при этом остаток на складе больше 0 или -1,
                  что означает неограниченное количество -->
                  <xsl:if test="type = 0 or (type = 1 and (eitem_count > 0 or eitem_count = -1))">
                     <div style="display: inline; margin-left: 3px">
                       <!-- <input type="text" size="3" value="1" id="count_{@id}"/>-->
                        <!-- <a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, document.getElementById('count_{@id}').value)">
                           <img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif" style="margin: 0px 0px -4px 10px" />
                        </a>-->
                        <input type="checkbox" id="count_{@id}" onclick="return CheckboxClick('{/shop/path}', {@id})"/>
                     </div>
                  </xsl:if>
             </td>    
         </tr>
      </xsl:if>
   </xsl:template>

   <!-- ============================ -->
   <!-- Цикл для вывода строк ссылок -->
   <!-- ============================ -->
   <xsl:template name="for">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>
      <xsl:param name="current_page"/>
      
      <xsl:if test="$n > $i and $n > 1">
         <!-- Ставим ссылку на страницу-->
         <xsl:if test="$i != $current_page">
            
            
            <!-- Определяем адрес ссылки -->
            <xsl:variable name="number_link"><xsl:choose>
                  <!-- Если не нулевой уровень -->
                  <xsl:when test="$i != 0">page-<xsl:value-of select="$i+1"/>/</xsl:when>
                  <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
                  <xsl:otherwise></xsl:otherwise>
            </xsl:choose></xsl:variable>
            
            <a href="{/shop/path}price/{$number_link}" class="page_link"><xsl:value-of select="$i+1"/></a>
         </xsl:if>
        
         <!-- Не ставим ссылку на страницу-->
         <xsl:if test="$i = $current_page">
            <span class="current"><xsl:value-of select="$i+1"/></span>
         </xsl:if>
        
         <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
         <xsl:call-template name="for">
            <xsl:with-param name="i" select="$i + 1"/>
            <xsl:with-param name="n" select="$n"/>
            <xsl:with-param name="current_page" select="$current_page"/>
         </xsl:call-template>
        
      </xsl:if>
   </xsl:template>
  
</xsl:stylesheet>
#
Re: Как привести к такому виду?
Ivanov,
Огромное спасибо, записать записывает, но удалять не удаляет и появляться постоянно окошко с count_2 при выборе чек бокса
#
Re: Как привести к такому виду?
и какой поправить еще xsl шаблон что бы товар сортировался не по категориям, а просто в отдельном столбике к какой категории относиться товар
#
Re: Как привести к такому виду?
HostCMS,
В чем может быть проблема? Помогите пожалуйста
Модератор
#
Re: Как привести к такому виду?
script88 писал(а):
Огромное спасибо, записать записывает, но удалять не удаляет и появляться постоянно окошко с count_2 при выборе чек бокса

удалите alert(item_id);
#
Re: Как привести к такому виду?
HostCMS,
alert убрал, но все равно удаление не происходит, видимо в этой части кода

         <!-- Скрипт открывает/скрывает форумы текущей группы  -->
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
               <![CDATA[
               function CheckboxClick(shop_path, catalog_item_id)
               {
                  var item_id =  'count_' + catalog_item_id;
                  
                  if (document.getElementById(item_id).checked == true)
                  {
                  
                     AddIntoCart(shop_path, catalog_item_id, 1);
                  }
                  else
                  {
                                      
                  }
               }
               ]]>
            </xsl:text>

Вот какое условие нужно вставить в else понять не могу
Модератор
#
Re: Как привести к такому виду?
script88 писал(а):
Вот какое условие нужно вставить в else понять не могу
Ivanov писал(а):
Продолжение в следующих сериях
#
Re: Как привести к такому виду?
HostCMS,
не очень понятно когда будет эти серии...
Авторизация