Как вывести товары под каждой категорией на странице интернет-магазина?

#
Как вывести товары под каждой категорией на странице интернет-магазина?
Здравствуйте! Сразу прикрепляю ссылки на скриншоты.
Данная ссылка http://s018.radikal.ru/i522/1607/5b/1525122b0ab1.png показывает стандартную страницу ИМ. Категории расположены наверху, а под ними различные товары.
А эта ссылка http://s014.radikal.ru/i327/1607/e0/56426ac1fc31.png показывает желаемый вид главной страницы ИМ. Тут под каждой категорией выводятся товары определенной категории. Т.е. категория жестко не задана.

Вопрос! Возможно ли так реализовать? Или если да,то что нужно менять? Контроллер ИМ,XSL?
Модератор
#
Re: Как вывести товары под каждой категорией на странице интернет-магазина?
pd-art писал(а):
Возможно ли так реализовать?

Можно.

pd-art писал(а):
Или если да,то что нужно менять? Контроллер ИМ,XSL?

В контроллере ставите


->group(FALSE)
->limit(9999)


Ну а в XSL в темплейте групп (!) делаете вызов темплейта товаров с ограничением по группе. Т.е.


<xsl:variable name="group_id" select="@id" />
<xsl:apply-templates select="//shop_item[shop_group_id = $group_id]"/>


Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Как вывести товары под каждой категорией на странице интернет-магазина?
alexander.egorov, т.е. имеем чистую CMS,не менял ничего. Открываем ТДС "Интернет-магазин" и во вкладке "Код страницы" добавляем код выше так

$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   // Выводить свойства товаров
   ->itemsProperties(TRUE)
   // Выводить специальные цены
   ->specialprices(TRUE)
   // Выводить модификации на уровне с товаром
   //->modificationsList(TRUE)
   // Режим вывода групп
   //->groupsMode('none')
   // Выводить доп. св-ва групп
   //->groupsProperties(TRUE)
        ->group(FALSE)
        ->limit(9999)
   ->show();


И затем в XSL "МагазинКаталогТоваровСайт2" добавляем код выше так

   <!-- Шаблон для групп товара -->
   <xsl:template match="shop_group">
      <div class="row">
         <xsl:for-each select=". | following-sibling::shop_group[position() &lt; $n]">
            <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 text-align-center">
               <xsl:if test="image_small != ''">
                  <a href="{url}">
                     <div>
                        <img src="{dir}{image_small}" class="item-image"/>
                     </div>
                  </a>
               </xsl:if>
         <a href="{url}" hostcms:id="{@id}" hostcms:field="name" hostcms:entity="shop_group"><xsl:value-of disable-output-escaping="yes" select="name"/></a><xsl:text> </xsl:text><span class="shop_count"><xsl:value-of select="items_total_count"/></span>
            </div>
         </xsl:for-each>
      </div>
      <xsl:variable name="group_id" select="@id" />
      <xsl:apply-templates select="//shop_item[shop_group_id = $group_id]"/>
   </xsl:template>


Все правильно?
Модератор
#
Re: Как вывести товары под каждой категорией на странице интернет-магазина?
Вот так попробуйте:

1.

// Если мы в корне
if ($Shop_Controller_Show->group == 0)
{
$Shop_Controller_Show        
        ->group(FALSE)
        ->limit(9999)
}


$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   // Выводить свойства товаров
   ->itemsProperties(TRUE)
   // Выводить специальные цены
   ->specialprices(TRUE)
   // Выводить модификации на уровне с товаром
   //->modificationsList(TRUE)
   // Режим вывода групп
   //->groupsMode('none')
   // Выводить доп. св-ва групп
   //->groupsProperties(TRUE)
   ->show();


2.
   <!-- Шаблон для групп товара -->
   <xsl:template match="shop_group">
     <xsl:variable name="group_id" select="@id" />
      <div class="row">
         <xsl:for-each select=". | following-sibling::shop_group[position() &lt; $n]">
            <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 text-align-center">
               <xsl:if test="image_small != ''">
                  <a href="{url}">
                     <div>
                        <img src="{dir}{image_small}" class="item-image"/>
                     </div>
                  </a>
               </xsl:if>
         <a href="{url}" hostcms:id="{@id}" hostcms:field="name" hostcms:entity="shop_group"><xsl:value-of disable-output-escaping="yes" select="name"/></a><xsl:text> </xsl:text><span class="shop_count"><xsl:value-of select="items_total_count"/></span>
            </div>
           <xsl:apply-templates select="//shop_item[shop_group_id = $group_id]"/>
         </xsl:for-each>
      </div>
   </xsl:template>
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Как вывести товары под каждой категорией на странице интернет-магазина?
alexander.egorov, Спасибо,все работает. Только в категории не заходит,только если напрямую в товар
#
Re: Как вывести товары под каждой категорией на странице интернет-магазина?
alexander.egorov, а вы не знаете,как определить что мы находимся в последней категории (по иерархии имеется ввиду). Типа дальше категорий нет,только товары.

Т.е. есть место где выводятся товары...незнаю как условие записать.


<xsl:apply-templates select=".//shop_group[parent_id=$group]"/>
<xsl:if test="Типа если это конечная категория.то выводить товары">               
<xsl:apply-templates select="shop_item" />
</xsl:if>


Просто у меня сейчас выводятся везде,а нужно только в последней.

#
Re: Как вывести товары под каждой категорией на странице интернет-магазина?
<xsl:if test=".//shop_group[@id=$group]/subgroups_count = 0"></xsl:if>
skype: mcross82
#
Re: Как вывести товары под каждой категорией на странице интернет-магазина?
Mcross, большое спасибо, работает!
Авторизация