kornand Posted August 27, 2011 Share Posted August 27, 2011 Здравствуйте! Может, кто-нибудь поможет решить проблему? Очень надо чтобы в списке товаров выводились только те, количество которых > 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 More sharing options...
fraktall Posted August 30, 2011 Share Posted August 30, 2011 попробуй вот так Link to comment Share on other sites More sharing options...
fraktall Posted August 30, 2011 Share Posted August 30, 2011 извиняюсь, не приаттачил скрин Link to comment Share on other sites More sharing options...
kornand Posted August 30, 2011 Author Share Posted August 30, 2011 Спасибо за внимание к моей проблеме! Попробовал так и задавая другие значения - данная конструкция почему-то не работает.. хотя, я не вижу где ошибка в данном запросе к базе.. буду копать дальше.. попробую не исключать из выдачи отсутствующие товары, а отображать их в конце - на последних страницах.. буду думать как.. если кто уже сталкивался, подскажите, пожалуйста. Спасибо! Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted August 30, 2011 Share Posted August 30, 2011 kornand, какая именно ошибка? На вид тебе привели правильный код только условие не ">1" а ">0" Link to comment Share on other sites More sharing options...
fraktall Posted August 31, 2011 Share Posted August 31, 2011 Kornand, скопируй код, в phpmyadmin создай SQL запрос. Замени всякие DB_PREFIX и т.д. - посмотри работает или нет Link to comment Share on other sites More sharing options...
kornand Posted August 31, 2011 Author Share Posted August 31, 2011 SergeyH, какая ошибка я сам не пойму, т.к. немного имел раньше дело с mysql и запрос мне кажется тоже верным, но не работает. Сейчас попробую как порекомендовал fraktall сделать - через phpmyadmin. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted August 31, 2011 Share Posted August 31, 2011 SergeyH, какая ошибка я сам не пойму, т.к. немного имел раньше дело с mysql и запрос мне кажется тоже верным, но не работает. Сейчас попробую как порекомендовал fraktall сделать - через phpmyadmin. Что значит - не пойму? Включи в конфиге отображение ошибок и сюда приведи потом выдачу Link to comment Share on other sites More sharing options...
kornand Posted August 31, 2011 Author Share Posted August 31, 2011 Где включить? сам запрос работает и товары отображаются, но добавленное условие p.`quantity` > 0 не имеет никакого влияния на результат. Впрочем, это уже не так важно.. Пришло понимание, что для поисковиков лучше чтобы все товары отображались и страницы не выпадали из индекса.. следовательно, теперь мучаюсь над тем, чтобы товары с нулевыми остатками шли в самом конце на последних страницах. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted August 31, 2011 Share Posted August 31, 2011 в общем чтоб долго не размусоливать, посмотри http://www.prestashop.com/forums/topic/121890-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%BE-%D1%87%D1%82%D0%BE-%D0%B2%D1%8B-%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82%D0%B5-%D1%81-%D1%83%D1%81%D1%82%D0%B0%D1%80%D0%B5%D0%B2%D1%88%D0%B8%D0%BC%D0%B8-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0%D0%BC%D0%B8-%D0%B2-%D0%BC/ я озадачивался примерно тем же вопросом Link to comment Share on other sites More sharing options...
kornand Posted August 31, 2011 Author Share Posted August 31, 2011 Спасибо! Сейчас ознакомлюсь! Link to comment Share on other sites More sharing options...
Recommended Posts