Prote1n Опубликовано 12 мая, 2012 Жалоба Поделиться Опубликовано 12 мая, 2012 Можно ли сделать так, что бы возле брэнда указывалось количество товаров данного брэнда. Цитата Ссылка на сообщение Поделиться на другие сайты
basil13 Опубликовано 12 мая, 2012 Жалоба Поделиться Опубликовано 12 мая, 2012 интересная идея, постараюсь реализовать.... Цитата Ссылка на сообщение Поделиться на другие сайты
Prote1n Опубликовано 12 мая, 2012 Автор Жалоба Поделиться Опубликовано 12 мая, 2012 Спасибо, жду с нетерпением. Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 12 мая, 2012 Жалоба Поделиться Опубликовано 12 мая, 2012 Поддерживаю вопрос. Ждем Цитата Ссылка на сообщение Поделиться на другие сайты
chocolate_moles Опубликовано 12 мая, 2012 Жалоба Поделиться Опубликовано 12 мая, 2012 колхоз конечно, но работает {get_new_products var=count_products}{counter start=-1 skip=1 print=false}{foreach $count_products as $c} {if $c->brand_id == $b->id} {counter print=false} {/if}{/foreach} ({counter})закинуть в цикл вывода брендов Цитата Ссылка на сообщение Поделиться на другие сайты
Prote1n Опубликовано 12 мая, 2012 Автор Жалоба Поделиться Опубликовано 12 мая, 2012 Нормалек! Цитата Ссылка на сообщение Поделиться на другие сайты
Prote1n Опубликовано 12 мая, 2012 Автор Жалоба Поделиться Опубликовано 12 мая, 2012 Работает, только у меня переносит цифры в следующую строку если не помещается, короче как зафиксировать, что бы цифра всегда находилась рядом с брэндом? Цитата Ссылка на сообщение Поделиться на другие сайты
Prote1n Опубликовано 12 мая, 2012 Автор Жалоба Поделиться Опубликовано 12 мая, 2012 Разобрался, добавил в css параметр float: left; Цитата Ссылка на сообщение Поделиться на другие сайты
Prote1n Опубликовано 12 мая, 2012 Автор Жалоба Поделиться Опубликовано 12 мая, 2012 Спасибо, насчет "колхоз", не пойму почему, есть еще варианты доработки? С помощью css нормально оформить и все . Цитата Ссылка на сообщение Поделиться на другие сайты
Prote1n Опубликовано 12 мая, 2012 Автор Жалоба Поделиться Опубликовано 12 мая, 2012 Еще вопрос, в фильтре по брендам в списке товаров, возле "все бренды" количество не отображается, как сделать что бы выводилось общее количество? Цитата Ссылка на сообщение Поделиться на другие сайты
Simon1985 Опубликовано 28 сентября, 2012 Жалоба Поделиться Опубликовано 28 сентября, 2012 тут одна проблемка всплывает, если количества товара больше 98 он стопорится и не показывает в брендах правильное кол-во а еще больше так вообще 0 товаров показывает и во всех категориях, в чем может быть причина? Цитата Ссылка на сообщение Поделиться на другие сайты
Prote1n Опубликовано 18 января, 2013 Автор Жалоба Поделиться Опубликовано 18 января, 2013 Напомните куда это вписывать нужно? Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 Корс, есть вариант лучше - показыбваем.... Нет - молчим в тряпочку)))) Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 Меня просто бесят многомудрые умники, которые ВЕЩАЮТ всем извсестные вещи, а по теме - полный ноль... Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 И не для вашего троллизма :-) Цитата Ссылка на сообщение Поделиться на другие сайты
Ruslan Kopyl Опубликовано 19 января, 2013 Жалоба Поделиться Опубликовано 19 января, 2013 И не для вашего троллизма :-) Это у него образ жизни такой человек-троль...Он действительно что то слышал что нужно делать не так , но вот как это делать, он сказать не может. (Слышыл звон да не знаю где он)А на самом деле вся simpla написана на вот таких быдлокодах, где вместо того что бы сделать правильную выборку из базы, используются непонятные конструкции (вложенные циклы, рекурсии и т.д), или вместо одного запроса делается 4.Теперь по теме, для того что бы отображались количества товаров для определенных брендов, нужно просто правильно составить sql запрос, что бы количества продуктов в брендах считалось MySQL, тем более что он и так их выбирает. Вот измененыйя метод класса Brands, находится он в файле api/brands.php/* * * Функция возвращает массив брендов, удовлетворяющих фильтру * @param $filter * */ public function get_brands($filter = array()) { $brands = array(); $category_id_filter = ''; if(!empty($filter['category_id'])) $category_id_filter = $this->db->placehold('LEFT JOIN __products_categories pc ON p.id = pc.product_id WHERE pc.category_id in(?@)', (array)$filter['category_id']); // Выбираем все бренды $query = "SELECT COUNT(p.id) AS count, b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.image FROM __brands AS b LEFT JOIN __products AS p ON p.brand_id = b.id $category_id_filter GROUP BY b.id, p.brand_id ORDER BY b.name"; $this->db->query($query); return $this->db->results(); }Т.е нужно заменить код родного метода на тот что написал я, и после в том месте, где вам нужно отобразить количество товаров для бренда, необходимо обратититься к свойству count.Для примера приведу вывод в файле design/default/html/products.tpl{* Фильтр по брендам *}{if $category->brands}<div id="brands"> <a href="catalog/{$category->url}" {if !$brand->id}class="selected"{/if}>Все бренды</a> {foreach name=brands item=b from=$category->brands} {if $b->image} <a data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}"><img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}"></a> {else} <a data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}" {if $b->id == $brand->id}class="selected"{/if}>{$b->name|escape}</a> {/if} ({$b->count}) {/foreach}</div>{/if}Т.е {$b->count} выводит выводит количество товаров которые относятся к данному бренду.При этом нет никаких рекурсий, вложенных циклов, а к базе как посылался один запрос, так и сейчас все выбирается одним запросом.Если у кого то будут возникать проблемы с установкой данной функции, обращайтесь, сделаю за чисто символическую сумму. Также занимаюсь разработкой модулей, оптимизацией запросов, и разнообразных функций к simpla.skype: alpex-s1icq: 687928520 email: alpex-s@rambler.ru Цитата Ссылка на сообщение Поделиться на другие сайты
Rash Опубликовано 19 января, 2013 Жалоба Поделиться Опубликовано 19 января, 2013 Благодарю AlpeX, все работает как часы! =) Подскажите а как задать стиль для вывода кол. товара? А то слишком большой отступ получается от бренда и хотелось бы изменить цвет. Цитата Ссылка на сообщение Поделиться на другие сайты
Ruslan Kopyl Опубликовано 19 января, 2013 Жалоба Поделиться Опубликовано 19 января, 2013 поместите вывод в тег span и задавайте ему стили какие нужно<span class="...">({$b->count})</span> Цитата Ссылка на сообщение Поделиться на другие сайты
Rash Опубликовано 19 января, 2013 Жалоба Поделиться Опубликовано 19 января, 2013 AlpeX, мерси!!! Цитата Ссылка на сообщение Поделиться на другие сайты
delprofile Опубликовано 19 января, 2013 Жалоба Поделиться Опубликовано 19 января, 2013 может вообще кол-во ajax считать, так тормозов не будет. Т.е. просто выдавать статику вместо того чтобы каждый раз при обновлении страницы не получать тормоза Цитата Ссылка на сообщение Поделиться на другие сайты
Rash Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 kors, согласен что лучше! только вот вопрос как это сделать?!)) Цитата Ссылка на сообщение Поделиться на другие сайты
Ruslan Kopyl Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 kors вы несете откровенный бред...Посмотрите на родной метод и на этот, они отличаются только заменой оператора distinct на group при выборе записей из mysql, торомзов из-за этого быть не может, а даже наоборот данный метод будет работать быстрее, чем родной т.к в нем используется на одно обращение к методу placeholder меньше.Вообщем читайте книги по базам данных... Цитата Ссылка на сообщение Поделиться на другие сайты
Ruslan Kopyl Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 вот код родного метода public function get_brands($filter = array()) { $brands = array(); $category_id_filter = ''; if(!empty($filter['category_id'])) $category_id_filter = $this->db->placehold('LEFT JOIN __products p ON p.brand_id=b.id LEFT JOIN __products_categories pc ON p.id = pc.product_id WHERE pc.category_id in(?@)' ,(array)$filter['category_id']); // Выбираем все бренды $query = $this->db->placehold("SELECT DISTINCT b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.image FROM __brands b $category_id_filter ORDER BY b.name"); $this->db->query($query); return $this->db->results(); }и код моего методаpublic function get_brands($filter = array()) { $brands = array(); $category_id_filter = ''; if(!empty($filter['category_id'])) $category_id_filter = $this->db->placehold('LEFT JOIN __products_categories AS pc ON p.id = pc.product_id WHERE pc.category_id in(?@)', (array)$filter['category_id']); // Выбираем все бренды $query = "SELECT COUNT(p.id) AS count, b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.image FROM __brands AS b LEFT JOIN __products AS p ON p.brand_id = b.id $category_id_filter GROUP BY b.id, p.brand_id ORDER BY b.name"; $this->db->query($query); return $this->db->results(); }а теперь расскажите со ссылкой на достоверные источники, изза чего здесь могут возникнуть тормоза? Цитата Ссылка на сообщение Поделиться на другие сайты
delprofile Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 потому что ты при каждом открытие страницы делаешь этот запрос на подсчёт, чем больше товаров тем дольше идёт подсчёт, прогрессия. Не не слышал? Цитата Ссылка на сообщение Поделиться на другие сайты
Ruslan Kopyl Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 delprofile идите читайте книги вместе с korsПеред этим был оператор distinct, который каждую выбранную строку сравнивал между собой, а сейчас стоит group, который считает их. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.