Добавление фильтрации по производителю в магазине

Модератор
#
Re: Добавление фильтрации по производителю в магазине
ferdinant, слово Producer на Seller поменять
#
Re: Добавление фильтрации по производителю в магазине
Пробовал не чего хорошего не получилось
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Добавление фильтрации по производителю в магазине

Exception: Query error 1054: Unknown column 'shop_seller.id' in 'on clause'. Query: SELECT DISTINCT `shop_sellers`.* FROM `shop_sellers` INNER JOIN `shop_items` ON `shop_items`.`shop_seller_id` = `shop_seller`.`id` WHERE `shop_sellers`.`shop_id` = '1' AND `shop_items`.`shop_group_id` = '594' AND `shop_items`.`deleted` = 0 AND `shop_sellers`.`deleted` = 0 ORDER BY `shop_sellers`.`sorting` ASC, `shop_sellers`.`name` ASC
35 modules/core/exception.php
635 modules/core/database/mysql.php
60 modules/core/querybuilder/statement.php
471 modules/core/orm.php
375 modules/core/entity.php
422 hostcmsfiles/lib/lib_6/lib_6.php
269 modules/lib/model.php
100 modules/core/page.php
56 templates/template11/template.htm
84 modules/template/model.php
100 modules/core/page.php
158 templates/template1/template.htm
84 modules/template/model.php
100 modules/core/page.php
364 modules/core/command/controller/default.php
190 modules/core/router/route.php
205 index.php
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
Модератор
#
Re: Добавление фильтрации по производителю в магазине
Таблицы shop_seller в базе нет. Есть shop_sellers. Т.е. пишите:

->join('shop_items', 'shop_items.shop_seller_id', '=', 'shop_sellers.id')
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Добавление фильтрации по производителю в магазине
Спасибо!!!


/*ПРОДАВЦЫ*/
$oShop = $Shop_Controller_Show->getEntity();
//print_r($oShop);
// XML-сущность, к которй будут добавляться производители
$oSellersXmlEntity = Core::factory('Core_Xml_Entity')->name('sellers');
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oSellersXmlEntity);


// Список производителей
$oShop_Sellers = $oShop->Shop_Sellers;
$oShop_Sellers->queryBuilder()
->select('shop_sellers.*')
->distinct()
->join('shop_items', 'shop_items.shop_seller_id', '=', 'shop_sellers.id')
->where('shop_items.shop_group_id', '=', $Shop_Controller_Show->group)
->where('shop_items.deleted', '=', 0);

$aShop_Sellers = $oShop_Sellers->findAll();
foreach ($aShop_Sellers as $oShop_Seller)
{
// Добавляем производителя потомком XML-сущности
$oSellersXmlEntity->addEntity(
$oShop_Seller->clearEntities()
);
}



if (Core_Array::getGet('seller_id'))
{
$iSellerId = intval(Core_Array::getGet('seller_id'));
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('seller_id')->value($iSellerId)
);

$Shop_Controller_Show->shopItems()
->queryBuilder()
->select('shop_items.*')
->where('shop_items.shop_seller_id', '=', $iSellerId);
}



   <xsl:template match="sellers/shop_seller">
      <xsl:param name="id_prod" select="@id"/>
      <option value="{@id}">
         <xsl:if test="@id = /shop/seller_id">
            <xsl:attribute name="selected"> </xsl:attribute>
         </xsl:if>
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </option>
   </xsl:template>

               <xsl:if test="count(sellers/shop_seller) > 0">
                  <div class="node">
                     <select name="seller_id" class="candara" onchange="this.form.submit()">
                        <option value="0">&#x2026;</option>
                        <xsl:apply-templates select="sellers/shop_seller"/>
                     </select>&#xA0;Стиль:
                  </div>
               </xsl:if>
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Добавление фильтрации по производителю в магазине
Помогите не идет фильтрация по продавцам Код выше... И при переходе на вторую страницу теряется фильтр
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Добавление фильтрации по производителю в магазине
Фильтр производителей сделал вместо select чекбоксами, для множественного выбора
заменил в ТДС "Интернет-магазин" в коде страницы, этот код
if (Core_Array::getGet('producer_id'))
{
$iProducerId = intval(Core_Array::getGet('producer_id'));
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('producer_id')->value($iProducerId)
);

$Shop_Controller_Show->shopItems()
->queryBuilder()
->select('shop_items.*')
->where('shop_items.shop_producer_id', '=', $iProducerId);
}


на этот
if (Core_Array::getGet('producer_id'))
{
$iProducersValue = Core_Array::getGet('producer_id');
//var_dump($iProducersValue);
$cnt=0;

            
             foreach ($iProducersValue as $ProducerValue)
             {
                $Shop_Controller_Show->addEntity(
                Core::factory('Core_Xml_Entity')
                ->name('producer_id')->value(intval($ProducerValue))
                                        );
                
                if ($cnt>0)$Shop_Controller_Show->shopItems()->queryBuilder()
                   ->setOr();
                
                $Shop_Controller_Show->shopItems()
                ->queryBuilder()
                ->select('shop_items.*')
                ->where('shop_items.shop_producer_id', '=', intval($ProducerValue));
                              
                $cnt++;
                }
            

}

но он выдает ошибку Предупреждение: Invalid argument supplied for foreach() в файле /home/virtwww/w_atm-st63f_48599230/http/hostcmsfiles/lib/lib_6/lib_6.php (строка 54)

пробовал
->where('shop_items.shop_producer_id', '=', intval($ProducerValue));
заменить на
->where('shop_items.shop_producer_id', 'IN', $array);
но выдает ту же самую ошибку, какой правильный все такие код для множественного фильтра по производителю?
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Добавление фильтрации по производителю в магазине
ferdinant,
про фильтрацию не подскажу, а вот то что при переходе теряется фильтр это нужно в Шаблоне "МагазинКаталогТоваров" передать фильтр в цикл ссылок, на примере производителей
<!-- Передаем фильтр -->
      <xsl:variable name="filter">
      <xsl:if test="/shop/filter/node()">?filter=1&amp;sorting=<xsl:value-of select="/shop/sorting"/><xsl:for-each select="/shop/*"><xsl:if test="starts-with(name(), 'producer_id')">&amp;<xsl:value-of select="name()"/>=<xsl:value-of select="."/></xsl:if></xsl:for-each>&amp;price_from=<xsl:value-of select="/shop/price_from"/>&amp;price_to=<xsl:value-of select="/shop/price_to"/>
         <xsl:for-each select="/shop/*"><xsl:if test="starts-with(name(), 'property_')">&amp;<xsl:value-of select="name()"/>=<xsl:value-of select="."/></xsl:if></xsl:for-each>
         </xsl:if>
      </xsl:variable>
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Добавление фильтрации по производителю в магазине
Все еще интересует вопрос с множественным фильтром по производителю
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Добавление фильтрации по производителю в магазине
в этом способе не учитываются ярлыки, производители товаров-ярлыков не попадают в фильтр
возможно ли их учесть?
Авторизация