Фильтр по производителям

#
Фильтр по производителям
Подскажите пожалуйста, может что не так делаю?

Необходимо чтобы в фильтре появился как на 5-ой select с производителями ну и фильтрация конечно же.

Добавила в типовую магазина


// В корне выводим из всех групп
/*if ($Shop_Controller_Show->group == 0)
{
   $Shop_Controller_Show->group(FALSE);
}*/


$oShop = $Shop_Controller_Show->getEntity();

// XML-сущность, к которй будут добавляться производители
$oProducersXmlEntity = Core::factory('Core_Xml_Entity')->name('producers');
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oProducersXmlEntity);

// Список производителей
$aShop_Producers = $oShop->Shop_Producers->findAll();
foreach ($aShop_Producers as $oShop_Producer)
{
   // Добавляем производителя потомком XML-сущности
   $oProducersXmlEntity->addEntity(
      $oShop_Producer->clearEntities()
   );
}



$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   ->itemsProperties(TRUE)
   ->show();



в xml вижу


   <producers>
      <shop_producer id="30">
         <shop_id>1</shop_id>
         <name>Ardo</name>
         <description></description>
         <image_large></image_large>
         <image_small></image_small>
         <sorting>0</sorting>
         <path>Producer_30</path>
         <user_id>19</user_id>
         <address></address>
         <phone></phone>
         <fax></fax>
         <site></site>
         <email></email>
         <tin></tin>
         <kpp></kpp>
         <psrn></psrn>
         <okpo></okpo>
         <okved></okved>
         <bik></bik>
         <current_account></current_account>
         <correspondent_account></correspondent_account>
         <bank_name></bank_name>
         <bank_address></bank_address>
         <seo_title></seo_title>
         <seo_description></seo_description>
         <seo_keywords></seo_keywords>
         <dir>/upload/shop_1/producers/</dir>
      </shop_producer>
...


добавляю в xsl шаблон сам шаблон


<!-- Шаблон для фильтра производителей -->
<xsl:template match="shop_producerslist/producer">
<option value="{@id}">
<xsl:if test="@id = /producers/shop_producer">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="name"/>
</option>
</xsl:template>


ну и где должен быть


                  <!-- Если есть доступные производители -->
                  <xsl:if test="count(shop_producerslist/producer) > 0">
                     выбрать пляж:&#xA0;
                     <select name="producer_id">
                        <option value="0">&#x2026;</option>
                        <xsl:apply-templates select="shop_producerslist/producer"/>
                     </select>&#xA0;
                  </xsl:if>


Не показывается, что не так? Поправьте пожалуйста
Модератор
#
Re: Фильтр по производителям
Начать с понимания XSL и определиться, откуда взялся тег shop_producerslist.
#
Re: Фильтр по производителям
это было взято из стандартного шаблона "список объявлений", просветите, я не знаю как тут поступить
#
Re: Фильтр по производителям
а вот так правильно?


<!-- Шаблон для фильтра производителей -->
<xsl:template match="producers/shop_producer">
<option value="{@id}">
<xsl:if test="@id = /producers/shop_producer">
<xsl:attribute name="selected">
</xsl:attribute>
</xsl:if>
<xsl:value-of disable-output-escaping="yes" select="name"/>
</option>
</xsl:template>




                  <!-- Если есть доступные производители -->
                  <xsl:if test="count(producers/shop_producer) > 0">
                     выбрать пляж:&#xA0;
                     <select name="producer_id">
                        <option value="0">&#x2026;</option>
                        <xsl:apply-templates select="producers/shop_producer"/>
                     </select>&#xA0;
                  </xsl:if>
#
Re: Фильтр по производителям
В ТДС перед
$Shop_Controller_Show
    ->xsl(
       Core_Entity::factory('Xsl')->getByName($xslName)
    )
    ->itemsProperties(TRUE)
    ->show();

добавьте
$Shop_Controller_Show->addEntity(
      Core::factory('Core_Xml_Entity')
         ->name('producer_id')
         ->value(Core_Array::getGet('producer_id'))
        );


и замените шаблон для фильтра производителей в XSL на

   <!-- Шаблон для фильтра производителей -->
   <xsl:template match="producers/shop_producer">
      <option value="{@id}">
         <xsl:if test="@id = /shop/producer_id">
            <xsl:attribute name="selected">
            </xsl:attribute>
         </xsl:if>
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </option>
   </xsl:template>

Команда разработчиков KAD Systems | Интеграция и нестандартные решения на совесть | Email: info@kad.systems Skype: kad.systems | http://kad.systems/ https://vk.com/kad_sys
#
Re: Фильтр по производителям
выпадающий список производителей появился, но фильтрация не получается даже с предыдущим советом
Модератор
#
Re: Фильтр по производителям
brave,
так у Вас здесь нигде фильтрация и не написана вовсе, как можно наблюдать. Через queryBuilder() ограничиваете список товаров по shop_producer_id, примеры ограничений есть в теме http://www.hostcms.ru/forums/2/7122/
#
Re: Фильтр по производителям
brave,
я просто Вас поправил, код, приведенный мной ранее, нужен для выделения активного элемента в списке производителей.
Чтобы работала фильтрация в ТДС добавьте перед
$Shop_Controller_Show
     ->xsl(
        Core_Entity::factory('Xsl')->getByName($xslName)
     )
     ->itemsProperties(TRUE)
     ->show();

код:

if ( Core_Array::getGet('producer_id') )
   $Shop_Controller_Show
      ->shopItems()
      ->queryBuilder()
      ->where('shop_producer_id', '=', Core_Array::getGet('producer_id'));
Команда разработчиков KAD Systems | Интеграция и нестандартные решения на совесть | Email: info@kad.systems Skype: kad.systems | http://kad.systems/ https://vk.com/kad_sys
#
Re: Re: Фильтр по производителям
большое спасибо Артем! все работает, мир не без добрых людей
#
Re: Фильтр по производителям
Пожалуйста
Команда разработчиков KAD Systems | Интеграция и нестандартные решения на совесть | Email: info@kad.systems Skype: kad.systems | http://kad.systems/ https://vk.com/kad_sys
Авторизация