hexes Posted December 25, 2010 Report Share Posted December 25, 2010 Каким образом ограничить количество выводимых на главной "хитов" и сделать их рандомными?Т.е. всего в базе 15 хитов, выводится случайным образом один. Quote Link to post Share on other sites
JustAlexNsk Posted December 25, 2010 Report Share Posted December 25, 2010 Гї Г§ГГ Гѕ ГЄГ ГЄ 8) Quote Link to post Share on other sites
Danya Posted December 26, 2010 Report Share Posted December 26, 2010 как? Quote Link to post Share on other sites
hexes Posted December 27, 2010 Author Report Share Posted December 27, 2010 Да, и как же? Quote Link to post Share on other sites
Noxter Posted December 28, 2010 Report Share Posted December 28, 2010 Storefront.class.php строка 84 поменяйте содержимое на// Популярные товары$query = "SELECT SQL_CALC_FOUND_ROWS *,products.*, brands.name as brand, brands.url as brand_url,categories.single_name as category, categories.url as category_url, categories.image as category_image,products.price*(100-$discount)/100 as discount_priceFROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN brands ON products.brand_id = brands.brand_idWHERE products.enabled=1AND categories.enabled=1AND products.hit=1ORDER BY RAND()";$this->db->query($query);$products = $this->db->results();Это для того чтобы товары отображались рандомно, а вот как ограничить количество выводимых хитов я пока не знаю, как разберусь сразу отпишусь.P.S. Это для версии 1.1 для версии 1.4.3 код будет позже. Quote Link to post Share on other sites
Noxter Posted December 28, 2010 Report Share Posted December 28, 2010 Для вывода определенного количества хитов выполните следующиеПодайте SQL запрос (в phpMyAdmin)INSERT INTO `settings` VALUES (39, 'hits_num', '2');В Storefront.class.php послеclass Storefront extends Widget{Добавьтеvar $hits_num = 20; // Количество хитов на главнойДалее послеfunction fetch_catalog(){Вставьте// берем количество хитов из настроекif(!empty($this->settings->hits_num))$this->hits_num = $this->settings->hits_num;Строка 89 поменяйте содержимое на// Популярные товары$query = "SELECT SQL_CALC_FOUND_ROWS *,products.*, brands.name as brand, brands.url as brand_url,categories.single_name as category, categories.url as category_url, categories.image as category_image,products.price*(100-$discount)/100 as discount_priceFROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN brands ON products.brand_id = brands.brand_idWHERE products.enabled=1AND categories.enabled=1AND products.hit=1ORDER BY RAND()LIMIT $this->hits_num";$this->db->query($query);$products = $this->db->results();В шаблон setup.tpl вставьте следующий код<tr><td class="td_padding">Хитов на главной</td><td class="td_padding"><p><input type="text" class="input4" name=hits_num value='{$Settings->hits_num|escape}' /> (1-30)</p></td></tr>С Вас пивасик =) Quote Link to post Share on other sites
JustAlexNsk Posted December 29, 2010 Report Share Posted December 29, 2010 запросы к базе .. создание новых таблиц .. зачем? вот пример для случайного показа 6 хитов из выбранных в любом колве. в Storefront.class примерно 470 строка ... у меня так: $query = "SELECT products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body, products.hit, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created, '%Y-%m-%d') as created, DATE_FORMAT(products.modified, '%Y-%m-%d') as modified, products.enabled, brands.name as brand, brands.url as brand_url, categories.single_name as category, categories.url as category_url, categories.image as category_image FROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN brands ON products.brand_id = brands.brand_id LEFT JOIN products_categories ON products.product_id = products_categories.product_id WHERE categories.enabled=1 and products.enabled=1 $id_filter $category_filter $brand_filter $properties_filter $hit_filter GROUP BY products.product_id ORDER BY ".(is_null($hit) ? "" : "rand(), ")."products.order_num desc $limit"; $this->db->query($query); $temp_products = $this->db->results(); $cnt = 0; foreach($temp_products as $product) { $products[$product->product_id] = $product; $cnt++; if (!is_null($hit) && $cnt == 6) break; }собственно все ... лимит стоит 6 и все работает. без лишних движений Quote Link to post Share on other sites
Noxter Posted December 29, 2010 Report Share Posted December 29, 2010 # JustAlexNskНу а если менеджер по контенту захочет поменять количество рандомных хитов, то ему что в код php нужно лезть чтобы поменять, при этом незная что такое php вообще?Имхо через админку проще менять нежели постоянно php код редактировать под количество хитов. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.