Jump to content

Вывод товаров в product-list


Recommended Posts

Здравствуйте! Может, кто-нибудь поможет решить проблему? Очень надо чтобы в списке товаров выводились только те, количество которых > 0. Покопавшись понял, что, видимо, надо подправить MySQL запрос в файле classes/Product.php, а именно в этой части кода (строки 576-605) . Только, сколько не бился, сам не могу грамотно написать. Понимаю, что надо вставить дополнительное условие where p.`quantity` > 0 , но что-то делаю неправильно.

 

Кусок кода с которым, по моим предположениям, надо работать:

 

static public function getProducts($id_lang, $start, $limit, $orderBy, $orderWay, $id_category = false, $only_active = false)

{

if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay))

die (Tools::displayError());

if ($orderBy == \'id_product\' OR $orderBy == \'price\' OR $orderBy == \'date_add\')

$orderByPrefix = \'p\';

elseif ($orderBy == \'name\')

$orderByPrefix = \'pl\';

elseif ($orderBy == \'position\')

$orderByPrefix = \'c\';

 

$rq = Db::getInstance()->ExecuteS(\'

SELECT p.*, pl.* , t.`rate` AS tax_rate, m.`name` AS manufacturer_name, s.`name` AS supplier_name

FROM `\'._DB_PREFIX_.\'product` p

LEFT JOIN `\'._DB_PREFIX_.\'product_lang` pl ON (p.`id_product` = pl.`id_product`)

LEFT JOIN `\'._DB_PREFIX_.\'tax` t ON (t.`id_tax` = p.`id_tax`)

LEFT JOIN `\'._DB_PREFIX_.\'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)

LEFT JOIN `\'._DB_PREFIX_.\'supplier` s ON (s.`id_supplier` = p.`id_supplier`)\'.

($id_category ? \'LEFT JOIN `\'._DB_PREFIX_.\'category_product` c ON (c.`id_product` = p.`id_product`)\' : \'\').\'

WHERE pl.`id_lang` = \'.intval($id_lang).

($id_category ? \' AND c.`id_category` = \'.intval($id_category) : \'\').

($only_active ? \' AND p.`active` = 1\' : \'\').\'

ORDER BY \'.(isset($orderByPrefix) ? pSQL($orderByPrefix).\'.\' : \'\').\'`\'.pSQL($orderBy).\'`\'.pSQL($orderWay).

($limit > 0 ? \' LIMIT \'.intval($start).\',\'.intval($limit) : \'\')

);

if($orderBy == \'price\')

Tools::orderbyPrice($rq,$orderWay);

 

return ($rq);

}

 

Помогите, пожалуйста! Спасибо!

Link to comment
Share on other sites

Спасибо за внимание к моей проблеме! Попробовал так и задавая другие значения - данная конструкция почему-то не работает.. хотя, я не вижу где ошибка в данном запросе к базе.. буду копать дальше.. попробую не исключать из выдачи отсутствующие товары, а отображать их в конце - на последних страницах.. буду думать как.. если кто уже сталкивался, подскажите, пожалуйста. Спасибо!

Link to comment
Share on other sites

SergeyH, какая ошибка я сам не пойму, т.к. немного имел раньше дело с mysql и запрос мне кажется тоже верным, но не работает. Сейчас попробую как порекомендовал fraktall сделать - через phpmyadmin.

Link to comment
Share on other sites

SergeyH, какая ошибка я сам не пойму, т.к. немного имел раньше дело с mysql и запрос мне кажется тоже верным, но не работает. Сейчас попробую как порекомендовал fraktall сделать - через phpmyadmin.

 

Что значит - не пойму? Включи в конфиге отображение ошибок и сюда приведи потом выдачу

Link to comment
Share on other sites

Где включить? сам запрос работает и товары отображаются, но добавленное условие p.`quantity` > 0 не имеет никакого влияния на результат. Впрочем, это уже не так важно.. Пришло понимание, что для поисковиков лучше чтобы все товары отображались и страницы не выпадали из индекса.. следовательно, теперь мучаюсь над тем, чтобы товары с нулевыми остатками шли в самом конце на последних страницах.

Link to comment
Share on other sites

Link to comment
Share on other sites

×
×
  • Create New...