Вывод нескольких товаров из каждой подгруппы

Данное решение поможет организовать вывод нескольких товаров под каждой группой товаров. Например, в каталоге требуется вывести по 6 товаров под каждым разделом.

В код ТДС информационной системы необходимо добавить скрипт, который поместит элементы в XML. Перед вызовом метода show() добавляем код 

	if (!$Shop_Controller_Show->item)
	{
		$oXML = Core::factory('Core_Xml_Entity')->name("groupitems");
	
		$aoGroups = Core_Entity::factory('shop_group')->getAllByParent_id($Shop_Controller_Show->group);

		foreach ($aoGroups as $oGroup)
		{
			if ($Shop_Controller_Show->group != $oGroup->id)
			{
				$oSomeItems = Core_Entity::factory('shop_item');
				$oSomeItems->queryBuilder()
					->where('shop_group_id', '=', $oGroup->id)
					->limit(6);
				$aoSomeItems = $oSomeItems->findAll();
				$oXML->addEntities($aoSomeItems);
			}
		}
		$Shop_Controller_Show->addEntity($oXML);
	}

В этом коде, в методе limit() устанавливается количество товаров, которые будут добавлены для каждой группы. После того, как мы добавили этот код, в XML появилась информация о товарах раздела внутри тега groupitems. Теперь в XSL шаблоне каталога в подшаблон вывода подгрупп xsl:template match="shop_group" нужно добавить код вывода товаров:

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

Если вы используете стандартный шаблон, то код этот нужно добавить внутри цикла xsl:for-each в подшаблоне xsl:template match="shop_group".

comments powered by Disqus


  • Добрый день, а подскажите как добавить в вывод этих товаров - дополнительные свойства, точнее вот это: ->itemsProperties(TRUE)
    ?

    • Добрый. Вместо $oXML->addEntities($aoSomeItems); нужно написать

      foreach ($aoSomeItems as $oSomeItem)
      {
      $oXML->addEntity($oSomeItem->showXmlProperties());
      }

      Писал на глаз, может потребоваться корректировка, но суть именно такая.

      • Спасибо Артем, все сработало!

        • Пожалуйста, рад помочь.

  • Решение отличное! Но ярлыки из подгрупп не выводятся, хотя в xml они видны( Может подскажите как доработать код?

    • Для вывода ярлыков попробуйте такой код. Вместо $oXML->addEntities($aoSomeItems); нужно написать:

      foreach ($aoSomeItems as $oSomeItem)
      {
      if ($oSomeItem->shortcut_id)
      {
      $oXML->addEntity($oSomeItem->shop_item);
      } else
      {
      $oXML->addEntity($oSomeItem);
      }
      }

      Писал на глаз, может потребоваться корректировка, но суть именно такая.

  • Спасибо за решение!
    На сайте разраба часа 3 лазал, так и не смог найти ничего путного.
    А тут все получилось с 1 раза и именно как было нужно.

    • Рад, что смог Вам помочь!

Следующий "Новое обновление HostCMS - 6.1.5" К списку Предыдущий "Пагинация страницы списка производителей"